问题点 2.3
问题
内存中存放的机器码和对应的汇编指令情况如图2.27所示,设CPU初始状态:CS=2000H,IP=0000H, 请写出指令执行序列。
解析
(1)CS=2000H,IP=0000H,CS:IP指向20000H,执行mov ax, 6622H,执行后CS=2000H,IP=0003H。
(2)CS=2000H,IP=0003H,CS:IP指向20003H,执行jmp 1000:3, 执行后CS=1000H,IP=0003H。
(3)CS=1000H,IP=0003H,CS:IP指向10003H,执行mov ax, 0000, 执行后CS=1000H,IP=0006H。
(4)CS=1000H,IP=0006H,CS:IP指向10006H,执行mov bx,ax, 执行后CS=1000H,IP=0008H。
(5)CS=1000H,IP=0008H,CS:IP指向10008H,执行jmp bx, 执行后CS=1000H,IP=0000H。
(6)CS=1000H,IP=0000H,CS:IP指向10000H,执行mov ax,0123H, 执行后CS=1000H,IP=0003H。
答案
1. mov ax, 6622H
2. jmp 1000:3
3. mov ax, 0000
4. mov bx,ax
5. jmp bx
6. mov ax, 0123H
7. 转到第3步执行
检测点2.3
问题
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax, ax
jmp ax
答案
CPU4次修改IP,分别是在:
第1条指令执行后,IP指向第2条指令
第2条指令执行后,IP指向第3条指令
第3条指令执行后,IP指向第4条指令
JMP指令执行后,IP重新指向第1条指令
最后IP的值为:0000H