《微型電腦原理與介面技術(第2版)》馮博琴 吳寧 主編-清華大學出版社——做筆記用 一、8088/8086的14個16位寄存器: //----------------------------------------------------------------------------------
《微型電腦原理與介面技術(第2版)》馮博琴 吳寧 主編-清華大學出版社——做筆記用
一、8088/8086的14個16位寄存器:
//-------------------------------------------------------------------------------------------------------------------------------
1、通用寄存器——8個
(1)數據寄存器——4個
AX: 累加器,常用於存放算數邏輯運算中的操作數,另外所有的I/O指令都使用累加器與外設介面傳送信息。
BX: 基址寄存器,常用來存放訪問記憶體時的偏移地址。
CX: 計數寄存器,在迴圈和串操作指令中用作計數器。
DX: 數據寄存器,在寄存器間接定址的I/O指令中存放I/O埠的地址。
另外: 在做雙字長除法運算時,DX與AX合起來存放一個雙字長數(32位),其中,DX存放高16位,AX存放低16位。
(2)地址指針寄存器——2個
SP: 堆棧指針寄存器,它在堆棧操作中存放棧頂偏移地址,即指向堆棧的棧頂。
BP: 基址指針寄存器,一般也常用來存放訪問記憶體時的偏移地址。但它通常是與SS寄存器配對使用。(比較:BX通常是與DS寄存器配對使用。)
作為通用寄存器,SP和BP也可以存放數據,但實際上,它們更經常、更重要的用途是存放記憶體單元的偏移地址,特別是SP,在訪問堆棧時作為指向棧頂的指針。
(3)變址寄存器——2個
SI: 源變址寄存器。
DI: 目的變址寄存器。
它們常常在變址定址方式中作為索引指針。
//-------------------------------------------------------------------------------------------------------------------------------
2、段寄存器——4個
CS: 代碼段寄存器
SS: 堆棧段寄存器
DS: 數據段寄存器
ES: 附加段寄存器
存放段基地址,即段起始地址的高16位。
//-------------------------------------------------------------------------------------------------------------------------------
3、控制寄存器——2個
IP: 指令指針寄存器,用以存放預取指令的偏移地址。
FLAGS: 稱為標誌寄存器或程式狀態字(PSW)。
CPU取指令時總是以CS為段基址,以IP為段內偏移地址。當CPU從CS段中偏移地址為IP的記憶體單元中取出指令代碼的一個位元組後,IP自動加1,指向指令代碼的下一個位元組。用戶不能直接訪問IP。
FLAGS是16位寄存器,但只用到其中9位,其中包括6個狀態標誌和3個控制標誌。
【下圖來自百度百科】
二、8088/8086對段寄存器使用的約定
序號 | 記憶體訪問類型 | 預設段寄存器 | 可重設的段寄存器 | 段內偏移地址來源 |
1 | 取指令 | CS | 無 | IP |
2 | 堆棧操作 | SS | 無 | SP |
3 | 串操作之源串 | DS | ES、SS | SI |
4 | 串操作之目標串 | ES | 無 | DI |
5 | BP用作基址定址 | SS | ES、DS | 按定址方式計算得有效地址 |
6 | 一般數據存取 | ES | ES、SS | 按定址方式計算得有效地址 |