8086 所有的寄存器都是16位的,可以存放兩個字節
通用寄存器
AX 可分爲 AH和AL
BX 可分爲 BH和BL
CX 可分爲 CH和CL
DX 可分爲 DH和DL
可以作爲兩個獨立使用的8位寄存器來用 AX的低8位構成AL寄存器,高8位構成AH寄存器 在寫一條彙編指令或者一個寄存器的名稱時不用區分大小寫
這4個寄存器用來存放一般性的數據,被稱爲通用寄存器
段寄存器
CS DS SS ES
CS和IP是8086CPU 中最關鍵的寄存器,CS爲代碼段寄存器,IP爲指令指針寄存器,任意時刻,CPU將CS:IP指向的內容當作指令執行。執行過程如下:
1 從CS:IP指向的內存單元讀取指令,讀取的指令進入指令緩衝器。
2 (IP) = (IP) + 所讀取的指令長度,從而指向下一條指令
3 執行指令,轉到1,重複。
如果內存中的一段信息曾被CPU執行過,那麼它所在的內存單元一定被CS:IP指向過
修改CS,IP內容:
JMP 2AE3:3
執行後 CS=2AE3,IP=0003H
CPU將從2AE33H處讀取指令
尋址方式
段地址×16 + 偏移地址 = 物理地址
(段地址×16)顯然是16的倍數,所以一個段的起始地址也一定是16的倍數,尋址能力爲64KB,所以一個段的長度最大爲64KB80
字單元:存放一個字型數據(16位)的內存單元,由兩個地址連續的內存單元組成。
CPU要讀寫一個內存單元的時候,必須先給出這個內存單元的地址(由段地址和偏移地址組成) 8086CPU自動讀取DS中的數據作爲內存單元的段地址
例如 將AL中的數據送入內存單元10000H中
MOV BX,10000H
MOV DS,BX
MOV [0],AL
ADD 寄存器,寄存器
ADD 寄存器,數據
ADD 寄存器,內存單元
ADD 內存,寄存器
棧操作 PUSH POP
在8086的CPU中,又兩個寄存器,段寄存器SS和寄存器SP,棧頂的段地址存放在SS中,偏移地址存放在SP中,任意時刻,SS:SP指向棧頂元素
我們可以將一段長度爲N(N<=64KB)地址連續,起始地址爲16的倍數的內存單元當作專門存放數據的內存空間,從而定義了一個數據段