《汇编语言》实验8

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,故程序最终能正确返回。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 实验8:分析一个奇怪的程序 1、代码会把 标号s2 之后的 jmp short s1 指令复制到 标号s: nop...
    AkuRinbu阅读 695评论 0 0
  • 转移指令 1、可以修改IP,或同时修改CS和IP的指令统称为转移指令。 8086CPU的转移行为有以下几类。 只修...
    迷心迷阅读 1,306评论 0 0
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 555评论 0 0
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,462评论 0 1
  • 一、基础知识 mov ax,bx把BX内容送到AX中。汇编语言有3类指令,汇编指令、伪指令,其他符号。CPU通过地...
    赤果_b4a7阅读 1,894评论 0 1