1.你写的挺好的.
2.
这四条指令的作用是将s2处的指令一条指令拷贝到s处
-> ;可以写的更详细些,呵呵
这四条指令的作用是将s2处的2个字节指令拷贝到s处
mov ax, cs:[si] =>ax=0xF6E8
mov cs:[di], ax =>s: db E8,0F6
而这2个字节从jmp short s1起始,jmp short s1编译后正好为2字节大小
所以是将s2处的指令一条指令拷贝到s处
e8是jmp short的指令码,同时jmp short的范围是一个有符号字节的大小
即[-128,127],所以可以判断f6是负数
求补可得到原码0x0A,负数说明ip逆向行走ip=ip-10
当指令执行到jmp short s1时,ip=$+2 ;$表示当前
也就是ip=mov di,offset s的地址,执行jmp时,ip=ip-10
通过计算或查指令手册可得
mov ax, 4c00h 到 mov di,offset s之间的偏移地址的差值恰好为0x0A
那么ip会回到mov ax,4c00h的偏移地址
整个过程中段地址没有发生变化. |