cpu執行何處的指令取決于CS:IP,可以通過改變、ip中的內容來控制要執行的目標命令
改變CS、IP的值:
~~**指令修改:**~~
8086cpu不提供對cs和ip修改的指令,如下指令是錯誤的
```
mov cs 2000H
mov ip 2000H
```

## **修改cs\ip的值**
**方法1**:debug中的R命令可以改變寄存器的值 rcs、rip(只是調試手段,并非程序方式)
```
r+空格+寄存器名(cs\ip)+回車+想要的段地址
```
**方法2:跳轉指令jmp**
同時修改cs、ip的內容
```
//用指令中給出的段地址修改cs、偏移地址修改ip
jmp 段地址:偏移地址
```
```
//執行后: CS=2AE3H, IP=0003H, CPU將從2AE33H處讀取指令。.
jmp 2AE3:3
//執行后: CS=0003H, IP=0B16H, CPU將從00B46H處讀取指令。
jmp 3:0B16
```
僅修改ip的內容:jmp:某一合法寄存器
```
jmp ax //類似于 mov ip,ax
jmp bx //類似于 mov ip,bx
```
用寄存器中的值修改IP
內存中存放的機器碼和對應的匯編指令情況如下圖所示,
假設CPU初始狀態:CS=2000H, IP=0000H.請寫出指令執行序列。

執行過程如下。
(1)當前CS=2000H, IP=0000H,則CPU從內存2000Hx16+0=20000H處讀取指令,讀入的指令是: B8 22 66(mov ax,6622H),讀入后1P=IP+3-=0003H
(2)執行后, CS=2000 , IP=0003H,則CPU從內存2000H X 16+0003H=20003H處讀取指令,讀入的指令是: EA 03 00 00 10(jmp 1000:0003), 讀入后IP=IP+5=0008H;
(3)指令執行后, CS=1000H, IP=0003H,則CPU從內存1000H × 16+0003H=10003H處讀取指令,讀入的指令是: B8 00 00(mov ax,0000),讀入后IP=IP+3=0006H;
(4)指令執行后, CS=1000H, IP=0006H,則CPU從內存1000H× 16+0006H=10006H處讀取指令,讀入的指令是: 8B D8(mov bx,ax),讀入后IP=IP+2=0008H
(5)指令執行后, CS=1000H, IP=0008H,則CPU從內存1000H × 16+0008H=10008H處讀取指令,讀入的指令是: FF E3(jmp bx),讀入后IP=IP+2=000AH;
(6)指令執行后, CS=1000H, IP=0000H, CPU從內存10000H處讀取指令經分析后,可知指令執行序列為:
(1) mov ax,6622F
(2) jmp 1000:3
(3) mov ax,0000
(4) mov bx,ax
(5) jmp bx
(6) mov ax,0123H
(7)轉到第3步執行