《汇编语言》(王爽)学习笔记---实验八(分析一个奇怪的程序)

分析这个程序的运行过程

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的jmp short s1复制到s段的前两个字节处。s的前两个字节是nop nop,这两个空命令就变成了jmp short s1翻译成的机器指令EBF6,注意jmp指令翻译成机器指令中的那个数字F6是相对位移(会跳到相对当前指令的下一条指令之前的位移为F6处的指令处执行),不再是标号s1的地址。F6是补码,对应十进制是-10,相对位移是-10。将由s的第一个指令的下一条指令地址上溯10个字节的位移,正好到段开始的指令,执行
mov ax,4c00h int 21h,程序结束。在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值