版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章16位和32位微處理器
本章重點(diǎn):★CPU的編程結(jié)構(gòu)★標(biāo)志寄存器的含義★
CPU的操作和時序★
CPU的中斷分類和中斷向量★硬件中斷和軟件中斷的區(qū)別,軟件中斷的特點(diǎn)★
CPU的存儲器編址和I/O編址②主頻:CPU的時鐘頻率。主頻越高,運(yùn)算速度越快。微處理器的性能指標(biāo):①字長:CPU能同時處理的數(shù)據(jù)位數(shù),也稱為數(shù)據(jù)寬度。字長越長,計算能力越高,速度越快,但集成度要求也越高,工藝越復(fù)雜。8位,16位,32位,64位。尋址空間:1MB2.116位微處理器80862.1.18086的編程結(jié)構(gòu)2.執(zhí)行部件(executionunit,EU)
從功能上,8086分為兩部分,即1.總線接口部件(businterfaceunit,BIU)1.總線接口部件
總線接口部件負(fù)責(zé)與存儲器、I/O端口傳送數(shù)據(jù),由下列4部分組成:
①4個段地址寄存器(CS、DS、ES、SS)②16位的指令指針寄存器IP(Instruction
Pointer)③20位的地址加法器④6字節(jié)的指令隊列緩沖器2.執(zhí)行部件執(zhí)行部件負(fù)責(zé)指令的執(zhí)行,由下列4部分組成:①4個通用寄存器,即AX、BX、CX、DX;②4個專用寄存器,即基數(shù)指針寄存器BP(base
pointer)堆棧指針寄存器SP(stack
pointer)源變址寄存器SI(source
index)目的變址寄存器DI(destination
index);③標(biāo)志寄存器;④
算術(shù)邏輯部件
ALU(arithmetic
logic
unit)。
標(biāo)志寄存器共有16位,其中7位未用,所用的各位含義如下:
1514131211109876543210OFDFIFTFSFZFAFPFCF
根據(jù)功能,8086的標(biāo)志可以分為兩類:
1.狀態(tài)標(biāo)志
2.控制標(biāo)志
狀態(tài)標(biāo)志有6個,即SF、ZF、PF、CF、AF和OF
①符號標(biāo)志SF(sign
flag)②零標(biāo)志ZF(zero
flag)③奇偶標(biāo)志PF(parity
flag)④進(jìn)位標(biāo)志CF(carry
flag)⑤輔助進(jìn)位標(biāo)志AF(auxiliary
carry
flag)⑥溢出標(biāo)志OF(overflow
flag)控制標(biāo)志有3個,即
①方向標(biāo)志DF(direction
flag)②中斷允許標(biāo)志IF(interrupt
enableflag)③跟蹤標(biāo)志TF(trap
flag)又稱為單步標(biāo)志
表2.18086CPU
標(biāo)志位情況名稱符號符號標(biāo)志SF功能與運(yùn)算結(jié)果的最高位相同,當(dāng)數(shù)據(jù)用補(bǔ)碼表示時,負(fù)數(shù)的最高位為1,所以符號標(biāo)志表示運(yùn)算執(zhí)行后的結(jié)果是正還是負(fù)。零標(biāo)志ZF當(dāng)前的運(yùn)算結(jié)果為零,ZF為1;否則,ZF為0。奇偶標(biāo)志PF運(yùn)算結(jié)果所含1的個數(shù)為偶數(shù),則PF為1。進(jìn)位標(biāo)志CF當(dāng)執(zhí)行一個加法運(yùn)算使最高位產(chǎn)生進(jìn)位時,或者執(zhí)行一個減法運(yùn)算引起最高位產(chǎn)生借位時,此外,循環(huán)指令也影響這一標(biāo)志。輔助
進(jìn)位標(biāo)志AF加法運(yùn)算時,如果第3位往第4位有進(jìn)位;減法運(yùn)算時,如果第3位往第4位有借位。輔助進(jìn)位標(biāo)志一般在BCD碼運(yùn)算中作為是否進(jìn)行十進(jìn)制調(diào)整的判斷依據(jù)。溢出標(biāo)志OF運(yùn)算過程中產(chǎn)生溢出時,所謂溢出,是指當(dāng)字節(jié)運(yùn)算的結(jié)果超出了范圍128~
+127,或者當(dāng)字運(yùn)算的結(jié)果超出了范圍32768~
~+32767時稱為溢出。方向標(biāo)志DF控制串操作指令用的標(biāo)志。
DF=0,串操作過程中的地址會不斷增值;DF=1,串操作過程中的地址會不斷減值。中斷標(biāo)志IF控制可屏蔽中斷的標(biāo)志。IF=0,CPU不能對可屏蔽中斷請求作出響應(yīng);IF=1,CPU可以接受可屏蔽中斷請求。跟蹤標(biāo)志TFCPU按跟蹤方式執(zhí)行指令。例1:執(zhí)行以下兩數(shù)的加法操作,判斷各標(biāo)志位的狀態(tài)。各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)是:CF=1,PF=1,AF=0,ZF=0,SF=1,OF=0例2:執(zhí)行以下兩數(shù)的加法操作,判斷各標(biāo)志位的狀態(tài)。執(zhí)行以上加法操作后,各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)是:CF=0,PF=1,AF=0,ZF=0,SF=1,OF=13.8086的總線周期的概念典型的8086總線周期序列:8086CPU的一個基本總線周期由4個時鐘周期(T1~T4)組成。時鐘周期T也稱為T狀態(tài),即T1狀態(tài)、T2狀態(tài)、T3狀態(tài)和T4狀態(tài)。CPU在每個時鐘周期(狀態(tài))內(nèi)完成若干基本操作。T1狀態(tài):CPU向20位地址/狀態(tài)(A19/S6~A16/S3),地址/數(shù)據(jù)(AD15~AD0)分時復(fù)用總線上發(fā)送讀寫存儲器或I/O端口的地址。發(fā)ALE地址鎖存信號發(fā)出存儲器/IO讀寫控制信號M/IOT2狀態(tài):CPU低16位地址/數(shù)據(jù)總線(AD15~AD0)切換為數(shù)據(jù)總線,為讀寫數(shù)據(jù)作準(zhǔn)備T2狀態(tài)總線的高4位(A19/S6~A16/S3)上輸出本總線周期狀態(tài)信息S6~S3。這些狀態(tài)信息用來表示中斷允許狀態(tài)、當(dāng)前正在使用的段寄存器等。發(fā)出數(shù)據(jù)允許信號DEN發(fā)出數(shù)據(jù)發(fā)送接受控制信號DT/RT3狀態(tài):CPU在總線的高4位(A19/S6~A16/S3)繼續(xù)輸出總線周期狀態(tài)信號S6~S3。在總線的低16位(AD15~AD0)地址/數(shù)據(jù)線上繼續(xù)發(fā)送要寫的數(shù)據(jù),或者從存儲器或I/O端口讀入數(shù)據(jù)采樣READY線,若有效(高電平),則進(jìn)入T4周期,若無效,則說明外設(shè)沒準(zhǔn)備好,插入Tw周期Tw狀態(tài):T4狀態(tài):在T4開始時鐘的下降沿,把數(shù)據(jù)讀入到CPU或?qū)懭氲竭x中的地址單元同時其它狀態(tài)信號線恢復(fù)為初始狀態(tài),為執(zhí)行下一個總線周期做準(zhǔn)備TW等待狀態(tài):如果被選中的存儲器或I/O設(shè)備不能及時配合CPU傳送數(shù)據(jù),則必須通知CPU數(shù)據(jù)“未準(zhǔn)備好”,迫使CPU在T3狀態(tài)后插入等待狀態(tài)TW
。“未準(zhǔn)備好”信號必須在T3前送給CPU。如果在一個總線周期之后,不立即執(zhí)行下一個總線周期,或者當(dāng)指令隊列是滿的,執(zhí)行部件EU又沒有訪問總線的要求,這時BIU就處于空閑狀態(tài)。在空閑狀態(tài)中,可以包含一個或幾個時鐘周期。在空閑狀態(tài),總線高4位(A19/S6~A16/S3)仍輸出與前一總線周期相同的狀態(tài)信號。如果前一個總線周期是寫周期,則CPU在總線低16位(AD15~AD0)上繼續(xù)驅(qū)動數(shù)據(jù)信息;如果前一個總線周期是讀周期,則總線低16位(AD15~AD0)為高阻狀態(tài)。TI空閑狀態(tài):2.1.28086的引腳信號和工作模式
1、8086CPU的兩種組態(tài)■最小組態(tài)(模式)■
MN/MX接+5V■構(gòu)成小規(guī)模的應(yīng)用系統(tǒng),只有8086一個微處理器,■所有的總線控制信號均為8086產(chǎn)生,系統(tǒng)中的總線控制邏輯電路,減少到最少?!鲎畲蠼M態(tài)(模式)■MN/MX
接地■用于大型(中型)8086/8088系統(tǒng)中,系統(tǒng)總是包含有兩個或多個微處理器,其中一個主處理器就是8086或8088,其它的處理器稱協(xié)處理器,協(xié)助主處理器工作。■需要總線控制器來變換和組合控制信號。地址/數(shù)據(jù)線地址/狀態(tài)線非屏蔽中斷可屏蔽中斷請求最小最大模式控制為1,表示最小模式為0,表示最大模式讀信號總線保持請求信號總線保持相應(yīng)信號寫信號存儲器/IO控制信號為1,表示選中存儲器為0,表示選中IO接口數(shù)據(jù)發(fā)送/接收信號DT/R=1,發(fā)送DT/R=0,接收數(shù)據(jù)允許信號地址允許信號中斷響應(yīng)信號測試信號:執(zhí)行WAIT指令,CPU處于空轉(zhuǎn)等待;
其有效時,結(jié)束等待狀態(tài)。準(zhǔn)備好信號:表示內(nèi)存或I/O設(shè)備準(zhǔn)備好,可以進(jìn)行數(shù)據(jù)傳輸。復(fù)位信號2、8086/8088的引腳信號和功能8086/8088引腳信號注意點(diǎn):①8086/8088的數(shù)據(jù)線和地址線復(fù)用②8086有16根數(shù)據(jù)線③第21引腳(RESET)為輸入復(fù)位信號④第22引腳為“準(zhǔn)備好”(READY)信號⑤第23引腳(TEST)在多處理器系統(tǒng)中使用⑥第32引腳(RD)指出當(dāng)前要執(zhí)行一個輸入操作。最小模式中,第32腳和第28(M/IO)腳一起使用,以區(qū)分當(dāng)前進(jìn)行的是CPU和內(nèi)存還是I/O接口之間傳輸數(shù)據(jù)。⑦最小模式中,第29引腳和第28引腳一起指出是往內(nèi)存單元還是I/O接口寫數(shù)據(jù)。⑧高4位地址和狀態(tài)線復(fù)用8086/8088各引腳信號:(1)GND、VCC
地和電源
第1、20腳為地;第40腳為電源,8086/8088均用單一的+5V電壓。地址數(shù)據(jù)復(fù)用,輸入輸出,三態(tài)輸出。在一個總線周期的第一個時鐘周期,AD15~AD0
傳送地址信號,在其他的時鐘周期,作數(shù)據(jù)總線使用。(2)AD15~AD0
地址/數(shù)據(jù)總線(3)A19/S6~A16/S3
地址/狀態(tài)信號線輸出,三態(tài)。①
S6為低,表示8086當(dāng)前與總線相連②
S5=IF。在一個總線周期的T1,輸出地址信號的最高4位,在
其他的時鐘周期,輸出狀態(tài)信號S6~S3。S4S3意義00110101當(dāng)前正在使用ES附加段當(dāng)前正在使用SS堆棧段當(dāng)前正在使用CS或者未使用任何寄存器當(dāng)前正在使用DS數(shù)據(jù)段
A17/S4~A16/S3的組合指出當(dāng)前使用的段碼寄存器情況輸出,三態(tài)。(4)BHE/S7
高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳在總線周期的T1,為BHE信號,表示高8位數(shù)據(jù)線D15~D8
上的數(shù)據(jù)有效。在其他的總線周期,為S7狀態(tài)信號,8086中S7未作定義。BHEA001000011從偶地址開始讀寫1個字從偶地址單元或端口讀寫1個字節(jié)從奇地址單元或端口讀寫1個字節(jié)從奇地址開始讀寫1個字(第1個總線周期,低8位數(shù)字送AD15~AD8,第2個總線周期,高8位數(shù)字送AD7~AD0)操作所用的數(shù)據(jù)引腳10AD15~AD0AD7~AD0AD15~AD8AD15~AD8AD7~AD0
表2.2
BHE信號和A0的代碼組合和對應(yīng)的操作(5)NMI非屏蔽中斷請求信號輸入,有效。不受FLAG寄存器中IF的影響,CPU在當(dāng)前指令結(jié)束響應(yīng)中斷。(6)INTR可屏蔽的中斷請求信號輸入,高電平有效,表示外設(shè)向CPU提出中斷申請,若FR中IF=1,CPU在當(dāng)前指令后即響應(yīng)。輸出,三態(tài),低電平有效。(7)RD讀信號(8)CLK系統(tǒng)時鐘輸入信號最大時鐘頻率為5MHZ,占空比1/3。(9)RESET系統(tǒng)復(fù)位信號輸入,高電平有效,必須保持至少4個時鐘周期CPU中的部分內(nèi)容標(biāo)志位清除指令指針(IP)0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令隊列空復(fù)位重新啟動后,第一條指令地址FFFF0H。(10)READY
準(zhǔn)備好信號輸入,高電平有效。CPU訪問存儲器或外設(shè)時,READY有效,表示存儲器或外設(shè)已準(zhǔn)備好傳送數(shù)據(jù)。(11)TEST
測試信號輸入,低電平有效,與WAIT指令配合使用。WAIT指令TEST有效?執(zhí)行后續(xù)指令YesNo(12)MN/MX
最大/最小模式控制信號。3.最小模式最小模式下,第24~31腳的信號含義如下:①INTA
中斷響應(yīng)信號輸出低電平有效,是CPU對中斷請求信號INTR的響應(yīng)。在響應(yīng)過程中,CPU在該引腳連續(xù)送出兩個負(fù)脈沖,可用作外部中斷源中斷向量碼的讀選通信號。②ALE
地址鎖存允許信號輸出三態(tài)輸出,高電平有效,當(dāng)它為高電平時,表明CPU地址線上有有效地址。因此,它常作為鎖存控制信號將A19~A0鎖存到地址鎖存器。③DEN
數(shù)據(jù)允許信號三態(tài)輸出,該信號有效時,表示數(shù)據(jù)總線上有有效數(shù)據(jù)。它在每次訪問內(nèi)存或I/O端口以及在中斷響應(yīng)期間有效。它常用作數(shù)據(jù)總線驅(qū)動器的片選信號。④DT/R
數(shù)據(jù)收發(fā)信號輸出三態(tài)輸出,在使用8286/8287作為數(shù)據(jù)總線收發(fā)器時,其用來控制8286/8287的數(shù)據(jù)傳送方向。高電平時,進(jìn)行數(shù)據(jù)發(fā)送,低電平時,進(jìn)行數(shù)據(jù)接收。DMA方式時,被置為高組態(tài)。⑤M/IO
存儲器/輸入輸出控制信號輸出三態(tài)輸出,用來區(qū)分當(dāng)前操作是訪問存儲器還是訪問I/O端口。若此引腳輸出為高電平,訪問存儲器;若輸出為低電平,則訪問I/O端口。⑥WR
寫信號輸出低電平有效。該引腳有效,表示CPU當(dāng)前正在進(jìn)行存儲器或I/O寫操作。⑦HOLD
總線保持請求信號輸入高電平有效,當(dāng)某一總線上主控設(shè)備要占用系統(tǒng)總線時,通過此引腳向CPU提出請求。⑧HLDA
總線保持響應(yīng)信號輸出高電平有效。這是CPU對HOLD請求的響應(yīng)信號,當(dāng)CPU收到有效的HOLD信號后,就會對其做出響應(yīng):一方面使CPU的所有三態(tài)輸出的地址信號、數(shù)據(jù)信號和相應(yīng)的控制信號變?yōu)楦咦锠顟B(tài)(浮動狀態(tài));同時還輸出一個有效的HLDA,表示處理器現(xiàn)在已放棄對總線的控制。當(dāng)CPU檢測到HOLD信號變低后,就立即使HLDA變低,同時恢復(fù)對總線的控制。8086在最小模式下的典型配置:硬件連接特點(diǎn):①M(fèi)N/MX接+5V②有1片時鐘發(fā)生器8284A③有3片8282或74LS373,作為地址鎖存器。④系統(tǒng)所連存儲器和外設(shè)較多時,需用2片8286/8287。4.最大模式最大模式下,第24~31腳的信號含義如下:①Q(mào)S1、QS0
指令隊列狀態(tài)信號輸出這兩信號組合起來提供了8086內(nèi)部指令隊列的狀態(tài),以便外部對其動作進(jìn)行跟蹤。QS1、QS0的代碼組合和對應(yīng)的含義如表2.3所示。表2.3
QS1、QS0的代碼組合和對應(yīng)的含義QS1QS000110101無操作,隊列中指令未被取走從指令隊列的第一個字節(jié)中取走代碼隊列為空從隊列里取出的字節(jié)是指令的后續(xù)字節(jié)含義②S2、S1、S0
總線周期狀態(tài)信號輸出輸出,三態(tài)。這3個信號連接到總線控制器8288的輸入端,8288對它們譯碼后可以產(chǎn)生系統(tǒng)總線所需要的各種控制信號。三個信號的代碼組合以及對應(yīng)操作見表。表2.4
S2、S1、S0的代碼組合和對應(yīng)的操作010101010000111100110011操作過程發(fā)中斷響應(yīng)信號讀I/O端口寫I/O端口暫停取指令讀存儲器寫存儲器無源狀態(tài)③LOCK
總線封鎖信號輸出三態(tài)輸出、低電平有效。當(dāng)此信號有效時,系統(tǒng)中其他總線主部件不能占有總線。此信號由指令前綴LOCK使其有效,并一直保持到LOCK前綴后面的一條指令執(zhí)行完畢。另外,在8086的2個中斷響應(yīng)脈沖之間,LOCK信號也自動變?yōu)橛行щ娖?,以防其他總線主部件在中斷響應(yīng)過程中占有總線,使一個完整的中斷響應(yīng)過程被間斷。④RQ/GT1、RQ/GT0
總線請求信號輸入、總線授權(quán)信號輸出雙向。這2個信號可供CPU以外的2個處理器用以發(fā)出使用總線的請求信號和接收CPU對總線請求信號的應(yīng)答信號,總線請求信號和允許信號在同一引腳上傳輸,但方向相反。其中,RQ/GT0比RQ/GT1的優(yōu)先級要高。8086在最大模式下的典型配置:與最小模式的主要區(qū)別:外加有8288總線控制器①最大模式系統(tǒng)中,需要用總線控制器來變換與組合控制信號的原因在于:在最大模式的系統(tǒng)中,一般包含2個或多個處理器,這樣就要解決主處理器和協(xié)處理器之間的協(xié)調(diào)工作,和對系統(tǒng)總線的共享控制問題,8288總線控制器就起了這個作用。
②在最大模式的系統(tǒng)中,一般最大模式下的系統(tǒng)典型配置還有中斷優(yōu)先級管理部件。8259A用以對多個中斷源進(jìn)行中斷優(yōu)先級的管理,但如果中斷源不多,也可以不用中斷優(yōu)先級管理部件。2.1.38086的操作和時序指令周期、總線周期和時鐘周期:指令周期(InstructionCycle):CPU執(zhí)行一條指令所需要的時間??偩€周期(BusCycle):CPU與外部電路之間進(jìn)行一次數(shù)據(jù)傳送所需的時間。時鐘周期(ClockCycle):控制CPU基本操作的時鐘,是CPU處理動作的最小時間單位,又稱T狀態(tài)。一個指令周期由一個或若干個總線周期組成,一個總線周期至少包含4個T狀態(tài)。8086的主要操作:①系統(tǒng)的復(fù)位和啟動操作;②暫停操作;③總線操作;④中斷操作;⑤最小模式下的總線保持;⑥最大模式下的總線請求/允許。1.系統(tǒng)的復(fù)位和啟動操作
■
通過RESET引腳上的觸發(fā)信號來執(zhí)行?!鰪?fù)位脈沖的有效電平(高)必須超過4個時鐘周期(開啟電源引起的復(fù)位時間大于50μs)?!鰪?fù)位狀態(tài),CPU各內(nèi)部寄存器都被設(shè)置為初值。表2.5復(fù)位時各內(nèi)部寄存器的值■復(fù)位后地址總線浮空□物理地址為FFFF0+0000H(IP中)
=FFFF0H□一般在FFFF0H中,存放一條段交叉直接JMP指令,轉(zhuǎn)移到系統(tǒng)程序?qū)嶋H開始處。這個程序往往實現(xiàn)系統(tǒng)初始化、引導(dǎo)監(jiān)控程序或者引導(dǎo)操作系統(tǒng)等功能,這樣的程序叫做引導(dǎo)和裝配程序?!鰪?fù)位后,第一條指令的地址:8086的復(fù)位時序:2.
總線操作
CPU為了要與存儲器及I/O端口交換數(shù)據(jù),需要執(zhí)行一個總線周期,這就是總線操作。(1)最小方式下的總線讀操作(2)最小方式下的總線寫操作
(3)最大模式下的總線讀操作(4)最大模式下的總線寫操作(1)最小方式下的總線讀操作一個最基本的讀周期包含有4個狀態(tài),即T1、T2、T3、T4,必要時可插入1個或幾個TW。★T1狀態(tài)①
M/IO有效,用來指出本次讀周期是存貯器讀還是I/O讀,它一直保持到T4有效。②地址線信號有效,高4位通過地址/狀態(tài)線送出,低16位通過地址/數(shù)據(jù)線送出,用來指出操作對象的地址,即存貯器單元地址或I/O端口地址。③ALE有效,在最小模式的系統(tǒng)配置中我們講過,地址信號通過地址鎖存器8282鎖存,ALE即為8282的鎖存信號,下降沿有效。④BHE(對8088無用)有效,用來表示高8位數(shù)據(jù)總線上的信息有效,現(xiàn)在通過A15~A8傳送的是有效地址信息,BHE常作為奇地址存貯體的選通信號,因為奇地址存貯體中的信息總是通過高8位數(shù)據(jù)線來傳輸,而偶地址體的選通則用A0。⑤當(dāng)系統(tǒng)中配有總線驅(qū)動器時,T1使DT/R變低,用來表示本周期為讀周期,并通知總線驅(qū)動器接收數(shù)據(jù)?!颰2狀態(tài)⑥
高四位地址/狀態(tài)線送出狀態(tài)信息,S6~S3。⑦
低16位地址/數(shù)據(jù)線浮空,為下面?zhèn)魉蛿?shù)據(jù)準(zhǔn)備。⑧BHE/S7引腳成為S7(無定義)。⑨RD有效,表示要對存貯器或I/O端口進(jìn)行讀。⑩DEN有效,使得總線收發(fā)器(驅(qū)動器)可以傳輸數(shù)據(jù)?!颰3狀態(tài)
從存貯器或I/O端口讀出的數(shù)據(jù)送上數(shù)據(jù)總線(通過A15~A0)。★TW狀態(tài)若存貯器或外設(shè)速度較慢,不能及時送上數(shù)據(jù)的話,則通過READY線通知CPU,CPU在T3的前沿(即T2結(jié)束末的下降沿)檢測READY,若發(fā)現(xiàn)READY=0,則在T3結(jié)束后自動插入1個或幾個TW,并在每個TW的前沿處檢測READY,等到READY變高后,則自動脫離TW進(jìn)入T4。★T4狀態(tài)在T4與T3(或TW)的交界處(下降沿),采集數(shù)據(jù),使各控制及狀態(tài)線進(jìn)入無效。(2)最小方式下的總線寫操作最基本的總線寫周期也包括4個狀態(tài)T1~T4,必要時插入TW?!颰2狀態(tài)基本上同讀周期,只有此時DT/R為高不是低。★T1狀態(tài)與讀周期有兩點(diǎn)不同:①RD變成WR;②A15~A0不是浮空,而是發(fā)出要寫入存貯器/I/O端口的數(shù)據(jù)。
★T3、T4、TW三個狀態(tài)同讀周期。(3)最大模式下的總線讀操作◆
與最小模式下的讀周期相比,不同的就是讀信號考慮加入總線控制器后,它可以由S2、S1、S0
狀態(tài)信號來產(chǎn)生MRDC和IORC,這兩個信號與原RD相比,不僅明確指出了操作對象,而且信號的交流特性也好,所以我們下面就考慮用它們不用RD,若用RD信號的話,則最大模式與最小模式相同。★T1狀態(tài)基本同最小模式,不同的是ALE、DT/R是由總線控制器發(fā)出的。★T2狀態(tài)不同的是此時RD變成MRDC或IORC,送到存貯器或I/O端口?!颰3狀態(tài)數(shù)據(jù)已讀出送上數(shù)據(jù)總線,這時S2、S1
、S0
=111進(jìn)入無源狀態(tài)。若數(shù)據(jù)沒能及時讀出,則同最小模式一樣自動插入TW
?!颰4狀態(tài)數(shù)據(jù)消失,狀態(tài)信號進(jìn)入高阻,S2
、S1、S0根據(jù)下一個總線周期的類型進(jìn)行變化。(4)最大模式下的總線寫操作◆與上述最大模式下的總線讀周期相比,就是MRDC和IORC成為MWTC和IOWC,另外還有一組AMWC或AIOWC(比MWTC和IOWC提前一個T有效),這時MWTC(AMWC)或IOWC(AIOWC)取代最小模式下的WR。★T1狀態(tài)同讀周期?!颰2狀態(tài)
AMWC或AIOWC有效,要寫入的數(shù)據(jù)送上DB,DEN有效?!颰3狀態(tài)
MWTC或IOWC有效,比AMWC等慢一個T,S2
、S1、S0
進(jìn)入無源狀態(tài)。若需要的話,自動插入?!颰4狀態(tài)
AMWC等被撤消,S2
、S1
、S0根據(jù)下一總線周期的性質(zhì)變化,DEN失效,從而停止總線收發(fā)器的工作,其它引腳高阻。正常的8086總線周期:■
至少由4個時鐘周期(T1~T4)組成?!?/p>
在T1期間,A19/S6~A16/S3和AD15~AD0分別送出地址
A19~A16、A15~A0,同時送出地址鎖存允許信號ALE。■
外部電路利用ALE把這些地址信號鎖存到地址鎖存器中,即可在鎖存器的輸出端得到完整的20位地址信號A19~A0?!?/p>
在寫總線周期中,CPU從T2開始把數(shù)據(jù)送到總線上并維持至T4。■
在讀總線周期中,CPU在T3到T4期間讀入總線上的數(shù)據(jù)。(5)總線空操作只有在CPU與存儲器或I/O端口之間傳送數(shù)據(jù)時,CPU才執(zhí)行相應(yīng)的總線操作,而當(dāng)它們之間不傳送數(shù)據(jù)時,則進(jìn)入總線空閑周期,而總線空閑周期即對應(yīng)總線空操作。在總線空閑周期內(nèi),CPU的各種信號線上的狀態(tài)維持不變。要注意的是,總線空操作并不意味著CPU不工作,只是總線接口部件BIU不工作,而總線執(zhí)行部件EU仍在工作,如進(jìn)行計算、譯碼、傳送數(shù)據(jù)等。實質(zhì)上總線空操作期間,是BIU對EU的一種等待。3、中斷操作和中斷系統(tǒng)(1)8086的中斷分類
8086能處理256種不同的中斷,對應(yīng)的中斷類型碼為0~255??煞譃閮纱箢悾河布ㄍ獠浚┲袛嗪蛙浖▋?nèi)部)中斷。其中斷分類如右圖?!?/p>
硬件中斷:通過外部硬件產(chǎn)生,也稱外部中斷。□
非屏蔽中斷(類型號為2):通過CPU的NMI引腳進(jìn)入,不受IF的屏蔽,且在整個系統(tǒng)中只能有一個?!?/p>
可屏蔽中斷:通過CPU的INTR引腳進(jìn)入,只有當(dāng)IF為1時,才能進(jìn)入,否則,受到禁止。且在整個系統(tǒng)中允許多個?!?/p>
軟件中斷:CPU根據(jù)軟件中的某條指令或軟件對標(biāo)志寄存器中某個標(biāo)志的設(shè)置而產(chǎn)生。(2)中斷向量和中斷向量表
中斷向量:中斷處理子程序的入口地址,每個中斷類型對應(yīng)一個中斷向量。中斷向量并不是任意存放的。一個中斷向量占4個存儲單元,其中,前2個單元存放中斷處理子程序入口地址的偏移量(IP),低位在前,高位在后,后兩個單元存放中斷處理子程序入口地址的段地址(CS),同樣也是低位在前、高位在后。
中斷向量表:將這些中斷向量按一定的規(guī)律排列成一個表,就是所謂的中斷向量表,當(dāng)中斷源發(fā)出中斷請求時,即可查找該表,找出其中斷向量,就可轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。
中斷類型號×4——
可計算某個中斷類型的中斷向量在整個中斷向量表中的位置。如類型號為20H,則中斷向量的存放位置為:
20H×4=80H,如果0080H、0081H、0082H、0083H這4個單元的值分別為10H、20H、30H、40H,那該中斷處理子程序的入口地址為4030:2010。如類型號17H,中斷處理子程序的入口地址為2345:7890由于其中斷向量存放位置為0000:005CH處,所以,0段005CH、005DH、005EH、005FH這4個單元的值分別為90H、78H、45H、23H。中斷類型碼和中斷向量所在位置之間的對應(yīng)關(guān)系(3)硬件中斷NMI(非屏蔽中斷):中斷類型號為2,中斷處理子程序的入口地址為0段的0008H、0009H、
000AH、000BH。INTR(可屏蔽中斷):當(dāng)IF為1時,響應(yīng)這個中斷。(4)
硬件中斷的響應(yīng)和時序
可屏蔽中斷的響應(yīng)過程:①讀取中斷類型碼②將標(biāo)志寄存器的值推入堆棧③把標(biāo)志寄存器的IF和TF清零④將斷點(diǎn)保護(hù)到堆棧中⑤尋找中斷向量,轉(zhuǎn)入中斷處理程序
例如:中斷類型碼為0BH,則此中斷對應(yīng)的中斷向量的首字節(jié)在0BH×4=2CH處,于是CPU在0段的002CH~002FH處取得中斷向量,并將前兩字節(jié)內(nèi)容裝入IP,后兩字節(jié)內(nèi)容裝入CS。這樣,CPU便轉(zhuǎn)入對中斷處理子程序的執(zhí)行。
INTR信號是一個高電平觸發(fā)信號,且必須維持到CPU響應(yīng)中斷才結(jié)束。
NMI信號是一個上升沿觸發(fā)信號,且維持兩個時鐘周期的高電平。
CPU響應(yīng)NMI和INTR請求的區(qū)別:在響應(yīng)NMI請求時,并不從外部設(shè)備讀取中斷類型碼?!?/p>
注意:中斷響應(yīng):①NMI和INTR處理的區(qū)別:CPU遇到INTR請求時,必須判斷IF值,才能進(jìn)入中斷響應(yīng)過程,且進(jìn)入后,CPU要讀取此中斷類型碼,而NMI則不需要這兩步。
②
TF(單步中斷標(biāo)志,專用中斷,類型為1
)功能:只執(zhí)行當(dāng)前程序的一條指令,然后將各寄存器的內(nèi)容顯示出來,且在每執(zhí)行一條指令后自動產(chǎn)生類型為1的中斷。
③
在已經(jīng)進(jìn)入中斷處理子程序后,如果又遇到NMI引腳有非屏蔽中斷請求,則CPU仍然能夠響應(yīng)。
④
中斷處理程序結(jié)束時,返回斷點(diǎn)順序:先彈出IP和CS,再彈出標(biāo)志,然后按IP和CS的值返回主程序斷點(diǎn)處繼續(xù)執(zhí)行原來的程序。⑤某些情況下,即使IF為1,CPU也不能馬上響應(yīng)INTR,而是要等執(zhí)行完下一條指令后,才能響應(yīng)中斷。一般有下面這些情況:
■
CPU執(zhí)行封鎖指令時
■
執(zhí)行往段寄存器傳送數(shù)據(jù)的指令(即MOV和POP)⑥當(dāng)遇到等待指令或串操作指令時,允許在指令執(zhí)行過程中進(jìn)入中斷,但必須在一個基本動作完成之后響應(yīng)中斷。
堆棧區(qū)的正確指示:必須先修改SS的值,接著修改SP的值。中斷響應(yīng)的總線周期:
■
8086中斷響應(yīng)要用兩個總線周期。
■
前一總線周期接收外界中斷請求信號,而IF為1,且一條指令執(zhí)行完畢,那么,CPU會在該總線周期和下一總線周期,從INTA引腳往外設(shè)接口各發(fā)一個負(fù)脈沖。這兩個負(fù)脈沖從T2一直維持到T4狀態(tài)開始。
■
外設(shè)接收到第二個負(fù)脈沖后,立即將中斷類型碼送到數(shù)據(jù)總線的D7~D0,通過AD7~AD0傳輸給CPU。中斷響應(yīng)時序說明:①中斷響應(yīng)的第一個總線周期用來通知CPU準(zhǔn)備響應(yīng)中斷以及準(zhǔn)備好中斷類型碼;第二個總線周期中,CPU接收中斷類型碼。②外設(shè)中斷類型碼必須通過低8位數(shù)據(jù)線傳遞。④兩個總線周期之間插入3個空閑狀態(tài),也可為2個。⑤軟件中斷和非屏蔽中斷并不按照這種時序來響應(yīng)。③兩個周期中,地址/數(shù)據(jù)總線、BHE/S7引腳和地址/狀態(tài)線浮空。M/IO為低電平,ALE在每個總線周期的T1狀態(tài)輸出一個正脈沖。響應(yīng)一個可屏蔽中斷,CPU實際執(zhí)行的總線時序:第1步:執(zhí)行2個中斷響應(yīng)總線周期,之間用2至3個空閑狀態(tài)隔開。第2步:執(zhí)行1個總線寫周期,將標(biāo)志寄存器值推入堆棧。第3步:將IF和TF置成0,禁止可屏蔽中斷和單步中斷的出現(xiàn)。第4步:執(zhí)行1個總線寫周期,將CS內(nèi)容入棧。第5步:執(zhí)行1個總線寫周期,將IP內(nèi)容入棧。第6步:執(zhí)行1個總線讀周期,讀取中斷處理子程序入口地址的偏移量送入IP。第7步:執(zhí)行1個總線讀周期,讀取中斷處理子程序入口地址的段值送入CS。(5)
中斷處理子程序
①通過一系列推入堆棧指令來進(jìn)一步保護(hù)中斷現(xiàn)場②開放中斷,以允許級別較高的中斷請求進(jìn)入③中斷處理的具體內(nèi)容,中斷處理子程序的主要部分④彈出堆棧指令,各寄存器恢復(fù)進(jìn)入中斷處理時的值⑤中斷返回指令,使堆棧中保存的斷點(diǎn)值和標(biāo)志值分別裝入IP、CS和標(biāo)志寄存器(6)軟件中斷特點(diǎn):①用一條指令進(jìn)入中斷處理子程序,并且,中斷類型碼由指令提供。②不執(zhí)行中斷響應(yīng)總線周期,也不從數(shù)據(jù)總線讀取中斷類型碼。③不受中斷允許標(biāo)志IF的影響④執(zhí)行過程中可響應(yīng)外部硬件中斷⑤軟件中斷沒有隨機(jī)性4.最小模式下的總線保持★利用HOLD和HLDA信號實現(xiàn)總線保持★當(dāng)系統(tǒng)中除CPU之外的其它總線主模塊請求占用總線時產(chǎn)生該操作。5.最大模式下的總線請求/授權(quán)★利用RQ/GT實現(xiàn)總線請求/授權(quán)★當(dāng)系統(tǒng)中除CPU之外的其它總線主模塊請求占用總線時產(chǎn)生該操作。2.1.48086的存儲器編址和I/O編址
1.8086的存儲器編址
8086有20條地址總線,直接尋址能力為220=1M字節(jié)。用16進(jìn)制數(shù)表示1M字節(jié)的地址范圍應(yīng)為00000H~FFFFFH。8086地址總線是20位的,CPU中的寄存器是16位的,20位地址無法用16位寄存器表示,必須分段。段內(nèi)地址16位,每個段的大小最大可達(dá)64KB;實際可以根據(jù)需要來確定段大小,可以是1,100,1000,在64K范圍內(nèi)的任意字節(jié)數(shù)。IBMPC機(jī)對段的起始地址有限制, 即段不能從任意地址開始:
必須從任一小段(paragraph)的首地址開始。
小段的概念 從0地址開始每16字節(jié)為一小段, 對于16位地址總線,段內(nèi)存儲器小段地址如下:如:0000H,0001H,0002H,……,000EH,000FH一個小段
0010H,0011H,0012H,……,001EH,001FH 0020H,0021H,0022H,……,002EH,002FH ……FFF0H,F(xiàn)FF1H,F(xiàn)FF2H,……,F(xiàn)FFEH,F(xiàn)FFFH
其中:第一列就是每個小段的首地址。每個小段首地址特征:在16進(jìn)制表示的地址中,最低位為0H(即20位地址的低4位為0000B)。在1M字節(jié)的地址空間,共有64K個小段其首地址為:00000H00010H…41230H41240H…FFFE0HFFFF0HCPU訪問存儲器時,必須先確定所要訪問的存儲單元的物理地址才能取出(或存入)該單元中的內(nèi)容。20位物理地址形成:由16位段地址和16位偏移地址組成。
物理地址:
在1M字節(jié)存儲器里,每個存儲單元都有一個唯一的20位地址作為該存儲單元的物理地址。段地址:只取段起始地址高16位值。偏移地址:指在段內(nèi)某內(nèi)存單元物理地址相對段起始地址的偏移值。
物理地址計算方法:即把段地址左移4位再加上偏移地址值形成物理地址,寫成:
物理地址=16d段地址+偏移地址。
*每個存儲單元只有唯一的物理地址。
但可由不同的段地址和不同的偏移地址組成。訪問存儲器類型默認(rèn)段地址可指定段地址偏移地址物理地址計算取指令碼CS無IP(CS)16d+(IP)堆棧操作SS無SP(SS)16d+(SP)BP用作基址寄存器時SSCS,DS,ES有效地址EA(SS)16d+EA一般數(shù)據(jù)存取DSCS,ES,SS有效地址EA(DS)16d+EA字符串操作源地址DSCS,ES,SSSI(DS)16d+(SI)字符串操作目的地址ES無DI(ES)16d+(DI)8086/8088CPU各種類型訪問存儲器時,其地址成分的來源見下表所示。存儲單元的內(nèi)容:一個存儲單元有效的信息。機(jī)器字長是16位,大部分?jǐn)?shù)據(jù)以字節(jié)為單位表示,一個字存入存儲器占有相繼的二個單元:低位字節(jié)存入低地址,高位字節(jié)存入高地址。字單元的地址采用它的低地址來表示。例: 字單元:(0004H)=1234H,
字節(jié)單元:(0004H)=34H
同一個地址既可以看作字節(jié)單元地址,又可看作字單元地址,需要根據(jù)使用情況確定。字單元地址:可以是偶數(shù)也可以是奇數(shù),各段在存儲器中分配分4種情況討論:(1)由操作系統(tǒng)負(fù)責(zé)分配 一般情況,各段在存儲器中的分配是由操作系統(tǒng)負(fù)責(zé)。
每個段可以獨(dú)立地占用64K存儲區(qū)。(2)各段也可以允許重疊每個段的大小允許根據(jù)實際需要分配,不一定要占64KB。每個存儲單元的內(nèi)容不允許發(fā)生沖突。(段可重疊,但使用時防止沖突)。(3)在程序的首部設(shè)定各段寄存器的值
如果程序中的四個段都是64K的范圍之內(nèi),程序運(yùn)行時所需要的信息都在本程序所定義的段區(qū)之內(nèi),程序員只要在程序的首部設(shè)定各段寄存器的值就可以了。(4)動態(tài)地修改段寄存器的內(nèi)容如果程序的某一段(如數(shù)據(jù)段)在程序運(yùn)行過程中會超過64K空間,或者程序中可能訪問除本身四個段以外的其他段區(qū)的信息,那么在程序中必須動態(tài)地修改段寄存器的內(nèi)容。64KB為一段代碼段范圍:01000H~10FFFH各段允許重疊:代碼段:01000H~01FFFH數(shù)據(jù)段:02000H~027FFH堆棧段:02800H~028FFH存儲器用途固定的幾部分:●
00000H~003FFH共1KB內(nèi)存單元用于存放中斷向量?!?/p>
B0000H~B0F9FH約4KB是單色顯示器的顯示緩沖區(qū),存放單色顯示器當(dāng)前屏幕顯示字符所對應(yīng)的ASCII碼和屬性。●
B8000H~BBF3FH約16KB是彩色顯示器的顯示緩沖區(qū),存放彩色顯示器當(dāng)前屏幕像素所對應(yīng)的代碼。●
FFFF0H~FFFFFH是存儲器底部的16個單元。
系統(tǒng)加電復(fù)位時,會自動轉(zhuǎn)到FFFF0H單元執(zhí)行,
而在FFFF0H處存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)向系統(tǒng)初始化程序。2.8086的I/O編址
■
I/O端口的編址
I/O端口編址方式有兩種:I/O端口與內(nèi)存單元統(tǒng)一編址和
I/O端口與內(nèi)存單元獨(dú)立編址。
■
I/O端口與內(nèi)存單元統(tǒng)一編址
I/O端口和存儲單元按照存儲單元的編址方法統(tǒng)一編排地址號,I/O端口地址和存儲單元地址共同構(gòu)成一個統(tǒng)一的地址空間。例如,對于一個有16根地址線的微機(jī)系統(tǒng),若采用統(tǒng)一編址方式,其地址空間的結(jié)構(gòu)如下圖所示。I/O端口與內(nèi)存單元統(tǒng)一編址整個地址空間0000HXXXXHFFFFH(XXXX+1)H存儲器I/O端口采用統(tǒng)一編址方式下,CPU對I/O端口的輸入/輸出操作如同對存儲單元的讀/寫操作一樣,所有訪問內(nèi)存的指令同樣都可用于訪問I/O端口,因此無需專門的I/O指令,從而簡化了指令系統(tǒng)的設(shè)計;同時,對存儲器的各種尋址方式也同樣適用于對I/O端口的訪問,給使用者提供了很大的方便。但由于I/O端口占用了一部分存儲器地址空間,因而相對減少了內(nèi)存的地址可用范圍。
■
I/O端口與內(nèi)存單元獨(dú)立編址
在這種編址方式中,建立了兩個地址空間,一個為內(nèi)存地址空間,一個為I/O地址空間。內(nèi)存地址空間和I/O地址空間是相對獨(dú)立的,通過控制線M/IO來確定CPU到底要訪問內(nèi)存還是I/O端口。
這種編址要求CPU與I/O端口之間進(jìn)行數(shù)據(jù)傳輸時,使用專用的輸入指令I(lǐng)NAX,PORT和輸出指令OUTPORT,AX。
8086微機(jī)系統(tǒng)采用獨(dú)立編址方式。在8086/8088系統(tǒng)中,共有20根地址線對內(nèi)存尋址,內(nèi)存的地址范圍是00000H~FFFFFH;用地址總線的低16位對I/O端口尋址,所以I/O端口的地址范圍是0000H~FFFFH,如圖所示。I/O端口與內(nèi)存單元獨(dú)立編址00000HFFFFFH存儲器I/OFFFFH0000H采用獨(dú)立編址方式下,存儲器地址與I/O可以重疊,由M/IO信號區(qū)別是訪問的那個地址。CPU在訪問內(nèi)存和外設(shè)時,M/IO信號為1時,表示地址總線上的地址是一個內(nèi)存地址;為0時,則表示地址總線上的地址是一個I/O端口地址。
補(bǔ)充:Intel8086的寄存器結(jié)構(gòu)1、通用寄存器通用寄存器包括:
數(shù)據(jù)寄存器、地址指針寄存器、變址寄存器。
數(shù)據(jù)寄存器包括:AX、BX、CX、DX
。地址指針寄存器包括:SP、BP
。變址寄存器包括:SI、DI
。2、段寄存器
段寄存器包括:CS、SS、DS、ES
。3、控制寄存器
控制寄存器包括:IP、PSW。1、通用寄存器(1)數(shù)據(jù)寄存器
AX(累加器)、BX、CX、DX
作為通用寄存器。
用來暫存計算過程中所用到的操作數(shù),結(jié)果或其它信息。
訪問形式:
可以用字(16位)的形式訪問;
也可以用字節(jié)(8位)形式訪問,
它們的高8位記作:AH、BH、CH、DH
。 它們的低8位記作:AL、BL、CL、DL
。CX——Count可以作計數(shù)寄存器使用。 在循環(huán)LOOP指令和串處理指令中用作隱含計數(shù)器。 例: MOVCX,200HAGAIN: …… ……
LOOPAGAIN
;(CX)-1(CX),結(jié)果0轉(zhuǎn)AGAINDX——Data可以作為數(shù)據(jù)寄存器使用。 一般在雙字長乘除法運(yùn)算時,把DX和AX組合在一起存放一個雙字長(32位)數(shù),DX用來存放高16位;
對某些I/O操作DX可用來存放I/O的端口地址(端口地址256)。 例: MUL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度井蓋專利技術(shù)許可與轉(zhuǎn)讓合同3篇
- 2025年度新型建材鋼管租賃服務(wù)合同
- 二零二五年度家電產(chǎn)品銷售合同協(xié)議范本3篇
- 2025年度二手房屋買賣居間服務(wù)合同范本全新升級版
- 2025年度預(yù)制構(gòu)件裝配式建筑項目風(fēng)險評估與保險合同
- 二零二五年度跑步賽事場地設(shè)施租賃合同4篇
- 二零二五年度古建筑修繕泥工班組專業(yè)施工合同4篇
- 2025版民爆物品裝卸作業(yè)應(yīng)急救援預(yù)案合同3篇
- 2025年墻體改梁與裝配式建筑技術(shù)應(yīng)用合同3篇
- 2025版二零二五年度商鋪?zhàn)赓U合同租賃物保險條款3篇
- 礦物加工工程基礎(chǔ)知識單選題100道及答案解析
- 2024年同等學(xué)力申碩英語考試真題
- 世說新語原文及翻譯-副本
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進(jìn)數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 2024山西省文化旅游投資控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識進(jìn)社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓(xùn)課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測指標(biāo)匯總分析
- 深圳市物業(yè)專項維修資金管理系統(tǒng)操作手冊(電子票據(jù))
評論
0/150
提交評論