assume cs:code
code segment
begin: jmp s
jmp near ptr s
jmp far ptr s
db 100 dup(0b8h,0,0)
s: mov ax,2
code ends
end begin
我编译后debug调试了一下。
-u
13B8:0000 E93401 JMP 0137
13B8:0003 E93101 JMP 0137
13B8:0006 EA3701B813 JMP 13B8:0137
13B8:000B B80000 MOV AX,0000
13B8:000E B80000 MOV AX,0000
13B8:0011 B80000 MOV AX,0000
13B8:0014 B80000 MOV AX,0000
……………………… 省略 ………………………
13B8:0128 B80000 MOV AX,0000
13B8:012B B80000 MOV AX,0000
13B8:012E B80000 MOV AX,0000
13B8:0131 B80000 MOV AX,0000
13B8:0134 B80000 MOV AX,0000
13B8:0137 B80200 MOV AX,0002
我想问的是我根据P167的图9.3与下面的分析理解,就jmp near ptr 标号来说,16位位移=标号处地址(本实验中S标号对应的是13B8:0137)—JMP指令后的第一个字节的地址(本实验中为13B8:0006)
这样一来,JMP后面的位移应该是0137—0006=0131才对。为什么调试结果三个JMP都是0137。
希望能得到详细解答。先谢过了! |