实验8分析
本帖最后由 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:
mov cs:, 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
:'(:);P 不正确
页:
[1]