CS:IP是保存匯編指令的地方,它不會自動執行需要編譯成可執行文件,或者在debug中使用t命令時才會將這些匯編指令取出來執行
CS:代碼段寄存器
IP:指令指針寄存器
CS:IP:CPU將內存中的CS:IP指向的內容當做指令執行



(1) 8086CPU當前狀態: Cs中的內容為2000H, IP中的內容為0000H;
(2)內存20000H-20009H單元存放著可執行的機器碼;
(3)內存20000H-20009H單元中存放的機器碼對應的匯編指令如下。
地址: 20000H-20002H,內容: B8 23 01,長度: 3Byte,對應匯編指令: mov ax,0123H
地址: 20003H-20005H,內容: BB 03 00,長度: 3Byte,對應匯編指令: mov bx,0003H
地址: 20006H-20007H,內容: 89 D8,長度: 2Byte,對應匯編指令: mov ax,bx
地址: 20008H-20009H,內容: 01 D8,長度: 2Byte,對應匯編指令: add ax,bx
**8086cpu執行一條指令的過程:**

此時, CS: IP指向內存單元2000:0003.
執行控制器執行指令B8 23 01(即mov ax.0123H)
指令B82301被執行后AX中的內容為0123H(此時, CPU將從內存單元2000:0003處讀取指令。)
CS:2000H, IP:0003H(CPU將從內存2000H× 16+0003H處讀取指令BB 03 00)
CPU從內存20003H處讀取指令BB 03 00入指令緩沖器(IP中的值加3)
執行指令вв 03 00(D mov bx.0003н)
CPU從內存20006H處讀取指令89D8入指令緩沖器(IP中的值加2)
執行指令89 D8(即 mov ax,bx)后, AX中的內容為0003H
CPU從內存20008H處讀取指令01 D8入指令緩沖器(IP中的值加2)
執行指令01 D8(即add ax.bx)后, AX中的內容為0006H
將長度為10個字節的指令,存放在123B0H-123B9H的一組內存單元中,我們就可以認為, 123B0H-123B9H這段內存是用來存放代碼的,是一個代碼段,它的段地址為123BH,長度為10個字節
```
mov ax, 0000 (B8 00 00)
add ax,0123B (05 23 01)
mov bx, ax (8B D8)
jmp bx (FF E3)
```
如何使得代碼段中的指令被執行呢?
CPU并不會自動地將我們定義的代碼段中的指令當作指令來執行。
CPU只認被CS:IP指向的內存單元中的內容為指令。
所以,要讓CPU執行我們放在代碼段中的指令,必須要將CS:IP指向所定義的代碼段中的第一條指令的首地址。對于上面的例子,我們將一段代碼存放在123BOH-123B9H內存單元中,將其定義為代碼段,如果要讓這段代碼得到執行,可設CS=123BH. IP=0000H。
## **小結**
(1)段地址在8086CPU的段寄存器中存放。當8086CPU要訪問內存時,由段寄存器提供內存單元的段地址。8086CPU有4個段寄存器,其中CS用來存放指令的段地址.
(2) CS存放指令的段地址, IP存放指令的偏移地址8086機中,任意時刻, CPU將CS:IP指向的內容當作指令執行。
(3) 8086CPU的工作過程:①從CS: IP指向的內存單元讀取指令,讀取的指令進入指令緩沖器:@IP指向下一條指令③執行指令。(轉到步驟0,重復這個過程。)
(4) 8086CPU提供轉移指令修改cs,IP的內容。