. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  jmp short 标号的问题  [已解决] 回复[ 2次 ]   点击[ 312次 ]  
a82225269
[帖 主]   [ 发表时间:2011-03-15 14:06 ]   [引用]   [回复]   [ top ] 
荣誉值: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 ]   [引用]   [回复]   [ top ] 
荣誉值: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
单步一下
a82225269
[第2楼]   [ 回复时间:2011-03-25 03:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-27 03:22
此贴由 贴主 于 [ 2011-03-25 03:08 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved