王爽汇编中的一个问题,请大家进来看看谈谈聊聊!
实验8 分析一个奇怪的程序(第174页)
---------------------------------
分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。
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
个人分析:mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
这四行代码意思是把S2处的指令复制到S处。刚开始顺序执行,然后执行到S0处,此时那四行代码已经被执行过,就是S2处的指令已经放到了S处了,这个时候执行的指令是:jmp short s1 ,此时执行
s1:
mov ax,0
int 21h
mov ax,0
然后结束。
以上是我的分析过程,不过是错误的,请高手们给分析分析,谢谢了先!