修改CS,IP寄存器的指令
汇编指令 jmp——》jump
jmp是转移指令,可以修改CS,IP这两个寄存器 决定CPU从哪里读取指令
jmp 2000:0
jmp 寄存器
若想同时修改CS、IP的值可以用形如“jmp 段地址:偏移地址”的指令完成,功能:用指令中给出的段地址修改CS,偏移地址修改IP如:
jmp 2AE3:3,执行后:CS=2AE3H, IP=0003H, CPU将从2AE33H处读取指令。
只想修改IP “jmp 某一合法寄存器” 的指令完成,功能为:用寄存器的值修改IP,如:
jmp ax,执行指令前:ax=1000H CS=2000H IP=0003H
执行指令后:ax=1000H CS=2000H IP=1000H jmp ax含义上好似: mov IP, ax
指令的执行过程:
1、CPU从CS:IP所指向的内存单元读取指令,将读取的指令存放到指令缓存器中
2、IP=IP+所读指令长度,从而指向下一条指令
3、执行指令缓冲器中的内容,回到步骤1
题目:
假设CS=2000H, IP=0000H 写出下列指令的执行过程
-a 2000:0 CS=2000H IP=0
mov ax,6622H CS=2000H IP=0+3=3
jmp 1000:3 CS=2000H IP=3+5=8
mov cx,ax
a 1000:0 CS=1000H IP=3
mov ax,0123H
mov ax,0 CS=1000H IP=3+3=6
mov bx,ax CS=1000H IP=6+2=8
jmp bx CS=1000H IP=8+2=10
mov cx,0
检测点 2.3
下面三条指令执行后,CPU修改几次IP?4 都是在什么时候?最后IP中的值是多少?0
mov ax,bx ----》存放到指令缓冲器中---》1 ——》执行 ax=bx
sub ax,ax ----》存放到指令缓冲器中——》1 ——》执行 ax=0 sub=subtract减去
jmp ax ----》存放到指令缓冲器中——》1——》执行 1 IP=0
指令的执行过程:
1、CPU从CS:IP所指向的内存单元读取指令,将读取的指令存放到指令缓存器中
2、IP=IP+所读指令长度,从而指向下一条指令
3、执行指令缓冲器中的内容,回到步骤1