在寫程序或研究任何指令之前,必須了解微處理器的內(nèi)部配置 8086的寄存器組分成8個通用寄存器、4個段寄存器、1個標志寄存器和1個指令指針寄存器,均是16位的。8個通用寄存器中的4個數(shù)據(jù)寄存器可以分成高8位和低8位兩個獨立的寄存器,形成8個通用的8位寄存器。寄存器示意圖如下:
一、通用寄存器 1、數(shù)據(jù)寄存器 AX 稱為累加器,使用頻率最高,用于算術(shù)、邏輯運算以及與外設(shè)傳遞信息等。 BX 稱為基址寄存器,常用作存放存儲器地址。 CX 稱為計數(shù)器,作為循環(huán)和串操作等指令中的隱含計數(shù)器。 DX 稱為數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。 2、指針及變址寄存器 包括SI 、DI、BP、SP四個16位寄存器,常用于存儲器尋址時提供地址。SI是原變址寄存器,DI是目的變址寄存器,一般與DS聯(lián)用確定數(shù)據(jù)段中某一存儲單元地址。在串指令中,SI與DS聯(lián)用、DI與ES聯(lián)用,分別尋址數(shù)據(jù)段和附加段,同時在串指令中,SI、DI還都具有自動增量或減量的功能。SP為堆棧指針寄存器,指示棧頂?shù)钠频刂罚籅P為基址指針寄存器,表示堆棧段中的基地址。SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址。SP實際上可歸類為專用寄存器,只用于堆棧操作。16位IP指令指針寄存器用來指示代碼段中指令的偏移地址,與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址,處理器利用CS:IP取得下一條要執(zhí)行的指令,然戶修改IP內(nèi)容,指向下一條指令的存儲器地址。計算機就是通過CS:IP寄存器來控制指令序列的執(zhí)行流程。IP寄存器是一個專用寄存器。 二、標志寄存器 標志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。許多指令執(zhí)行之后影響有關(guān)的標志位;不少指令的執(zhí)行要利用某些標志。8086微處理器中各種標識形成一個16位的標志寄存器FLAGS,也稱為程序狀態(tài)字寄存器PSW,分為兩類:6個狀態(tài)標志和3個控制標志。具體如下圖:
 1、狀態(tài)標志 狀態(tài)標志用來記錄程序運行結(jié)果的狀態(tài)信息 CF——進位標志(Carry Flag)。當運算結(jié)果的最高有效位有進位(加法)或借位(減法)時,進位標志置1,即CF=1;否則CF=0。 ZF——零標志(Zero Flag)。若運算結(jié)果為0,則ZF=1,否則ZF=0。 SF——符號標志(Sign Flag)。運算結(jié)果的最高有效位就是符號標志的狀態(tài)。既運算結(jié)果最高位為1,則SF=1;否則SF=0。 PF——奇偶標志(Parity Flag)。運算結(jié)果最低字節(jié)中“1”的個數(shù)為零或偶數(shù)時,PF=1;否則PF=0。PF標志進反映最低8位中“1”的個數(shù)的奇或偶。 OF——溢出標志(Overflow Flag)。若算術(shù)運算結(jié)果有溢出,則OF=1;否則OF=0。 AF——輔助進位標志(Auxiliary Carry Flag)。運算時D3位(低半字節(jié))有進位或借位時,AF=1;否則AF=0 2、控制標志 控制寄存器可由程序根據(jù)需要指令設(shè)置,用來控制處理器執(zhí)行指令的方式。 DF——方向標志(Direction Flag)。該標志用于串操作指令中,控制地址的變化方向。如果DF=0,每次串操作后的存儲器地址自動增加,DF=1,每次串操作后的存儲器地址自動減少。方向標志可以用CLD指令復(fù)位(DF=0),STD指令置位(DF=1)。 IF——中斷允許標志(Interrupt-enable Flag)。該標志用于控制外部可屏蔽中斷是否可以被處理器響應(yīng)。IF=1,允許中斷,IF=0,禁止中斷。 TF——陷阱標志(Trap Flag)。也常稱為單步標志。用于控制處理器是否進入單步操作方式。TF=1,處理器單步執(zhí)行指令:即處理器在每條指令執(zhí)行結(jié)束時,產(chǎn)生一個編號為1的內(nèi)部中斷。這樣可以方便的對程序逐條指令的調(diào)試。 微處理器從功能上可以分成兩大部分:執(zhí)行單元(Exection Unit)和總線接口單元(Bus Interface Unit),如下圖:

在EU中算術(shù)邏輯單元ALU用來維持MPU的狀態(tài)和標志,管理通用寄存器和指令操作數(shù)。EU中的寄存器是16位的,數(shù)據(jù)通道也是16位的,便于數(shù)據(jù)的快速傳送(16位處理器)。EU從BIU的指令隊列中獲取指令,譯碼后開始執(zhí)行,當指令要求訪問內(nèi)存或端口時,EU請求BIU存取數(shù)據(jù)。這時EU算出的地址是相對段基的16位位移量,BIU根據(jù)指令要求選定相應(yīng)的段寄存器得到段基,由段基和位移量得出操作數(shù)的20位物理地址。BIU用來實現(xiàn)EU的所有總線操作,在EU執(zhí)行指令時,BIU從存儲器中取出后繼指令送入指令隊列,該隊列同時能存放6個指令字節(jié)(8088處理器)。這一指令隊列能保證EU從該隊列中取出馬行要執(zhí)行的指令,而不必到內(nèi)存中直接取指令。
|