匯編指令 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