# 9.1 检测点

发布时间 2023-07-14 11:12:25作者: 三年、

9.1 检测点

assume cs:code

data segment
?
data ends

code segment
start:
mov ax, data
mov ds, ax
mov bx, 0
jmp word ptr [bx+1]

code ends
end start

若要使程序中的 jmp 指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?

答:CS:IP指向程序的第一条指令,也就是让 IP = 0 , 因为现在已经指向 [bx+1] 了 ,也就是 [1] ,word ptr 是字形数据,两个字节,要求 [1] 和 [2] 都是0即可,其余没有要求。

  1. 补全程序,使得 jmp 指令执行后,CS:IP指向第一条指令
assume cs:code

data segment
dd 12345678H
data ends

code segment
start:
mov ax, data
mov ds, ax
mov bx, 0
mov [bx], __
mov [bx+2], __
jmp dword ptr ds:[0]

code ends
end start

答:低字为IP,高字为CS,指向第一条指令,CS 不变,IP 为0,因此第一个空为0,第二个空为cs

;内存数据如下

2000:1000 BE 00 06 00 00 00 ……

;此时CPU执行指令

mov ax, 2000H
mov es, ax
jmp dword ptr es:[1000H]

后,(CS) = ? (IP) = ?
答:把前两个字节赋值给IP,后面的两字节赋值给CS,CS = 0006H,IP = 00BEH