实验八
题目与个人思路
分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。
assume cs:codesg
codesg 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
codesg ends
end start
答:可以。
加载程序后的数据如下:
运行
复制后的结果,注意它复制的是机器码,不是汇编指令!
所以后面的JMP 转移的目的地址才不同。
F6是补码=-AH,22H-AH=18H
F6是补码=-AH,AH-AH=0H
所以它是转移到0000处,即可以正确返回。