. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  jmp short 标号的问题  [已解决] 回复[ 2次 ]   点击[ 312次 ]  
a82225269
[帖 主] [ 发表时间:2011-03-15 14:06 ] 
荣誉值:0
信誉值:0
注册日期:2011-02-27 03:22
jmp short 标号对ip的修改范围是8位masm将其翻译为机器码是8位位移。我的问题是既然ip是16位寄存器jmp short 标号对应的机器码位8位那ip(16位)+位移(8位)位数都不相同何来相加呢,如果位移是-3相对应的jmp short 标号 的机器码位移11111101b(-3),ip (16位)为5(0000000000000101b)那相加出来的ip等于0000000100000010b(258)ip指向的是258而不是向前减3
zaixuexi
[第1楼] [ 回复时间:2011-03-15 15:07 ] 
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
1. 8位位移就一定是8位计算么?
最高位表示符号位
-3(原)->1111 1111 1111 1101(补)
       +0000 0000 0000 0101
---------------------------------
      1 0000 0000 0000 0010(补)       OF=0(D15 XOR D14的结果),CF=1(D15产生进位了)
最高位D15是符号位,所以是+2
2. DEBUG下敲一敲
mov ax,5
add ax,-3
单步一下
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved