. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为了这个问题我0:39分还发贴 望大哥大姐解决 9.4章似乎说的不对  [待解决] 回复[ 5次 ]   点击[ 228次 ]  
wokong
[帖 主]   [ 发表时间:2010-04-12 00:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-18 15:24
9.3章说   jmp 标号 机器码中内容为  EA相对位移
但是我看到9.4时候  。。中的实例如下:
assume cs:codeseg

codeseg segment
        start:mov ax,0
              mov bx,0
              jmp far ptr s
              db 256 dup (0)
            s:add ax,1
              inc ax
codeseg ends

end start

我用按照书上说的用u查看debug 看到jmp指令后的第一个字节的地址为:000B
F:\asm>debug 94.exe
-u cs:0
0B8F:0000 B80000        MOV     AX,0000
0B8F:0003 BB0000        MOV     BX,0000
0B8F:0006 EA0B018F0B    JMP     0B8F:010B
0B8F:000B 0000          ADD     [BX+SI],AL
0B8F:000D 0000          ADD     [BX+SI],AL
0B8F:000F 0000          ADD     [BX+SI],AL
0B8F:0011 0000          ADD     [BX+SI],AL
0B8F:0013 0000          ADD     [BX+SI],AL
0B8F:0015 0000          ADD     [BX+SI],AL

标号s处的地址为:010B
0B8F:0109 0000          ADD     [BX+SI],AL
0B8F:010B 050100        ADD     AX,0001
0B8F:010E 40            INC     AX

按照9.3的说法是:EA位移 中的位移应该为 010B-000B
但是为什么直接就是s的地址?实在搞不懂。。。请大哥大姐们触发下。。
versaariel
[第1楼]   [ 回复时间:2010-04-12 09:48 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
0B8F:0006 EA0B018F0B    JMP     0B8F:010B 
1.不是书上错,就是你错
2.DEBUG上实验下jmp,jmp short,jmp far ptr看看三者的机器码有什么区别
3.0B8F:0006 EA0B018F0B    JMP     0B8F:010B 
注意0B8F:0006这个字节的值是EA,你再看看jmp,jmp short是不是也是0xEA
4.有问题先比较一下,多上google查资料,多上DEBUG实验^-^
wokong
[第2楼]   [ 回复时间:2010-04-12 12:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-18 15:24
我是看了书后面的 jmp附录  反复看了9.3 9.4才写的这个问题  不是随便问的 
想不通啊。。我的问题 上面写的很清楚 不过还是谢谢ersaariel
versaariel
[第3楼]   [ 回复时间:2010-04-12 13:28 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
可能是书上写的不清楚吧EA0B018F0B(jmp far ptr)是绝对地址
而EBXX(jmp short)是相对位移
EAXX和EBXX不同
wokong
[第4楼]   [ 回复时间:2010-04-12 18:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-18 15:24
今天回来我又看了看书  你的说法印证了我的 2次理解。。问题解决ok
谢谢你了  我qq:6686496 好好向你学习
versaariel
[第5楼]   [ 回复时间:2010-04-12 20:40 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
客气了^-^,论坛里有好多很不错的问题,有时间可以学习下
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved