王爽书上一段奇怪的代码,它怎么能正确返回呢?
我已经把我的思路写入注释中了,依我的思路应该是个死循环,可是我DEBUG确认它能正确返回,我的思路错在哪了?
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0 //0送入ax
s:
nop
nop
mov di,offset s //把s代码段地址送入di
mov si,offset s2 //把s2代码段送入si
mov ax,cs:[si] //把s2代码段送入ax
mov cs:[di],ax //把s2段的代码替换s段的代码,执行后s段和s2段代码相同
s0:
jmp short s //跳转到s段,由于s段的代码被s2段代码替换,执行s2段代码
s1:
mov ax,0
int 21h
mov ax,0
s2:
jmp short s1 //一直执行s1,形成死循环
nop
codesg ends
end start