马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 18510682557 于 2022-3-17 00:41 编辑 assume cs:codesg
codesg segment
mov ax, 4c00H (3字节指令)
int 21H (2字节指令)
start: mov ax, 0 (3字节指令)
s: nop (2字节指令) (EBF6)执行jump前,IP会先指向下一条指令,这时在执行EBF6向上跳10个字节的位置,正好是 mov ax, 4c00 也就是0000的位置 第三步
cs:ip ->nop
mov di, offset s
mov si, offset s2
mov ax, cs:[si]
mov cs:[di], ax (将EBF6写到s:处) 第二步
s0: jmp short s
s1: mov ax, 0 (3字节指令)
int 21H (2字节指令)
mov ax, 0 (3字节指令)
s2: jmp short s1 (2字节指令) "EBF6" = JUMP -10(F6是补码,对应原码就是-10,执行jump前,IP会先指向下一条指令,所以编译器通过计算得知IP需要向上移动10个字节空间才能指向S1的位置,所以是EBF6) 第一步
cs:ip -> nop
codesg ends
end start
|