[039][汇编语言]实验8 分析程序

实验8:分析一个奇怪的程序

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
EBF6.png
  • 1、代码会把 标号s2 之后的 jmp short s1 指令复制到 标号s: nop nop 这里,本质上复制的就是指令对应的机器码EBF6指令也是数据,指令就是数据
  • 2、机器码EBF6分两部分看EB表示跳转,F6表示位移量
  • 3、F6 是十进制数 负十 的补码形式,功能是 向低地址跳转十个内存单元
F6 H =  1111 0110 B
取反+1
=  0000 1001 B+1
=  0000 1010 B
=  10 D
  • 4、F6 如何而来?
jmp short s1
标号s1处的偏移地址 0018H
  减去
jmp指令后第一个字节的地址 0022H

0018H-0022H = F6H(保留2个字节)
  • 5、程序跳转到 mov ax,4c00h 开始执行,最终程序结束
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容