8086近跳转中IP=5的计算逻辑疑问:为何结果不是04?
8086近跳转中IP=5的计算逻辑解析
8086的近跳转采用相对寻址,偏移量(disp)的计算基准是跳转指令执行后,下一条指令的起始IP地址,而非跳转指令本身的起始地址。
对应你的例子:
- 正确计算公式:
IP(new) = IP(next instruction) + disp - 代入数值:
03 + 02 = 05,这就是最终IP=5的由来。
你之前用跳转指令起始IP(002)计算得到04的方式是错误的——CPU执行跳转指令时,会先将IP更新为下一条指令的起始地址,再用这个更新后的IP加上偏移量,得到跳转目标的IP地址。
参考资料:《THE INTEL MICROPROCESSORS Eighth Edition BARRY B. BREY》
内容的提问来源于stack exchange,提问作者Hussien Mostafa Elkholy
相关产品推荐
相关产品推荐

