第9章实验8

assume cs:codesg


codesg segment


       mov ax,4c00h                      // ip=0 
       int 21h      


    start:
        mov ax , 0                         // ip=5  ,第一条执行的指令
        s: nop                               //  ip=8
           nop


           mov di, offset s              // ip=A
           mov si, offset s2          
           mov ax, cs:[si]

           mov cs:[di], ax             //上面这四句将 s2处的指令  “jmp short s1"(2个字节复制到s处),特别注意,"jmp short s1"转化为机器码后跳转参数值是一个

                                                //偏移量,仔细看代码可以知道这个偏移量是-8(ip从0020H跳转到0018H), 所以复制到s处后,s处实际的机器码也是跳-8,而s处的ip=8,

                                               // 跳转后就跳到了 ip=0处,也就是codesg段的第一个字节,执行"mov ax, 4c00h" 和 "int 21h"后,程序结束



        s0: jmp short s


        s1: mov ax, 0               //  ip=0018H
            int 21h
            mov ax, 0


        s2: jmp short s1          //ip=0020H
           nop


   codesg ends

   end 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   //跳转到s处

                

          s://此处现在是2个字节的跳转,跳转到了ip=0的地方

        mov ax,4c00h
        int 21h




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值