【微機原理與接口技術】二、8086系統結構

 

-8086CPU內部結構

1、總線接口部件BIU(Bus Interface Unit):

-描述:8086CPU與外部(存儲器和I/O端口)的接口,提供16位雙向數據總線和20位地址總線。

-作用:地址形成、取指令、指令排隊、讀/寫操作、總線控制;

-組成:

1)16位段地址寄存器:

CS:代碼段寄存器;

DS:數據段寄存器;

ES:附加段寄存器;

SS:堆棧段寄存器;

2)IP:16位指針寄存器,存放下一條要執行指令的偏移地址;

3)20位物理地址加法器:將16位邏輯地址變換成存儲器讀/寫所需要的20位物理地址;

4)6字節指令隊列:預放6字節的指令代碼;

5)總線控制邏輯:發出總線控制信號;

-工作過程:CS中16位段地址最低位補4個0,加上IP中16位偏移地址,在加法器中形成20位物理地址,送往地址總線,通過總線控制邏輯發出存儲器讀信號_RD,啓動存儲器,按給定地址從存儲器中取出指令,送往指令隊列中等待執行。

 

2、指令執行部件EU(Execution Unit)

-描述:完成指令譯碼和執行指令工作;

-組成:

1)ALU:算術邏輯運算單元,完成8位或16位的二進制運算;16位暫存器可以暫存參加運算的操作數;

2)PSW:標誌寄存器,存放ALU運算結果特徵;

3)寄存器組:

①通用16位寄存器:

AX、BX、CX、DX;

AX又稱累加器;

②專用16位寄存器:

SI:源變址寄存器;

DI:目的變址寄存器;

SP:堆棧指針寄存器;

BP:基址指針寄存器;

4)EU控制器:取指令控制和時序控制部件;

-工作過程:EU從BIU取得指令,譯碼,若執行指令需要訪問存儲器或I/O端口取操作數,則EU將操作數的偏移地址通過內部16位數據總線送給BIU,與地址段一起,在BIU的地址加法器中形成20位物理地址,申請訪問存儲器或I/O端口,取得操作數送給EU,EU根據指令要求向EU內部各部件發出控制命令,完成執行指令的功能。

 

-寄存器結構

 

1、通用寄存器組:

-描述:EU中包含4個16位通用寄存器:AX、BX、CX、DX;

也可以分爲8個8位寄存器使用:AL、BL、CL、DL、AH、BH、CH、DH,只能存放8位數據,不能存放地址。

 

2、指針和變址寄存器:

1)BP與SP寄存器稱爲指針寄存器,與SS聯用,爲訪問現行堆棧段提供方便。

2)SP寄存器在堆棧操作中使用。

3)SI與DI稱爲變址寄存器,通常與DS一起使用,爲訪問現行數據段提供段內地址偏移量。

 

3、段寄存器:

CS:代碼段寄存器;

DS:數據段寄存器;

ES:附加段寄存器;

SS:堆棧段寄存器;

由他們給出相應邏輯段的首地址,稱爲段基址,段基址與段內偏移地址組合形成20位物理地址,段內偏移地址可以存放在寄存器中,也可以存放在存儲器中。

 

4、指令指針寄存器:

IP,用來存放將要執行的下一條指令在現行代碼段中的偏移地址。8086程序不能直接訪問IP。

 

5、標誌寄存器PSW:

1)CF:Carry Flag,進位標誌位。本次運算中最高位由進位或借位時,CF=1。STC使CF標誌置位,CLC復位,CMC取反。

2)PF:Parity Flag,奇偶校驗標誌位。本次結果運算中低八位有偶數個1時,PF=1;奇數個1時,PF=0。

3)AF:Auxiliary Carry Flag,輔助進位標誌位。本次運算低四位向高四位有進位或借位時,AF=1。

4)ZF:Zero Flag,全零標誌位。本次運算結果全零時(結果爲0),ZF=1。

5)SF:Sign Flag,符號標誌位。本次運算結果最高位爲1時,SF=1。反映了本次運算結果的正負。

6)OF:Overflow Flag,溢出標誌位。本次運算過程中產生溢出時,OF=1。對帶符號數,字節運算結果範圍(-128~+127),字運算結果(-32768~+32767),超過此範圍爲溢出。

①加法運算:計算機判斷低位向最高有效位產生進位,而最高有效位向前無進位,置OF=1;或相反,低位向最高位無進位,而最高位向前卻有進位,置OF=1.

②減法運算:最高位需要借位,而低位並不向最高位借位時,OF置1;或相反,當最高位不需要借位,而低位從最高位有借位時,OF置1。

 

7)TF:Trap Flag,單步標誌位。調試程序時,可設置單步工作方式,TF=1時,CPU沒執行完一條指令,就自動產生一次內部中斷,使用戶能逐條跟蹤程序進行調試。

8)IF:Interrupt Flag,中斷標誌位。IF=1時,允許CPU響應可屏蔽中斷,當IF=0時,即使外部設備有中斷申請,CPU也不響應。STI使IF置1,CLI使IF置0。

9)DF:Ditection Flag,方向標誌位。控制串操作指令中地址指針變化方向,若在串操作指令中,DF=0,,地址指針自動增量,即由低地址向高地址進行串操作,若DF=1,地址指針自動減量,即由高地址向低地址進行串操作。STD使DF置1,CLD使DF置0。

 

各標誌位在DeBug中的符號表示:

 

-存儲器組織

1、存儲器地址分段

描述:在存儲器中以字節爲單位存儲信息,每個存儲單元有唯一的地址確定。8086由20根地址線可尋址1MB字節的存儲空間,即對存儲器尋址需要20位物理地址。而8086爲16位機,CPU內部寄存器只有16位,可尋址64KB。因此8086系統把整個存儲空間分成許多邏輯段,每段容量不超過64KB。

 

2、物理地址形成

-邏輯地址:存儲器的任一邏輯地址由段基址和偏移地址組成,都是無符號的16位二進制數,程序設計時採用邏輯地址。

-物理地址:存儲器的絕對地址,從00000~FFFFFH,是CPU訪問存儲器的實際尋址地址,它由邏輯地址變換而來。

-段基址:每段的起始地址,必須是每小段的首地址,其低四位一定位0。有四個段寄存器(CS,DS,ES,SS),用於存放段基址。

-計算公式:

物理地址 = 段基址 × 16 + 偏移地址

 

3、邏輯地址來源

取指令時:自動選擇CS寄存器值作段基址,偏移地址由IP指出;

堆棧操作:自動選擇SS寄存器值作段基址,偏移地址由SP指出;

讀/寫存儲器操作或訪問變量:自動選擇DS或ES寄存器值作段基址(必要時修改爲CS或SS),偏移地址由指令所給定的尋址方式來決定。當BP作爲基地址尋址時,段基址由堆棧寄存器SS提供,偏移地址從BP中取得。

 

 

4、存儲器分體結構

8086系統中1MB的存儲空間分成兩個存儲體:偶地址存儲體和奇地址存儲體,各512KB:

 

存儲器中存放的信息稱爲存儲單元的內容,一個字在存儲器中按相鄰兩個字節存放,存入時以低位字節在低地址、高位字節在高地址的次序存放。

如圖 (00100H) = 1234H

(00103H) = 0152H

8086CPU訪問存儲器時,都是以字爲單位進行的,並從偶地址開始。編程時要從存儲器偶地址開始存放字數據(對準存放)

 

5、堆棧

-描述:在存儲器中開闢一個區域,用來存放暫時需要保存的數據。堆棧段是由段定義語句在存儲器中定義的一段,容量小於等於64KB。段基址由SS指定,棧頂由SP指定(SP指向的可以是當前棧頂單元,也可以是棧頂上的空單元),堆棧地址增長方式是向上增長,棧底設在存儲器的高地址區,堆棧地址由高向低增長。

-工作方式:

1、堆棧工作方式是先進後出

2、入棧指令PUSH(SP-2->SP,SP指向新棧頂,低位數據壓入SP,高位數據壓入(SP+1));

3、出棧指令POP(當前棧頂SP(低位數據)和SP+1(高位數據)內容彈出,修改指針,SP+2->SP,SP指向新棧頂)。

4、以字爲單位進行操作時,低字節在偶地址,高字節在奇地址。

例:SS=C000H,堆棧段<64KB,SP=1000H

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章