修改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中的值是多少? 

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

原文地址:https://www.cnblogs.com/hsp1269/p/13751481.html