首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

编译语言(王爽)第二版里9.8实验8疑惑

2013-01-06 
汇编语言(王爽)第二版里9.8实验8疑惑源码assume cs:codecode segmentmov ax,4c00hint 21hstart:mov ax,0s:

汇编语言(王爽)第二版里9.8实验8疑惑
源码
assume cs:code
code segment
mov ax,4c00h
int 21h
start:mov ax,0
s:nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0:jmp short s
s1:mov ax,0
int 21h
mov ax,0
s2:jmp short s1
nop
code ends
end start
我的理解是顺序执行到s0时,s的语句是jmp short s1即s2的内容,此时执行s2,再执行s1,以后就是s1和s2循环,但实验结果却不是这样,s的语句是jmp 0000,请高人解答,谢谢。
[解决办法]
你可以重新看一下jmp指令对应的本章第三章;
看看jmp语句对应的机器码;传递指令反映到机器码上是传递相应的机器码EB加上位移。
用debug一步一步执行指令,看一看运行结果。
[解决办法]
s2:jmp short s1

  这里 s1 表示的不是一个绝对地址,而是一个相对地址。具体说就是向后 10 个字节。该指令所占用的 2 字节被 mov 到 s: 处后,从该处重新计算得到的目标地址就是 mov ax,4c00h 这条指令的地址。

  s0 是个多余的标号,s1 后面的三条指令只是为了凑数。

热点排行