




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