恩至 发表于 2012-5-22 13:01:26

关于地址的计算

在0624H单元内有一条二字节JMPSHORT OBJ指令,如其中位移量为0C6H,试问转向地址OBJ的值是多少?答 OBJ=0624H+02H+0C6H=05ECH         ;C6H对应的负数为-3AH(向上转移,负位移量)是如何计算的。

xiaolongxia 发表于 2012-5-22 17:40:22

本帖最后由 xiaolongxia 于 2012-5-22 17:59 编辑

第一个,和第三个就不说了!第二个是当前指令jmp Short obj所占的字节数(2个字节)!
你好好理解下位移量,把9.3好好理解下!

现在回顾下指令的操作:
cs:ip 步骤:1、cpu将cs:ip指向的地址中的指令取出放入指令缓存器中,
                     2、Ip =IP+指令长度,(指令长度为刚刚取出的指令的长度)
                     3、执行指令,转步骤1
我简单解释下:jmp short obj,其中short指明了是短跳转,也就是跳转的范围为-128~127(8位),(而cpu是16位的,因而这一个字节只能存放一个位移量,个人理解!)
执行下cs:ip的步骤,
               第一步:取jmp指令到指令缓存器
               第二步中指令的长度为jmp short obj指令的长度,为2个字节!
               而要cpu执行跳转指令的时候,已经是第三步了!
      第三部执行前,此时的cs:ip已经指向了下一条指令了!(*)
   你给的题目中的0624H地址,指向的是jmp那条指令,而到(*)这里,ip已经是0624h+2h了,而所谓的位移量,也是相对于这时的IP,来讲的,到jmp目的地的距离!(因为只有机器执行了这条语句,才能知道命令中的位移量,而这时已经是第三步了!所以:位移量就是jmp指令地址的下一个地址与目的地址的差值)
不知道你理解的了不!

阔怀 发表于 2015-8-22 10:25:58

{:1_1:}

fast 发表于 2015-8-25 20:11:44

{:1_1:}{:1_1:}{:1_1:}

zhang99844 发表于 2015-8-31 10:36:51

来学习一下
页: [1]
查看完整版本: 关于地址的计算