工作生活

《汇编语言》实验8

2019-06-29  本文已影响0人  infinite_stack

P187
分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这个结果?

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

   s1: jmp short s
       int 21h
       mov ax,0

   s2: jmp short s1
       nop

code ends
end start

分析:

mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax

这段代码执行后,s处的两字节改写为s2处的指令jmp short s1
观察s2与s1s与code的位置,可以发现,两者之间的字节数相等,即:s处的指令相当于jmp short code
当代码执行到s1处,跳转s,接着跳转code,故程序最终能正确返回。

上一篇 下一篇

猜你喜欢

热点阅读