hhhi 发表于 2021-4-22 22:05:20

实验8

实验8
assueme cs:codesg
codesg segment
      mov ax,4c00h                这两句是程序正常返回的语句
      int 21h
start:mov ax,0
    s:nop
      nop

      mov di,offset s                        那s的地址
      mov si,offset s2                那s2的地址
      mov ax,cs:                        从s2处读取一个字(2byte)
      mov cs:,ax                        将s2读取的内容写到s开头处

    s0: jmp short s

    s1: mov ax,0
      int 21h
      mov ax,0
        s2: jmp short s1
                  nop
end start
分析如下:
1.先读取s和s2的地址,并分别储存到di和si中,然后在通过操作si和di,从s2读取一个字大小内容并替换掉s开头处的两个nop
从s1的内容可以看出,jmp short s1对应的意义就是想、向上转移8个内存单元(不包含内存单元本身),实际对应的机器指令是
EB(jmp)F6(-10)
2.程序运行到jmp short s,也就到了EB F6(向上转移8个),刚好就来到了cs:0处,接着就运行开头的两句,程序正常返回
————————————————
版权声明:本文为CSDN博主「zfy1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zfy1996/article/details/104400442
页: [1]
查看完整版本: 实验8