汇编语言(王爽)第二版里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,请高人解答,谢谢。
mov ax,cs:[si]
mov cs:[di],ax
这两句不是把
jmp short s1
这句把nop nop得代替了吗?
后面执行到jmp short s
ip自动指向
s1:mov ax,0
又因为现在的s是
jmp short s1 所以是jmp 0000就是当前的位置。
你可以重新看一下jmp指令对应的本章第三章;
看看jmp语句对应的机器码;传递指令反映到机器码上是传递相应的机器码EB加上位移。
用debug一步一步执行指令,看一看运行结果。