检测点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
(1)CPU修改4次IP
(2)在读取 mov ax,bx 指令后,IP修改一次
在读取 sub ax,ax 指令后,IP修改一次
在读取 jmp ax 指令后,IP修改一次
由于 jmp ax 指令用于修改寄存器IP的值,故IP会在指令执行时再修改一次
(3)第二条指令 sub ax,ax 用于将寄存器置零,ax的值会变为 0000
故在第三条指令执行时,IP的值会被修改为 0000
注:“jmp 某一合法寄存器“ 指令的功能为:用寄存器中的值修改IP
IP修改前后的工作流程:
1、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2、IP指向下一条指令
3、执行指令(转到步骤1,重复这个过程)
因此,IP值的修改,应该在指令执行前就完成了