Intel 8086微處理器暫存器結構

Enjoy_process發表於2019-03-31

 

8086微處理器中包含4個通用暫存器、4個指標和變址暫存器、4個段暫存器、1個標誌暫存器和1個指令指標。

 

1、通用暫存器

通用暫存器組包括4個16位的暫存器AX、BX、CX、DX。它們即可以作為16為暫存器使用,也可以分為兩個8位暫存器使用,即高8位暫存器AH、BH、CH、DH和低8位暫存器AL、BL、CL、DL。這些資料暫存器既可以作為算術、邏輯運算的源運算元,向ALU提供參與運算的原始資料,也可以作為目標運算元,儲存運算的中間結果或最後結果。在有些指令中,這些暫存器具有特定的用途:

AX:累加器

BX:基址暫存器

CX:計數暫存器

DX:資料暫存器

 

2、指標及變址暫存器

指標及變址暫存器包括兩個指標暫存器SP(stack pointer)、BP(base pointer)和兩個變址暫存器SI(sourse index)、DI(destination index)。這組暫存器通常用來存放儲存器單元的16位偏移地址(即相對於段起始地址的距離,簡稱偏移地址)。

1)指令指標:在8086微處理器記憶體中有一個按照“先進後出”原則進行資料操作的區域,稱為堆疊。CPU對堆疊的操作有兩種,壓入(PUSH)操作和彈出(POP)操作。在進行堆疊操作的過程中,SP用來指示堆疊棧頂的偏移地址,稱為堆疊指標;而BP則用來存放位於堆疊段中的一個資料區的“基址”的偏移量,稱為基址指標。

2)變址暫存器:SI、DI稱為變址暫存器,它們用來存放當前資料所在儲存單元的偏移地址。在串操作指令中,SI用來存放源運算元地址的偏移量,稱為源變址暫存器;DI用來存放目標運算元地址的偏移量,稱為目的變址暫存器。

 

3、段暫存器(segment registers)

在8086微處理器中有4個16位的段暫存器,這些暫存器指明瞭一個特定的現行段,用來存放各段的段基址,當使用者指令設定了它們的初始值後,實際上已經確定了一個64KB的儲存區段

程式碼段暫存器 CS(code segment):用來存放當前使用的程式碼段的段基址,使用者編制的程式必須存放在程式碼段中,CPU將會依次從程式碼段取出指令程式碼並執行

資料段暫存器 DS(data segment):用來存放當前使用的資料段的段基址,程式執行所需要的原始資料以及運算的結果應存放在資料段中

附加段暫存器 ES(extra segment):用來存放當前使用的附加段的段基址,它通常也用來存放資料,在執行資料串操作指令時,用來存放目標資料串(此時DS用來存放源資料串)

堆疊段暫存器 SS(stack segment):用來存放當前使用的堆疊段的段基址,所有堆疊操作的資料均儲存在這個段中

 

4、指令指標

指令指標IP為16位暫存器,IP的內容總是指向BIU(匯流排介面部件)將要取的下一條指令程式碼的16位偏移地址,當取出1位元組指令程式碼後,IP自動加1並指向下一條指令程式碼的偏移地址。它的內容是由BIU來修改的,使用者不能通過指令預置或修改IP的內容,但有些指令的執行可以修改它的內容,也可以將其內容壓入堆疊或由堆疊中彈出。

 

5、標誌暫存器

8086微處理器中有一個16位的標誌暫存器(FR),但只使用了9位。其中6位為狀態標誌位,用來反映算術運算或邏輯運算結果的狀態;3位為控制位,用來控制CPU的操作

1)狀態標誌位

CF(carry flag):進位標誌。表示本次加法或減法運算中最高位(D_{7}D_{15})產生進位或借位的情況。CF=1表示有進位,CF=0表示無進位(減法運算時表示借位的情況)

PF(parity flag):奇偶校驗位。表示本次運算結果低8位中包含1的個數。PF=1表示有偶數個1,PF=0表示有奇數個1

AF(auxiliary carry flag):輔助進位標誌。表示參加加法或減法運算中D_{3}位向D_{4}位產生進位或借位的情況。AF=1表示有進位,AF=0表示無進位(減法時表示借位情況)

ZF(zero flag):零標誌。表示當前的運算結果是否為0。ZF=1表示運算結果為0,ZF=0表示運算結果不為0

SF(sign flag):符號標誌。表示運算結果的正、負情況。SF=1表示運算結果為負,SF=0表示運算結果為正

OF(overflow flag):溢位標誌。表示運算結果中產生溢位的情況。OF=1表示當前正在進行的補碼運算有溢位,OF=0表示無溢位。

2)控制標誌位

DF(direction flag):方向標誌。用來設定和控制字串操作指令的步進方向。DF=1時,串操作過程中地址會自動遞減1,DF=0時,地址自動遞增1

IF(interrupt enable flag):中斷允許標誌。用來控制可遮蔽中斷的標誌位。IF=1時,開中斷,CPU可以接受可遮蔽中斷的請求,IF=0時,CPU不能接受可遮蔽中斷請求。

TF(trap flag):單步標誌。用來控制CPU進入單步方式。TF=1時,CPU處於單步工作方式,每執行一條指令就自動產生一次內部中斷,TF=0時,CPU不能以單步方式工作。

 

相關文章