寄存器
對程序員來說,CPU中最主要部件是寄存器,可以通過改變寄存器的內(nèi)容來實現(xiàn)對CPU的控制
不同的CPU,寄存器的個數(shù)、結(jié)構(gòu)是不相同的(8086是16位結(jié)構(gòu)的CPU)
-
8086有14個16位寄存器:
8086寄存器
通用寄存器
- AX、BX、CX、DX這4個寄存器通常用來存放一般性的數(shù)據(jù),稱為通用寄存器(有時也有特定用途)
- 通常,CPU會先將內(nèi)存中的數(shù)據(jù)存儲到通用寄存器中,然后再對通用寄存器中的數(shù)據(jù)進行運算
- 假設內(nèi)存中有塊紅色內(nèi)存空間的值是3,現(xiàn)在想把它的值加1,并將結(jié)果存儲到藍色內(nèi)存空間
- CPU首先會將紅色內(nèi)存空間的值放到AX寄存器中:mov ax,紅色內(nèi)存空間
- 然后讓AX寄存器與1相加:add ax,1
-
最后將值賦值給內(nèi)存空間:mov 藍色內(nèi)存空間,ax
image.png
- AX、BX、CX、DX這4個通用寄存器都是16位的, 上一代8086的寄存器都是8位的,為了保證兼容, AX、BX、CX、DX都可分為2個獨立的8位寄存器來使用
- H代表高位寄存器
-
L代表低位寄存器
image.png
段寄存器
- CS為代碼段寄存器,IP為指令指針寄存器,它們指示了CPU當前要讀取指令的地址, 任意時刻,8086CPU都會將CS:IP指向的指令作為下一條需要取出執(zhí)行的指令
-
指令的執(zhí)行過程
1.從CS:IP指向的內(nèi)存單元讀取指令,然后放入指令緩存器
2.改變IP指針(IP = IP + 所讀取指令的長度)
3.執(zhí)行緩存器中的指令,然后又跳回步驟1,重復執(zhí)行這個過程
具體步驟如下圖所示:
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
在內(nèi)存或者磁盤上,指令和數(shù)據(jù)沒有任何區(qū)別,都是二進制信息,那么如何區(qū)分指令與數(shù)據(jù)呢?
CPU將CS:IP指向的內(nèi)存單元的內(nèi)容看做指令
CPU將DS指向的內(nèi)存單元的內(nèi)容看做數(shù)據(jù)
















