執(zhí)行單元(EU-Execution Unit):負(fù)責(zé)指令的譯碼和執(zhí)行。
1.4個(gè)16位數(shù)據(jù)寄存器(AX、BX、CX、DX)
AX和AL可用作累加操作,因此又稱作累加器
2.4個(gè)16位地址指針寄存器:通常用于存放操作數(shù)偏移地址
(1) SP (Stack Pointer)—堆棧指針寄存器,指示堆棧段棧頂位置
(2) BP (Base Pointer)—基址指針寄存器,指示堆棧段數(shù)據(jù)區(qū)基址
(3) SI (Source Index)—源變址寄存器,指示數(shù)據(jù)段源串地址
(4) DI(Destination Index)—目的變址寄存器,指示擴(kuò)展段目的串地址
3.標(biāo)志寄存器 FLAG- 狀態(tài)標(biāo)志
a) CF(Carry Flag)進(jìn)(借)位標(biāo)志,加法運(yùn)算最高位產(chǎn)生進(jìn)位或減法運(yùn)算最高位產(chǎn)生借位,表示無符號數(shù)運(yùn)算產(chǎn)生溢出,CF置1,否則置0
b) AF(Auxiliary Carry Flag)輔助進(jìn)位標(biāo)志,加法運(yùn)算時(shí)第3位往第4位有進(jìn)位,或減法運(yùn)算時(shí)第3位往第4位有借位,則AF置1,否則置0
c) ZF(Zero Flag)零標(biāo)志, 若當(dāng)前運(yùn)算結(jié)果為零, 則ZF置1,否則置0
d) SF(Sign Flag)符號標(biāo)志,與運(yùn)算結(jié)果最高位相同,若為負(fù)數(shù),則SF置1,否則置0,SF指示了當(dāng)前運(yùn)算結(jié)果是正還是負(fù)
e) OF(Overflow Flag)溢出標(biāo)志,有符號數(shù)算術(shù)運(yùn)算結(jié)果溢出,則OF置1,否則置0
f) PF(Parity Flag)奇偶標(biāo)志,運(yùn)算結(jié)果低8位所含1個(gè)數(shù)為偶數(shù)則PF置1,否則置0
- 控制標(biāo)志
a) DF(Direction Flag)方向標(biāo)志
DF=1,串操作時(shí),地址不斷遞減;DF=0,串操作時(shí),地址不斷遞增
b) IF(Interrupt enable Flag)中斷允許標(biāo)志
IF=1,CPU允許接收可屏蔽中斷請求,即開中斷;IF=0,則關(guān)中斷
c) TF(Trap Flag)跟蹤標(biāo)志,又稱單步標(biāo)志
TF=1,CPU為單步工作方式,每執(zhí)行完一條指令產(chǎn)生一次軟件中斷
總線接口單元(BIU-Bus Interface Unit):與系統(tǒng)總線連接,實(shí)現(xiàn)與存儲(chǔ)器、I/O口之間的數(shù)據(jù)傳送。
- 4個(gè)16位段地址寄存器
a) CS (Code Segment)——代碼段寄存器,代碼段存放代碼
b) DS (Data Segment)——數(shù)據(jù)段寄存器,數(shù)據(jù)段存放數(shù)據(jù)
c) SS (Stack Segment)——堆棧段寄存器,堆棧段用作堆棧操作
d) ES (Extra Segment)——擴(kuò)展段寄存器,擴(kuò)展段存放數(shù)據(jù)
8086對存儲(chǔ)器采用分段管理,4個(gè)段寄存器分別存放4個(gè)當(dāng)前段的起始地址,又稱作段基址寄存器。
2.指令指針寄存器IP (Instruction Pointer)
16位IP存放當(dāng)前代碼段(CS)所要取出的下一條指令的偏移地址
3.地址加法器∑
8086用20位地址線尋址1MB內(nèi)存空間,但其內(nèi)部寄存器是16位的,因此需要用地址加法器∑根據(jù)16位寄存器的值計(jì)算出20位物理地址
4.指令緩沖隊(duì)列
8086執(zhí)行指令的同時(shí),會(huì)從內(nèi)存取1條或幾條指令,取來的指令就存放在指令隊(duì)列中
5. 暫存器:用于與EU通信的內(nèi)部寄存器
6. 總線控制電路:負(fù)責(zé)總線操作控制
存儲(chǔ)器和I/O管理
-
邏輯地址形式為 段地址 : 偏移地址
image.png -
段超越
image.png 8086 I/O編址
8086對I/O端口操作,需要專門的IN、OUT指令,并且只能通過累加器(AX/AL)來完成,例: IN AL, 80H8086系統(tǒng)中,存儲(chǔ)器和I/O端口分別獨(dú)立編址
存儲(chǔ)器的地址范圍是00000H – 0FFFFFH
I/O端口的地址范圍是0000H – 0FFFFH
8086引腳信號和工作模式
最小模式:系統(tǒng)中只有一個(gè)處理器;MN/MX為高電平
最大模式:系統(tǒng)中包括兩個(gè)或多個(gè)處理器;MN/MX為低電平
8086 CPU為40pin雙列直插(DIP)封裝。
最小模式下引腳信號和功能
1.總線信號
a) AD0~AD15: 地址/數(shù)據(jù)復(fù)用引腳,雙向工作
分時(shí)傳送16位數(shù)據(jù)和地址的低16位,由ALE鎖存地址信息。
b) A16~A19(S3~S6): 地址/狀態(tài)復(fù)用引腳,輸出
分時(shí)輸出地址的高4位和CPU當(dāng)前狀態(tài),地址信息由ALE鎖存。
c) BHE/S7: 高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳,輸出
低電平有效,表示高8位數(shù)據(jù)線D15~D8上數(shù)據(jù)有效
d) ALE: 地址鎖存允許信號輸出
高電平有效,表示總線上的信息是地址信息。
2.總線控制信號
a) HOLD: 總線保持請求信號輸入
高電平有效,表示其他模塊(如DMA)申請占用總線
b) HLDA: 總線保持響應(yīng)信號輸出
高電平有效,表示CPU已讓出總線
3.系統(tǒng)控制信號
a) M/IO: 存儲(chǔ)器/輸入輸出選擇信號,輸出,高電平表示CPU訪問存儲(chǔ)器,低電平表示CPU訪問I/O端口
b) RD: 讀信號輸出,低電平有效,表示CPU從存儲(chǔ)器或I/O口讀入信息
c) WR: 寫信號輸出,低電平有效,表示CPU向存儲(chǔ)器或I/O口輸出數(shù)據(jù)
d) DT/R: 數(shù)據(jù)收發(fā)信號輸出,高電平表示CPU正在發(fā)送數(shù)據(jù),低電平表示CPU接收數(shù)據(jù)
e) DEN: 數(shù)據(jù)允許信號輸出,低電平有效,表示CPU當(dāng)前準(zhǔn)備發(fā)送或接收一個(gè)數(shù)據(jù)
4.中斷控制信號
a) INTR: 可屏蔽中斷請求信號輸入,高電平有效,表示外部向CPU提出中斷申請
b) INTA: 中斷響應(yīng)信號輸出,低電平有效,表示CPU響應(yīng)外設(shè)中斷請求
c) NMI: 非屏蔽中斷請求信號輸入,上升沿有效。表示外部有非屏蔽中斷申請。非屏蔽中斷不受軟件控制,CPU必須響應(yīng)
5.CPU控制信號
a) RESET: 復(fù)位信號輸入
高電平有效,至少保持4個(gè)時(shí)鐘周期的高電平。復(fù)位時(shí)CPU停止現(xiàn)行操作,開始復(fù)位,并進(jìn)行初始化:標(biāo)志寄存器FLAG、IP、DS、SS、ES及指令隊(duì)列均清零,CS為FFFFH,復(fù)位結(jié)束時(shí)CPU從FFFF0H開始執(zhí)行程序;
b) MN/MX:最小模式/最大模式選擇信號輸入,高電平為最小模式
c) READY:“準(zhǔn)備好”信號輸入,高電平有效,表示存儲(chǔ)器或I/O口已準(zhǔn)備就緒,可進(jìn)行一次數(shù)據(jù)傳輸;
d) TEST: 測試信號輸入,低電平有效,有效時(shí)CPU退出WAIT指令;
6.其它信號
a) CLK: 時(shí)鐘信號,8086主頻為4.77MHZ T=210ns;單相,占空比為1/3。
b) VCC,GND: 電源及地,+5V,滿足TTL規(guī)范
8086最小模式下的總線連接
1. Intel 8282
把AD復(fù)用引腳連接到地址總線的8位地址鎖存器。3片8282(功能同74LS373)A0~A19和BHE,ALE為鎖存信號。
2. Intel 8286
把AD復(fù)用引腳連接到數(shù)據(jù)總線的8位數(shù)據(jù)緩沖器。2片8286(功能同74LS245)做D15~D0的緩沖器,DT/R做方向選擇,DEN為選通信號。
4. 中斷控制信號INTR、INTA、NMI
INTR: 外部可屏蔽中斷請求引腳,高電平有效
INTA: 中斷響應(yīng)信號,低電平有效
NMI: 不可屏蔽中斷請求引腳,上升沿有效
5. 總線控制信號HOLD、HLDA
HOLD:總線保持請求引腳,高電平有效
HLDA:總線保持響應(yīng)引腳,高電平有效
HLDA控制8282的OE,當(dāng)CPU總線保持響應(yīng)時(shí)讓出總線
8086操作和時(shí)序
1. 8086時(shí)鐘電路與復(fù)位電路
8284為8086提供CLK時(shí)鐘信號、 RESET復(fù)位信號和READY準(zhǔn)備好信號
8086/8088內(nèi)部無時(shí)鐘發(fā)生器,時(shí)鐘由8284提供,頻率為4.77MHz
輸入RES經(jīng)8284內(nèi)部斯密特觸發(fā)器整形,同步后產(chǎn)生RESET信號,給CPU復(fù)位
外界準(zhǔn)備好信號輸入到8284的RDY端,同步后產(chǎn)生READY信號給CPU
2. 8086/8088系統(tǒng)的復(fù)位操作和啟動(dòng)過程
CPU接到RESET信號,停止現(xiàn)有工作,進(jìn)行復(fù)位操作:CS置FFFFH,IP置0,指令隊(duì)列清空,其余寄存器清0;
從存儲(chǔ)器FFFFH :0000H取第一條指令,一般在此處放一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到ROM BIOS中的系統(tǒng)測試程序
系統(tǒng)測試程序執(zhí)行硬件自檢(對CPU、RAM、ROM等硬件進(jìn)行測試),然后執(zhí)行ROM BIOS中的初始引導(dǎo)程序
初始引導(dǎo)程序再從磁盤0面0道1扇區(qū)裝入引導(dǎo)程序,執(zhí)行引導(dǎo)操作
按引導(dǎo)程序的指令,順序裝入其他程序模塊,完成操作系統(tǒng)的引導(dǎo)操作
注:在3、4步之間微機(jī)還會(huì)檢查C0000H開始的擴(kuò)展ROM空間中是否有程序,如果有,并且校驗(yàn)正確,則先執(zhí)行這些程序
3. 8086總線周期
時(shí)鐘周期T(T狀態(tài))
時(shí)鐘脈沖的一個(gè)循環(huán)時(shí)間叫做一個(gè)時(shí)鐘周期。每個(gè)時(shí)鐘周期T又稱為一個(gè)“狀態(tài)”。它是CPU工作的最小時(shí)間單位,是計(jì)算機(jī)系統(tǒng)工作速度的重要標(biāo)志。8086 CPU的F=4.77M,T=210ns總線周期
CPU通過總線從存儲(chǔ)器或I/O端口存取一個(gè)字或字節(jié)的時(shí)間稱為總線周期。包括三類:存儲(chǔ)器讀寫周期、I/O端口讀寫周期、中斷響應(yīng)周期
一個(gè)基本總線周期包括4個(gè)狀態(tài):T1,T2,T3,T4指令周期
執(zhí)行一條指令所需要的時(shí)間稱為指令周期。8086指令周期最短為2個(gè)時(shí)鐘周期,最長為200個(gè)時(shí)鐘周期。
4. 8086總線操作時(shí)序(最小模式下存儲(chǔ)器讀周期)
T1狀態(tài)
置M/IO為高電平,指示是從存儲(chǔ)器讀數(shù)據(jù)
T1開始,ALE置高,8282輸出跟隨輸入,T1上升沿,ALE置低,8282鎖存20位地址
BHE也在T1狀態(tài)鎖存,指示T2、T3狀態(tài)傳送數(shù)據(jù)時(shí),高8位是否有效
置DT/R為低,控制8286接收數(shù)據(jù),置DEN為高,讓8286輸出浮空T2狀態(tài)
撤銷地址信號,AD15~AD0處于高阻狀態(tài),為讀入數(shù)據(jù)作準(zhǔn)備
A19/S6~A16/S3及BHE/S7引腳輸出狀態(tài)信息S6~S3
置RD信號為低電平,輸出讀信號到存儲(chǔ)器
置DEN為低電平,打開8286三態(tài)門,準(zhǔn)備接收存儲(chǔ)器輸出的數(shù)據(jù)T3狀態(tài)
存儲(chǔ)器將數(shù)據(jù)送到數(shù)據(jù)總線,CPU通過AD15~AD0接收數(shù)據(jù)
T3上升沿檢測READY信號,若為高電平,則下一個(gè)為T4狀態(tài);否則插入等待周期TwT4狀態(tài)
T4開始,撤銷RD和DEN信號,置為高電平無效,數(shù)據(jù)總線浮空
T4上升沿撤銷DT/R信號
CPU讀取存儲(chǔ)器數(shù)據(jù)的時(shí)間為 2T = 420ns (RD或DEN有效時(shí)間)
注:最小模式下I/O口讀周期與存儲(chǔ)器讀周期類似,區(qū)別為讀I/O口時(shí),T1狀態(tài)將置M/IO為低電平,表示是對I/O口進(jìn)行讀