




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第7章輸入輸出接口內(nèi)容提要 輸入輸出接口基礎(chǔ) 并行接口和并行接口芯片8255A 中斷系統(tǒng)和中斷控制芯片8259A DMA和DMA控制器8237 定時(shí)/計(jì)數(shù)器8254/8253的功能和編程微型計(jì)算機(jī)系統(tǒng)硬件組成7.1 輸入輸出接口基礎(chǔ)接口指CPU和外設(shè)之間通過系統(tǒng)總線進(jìn)行連接的電路部分,是CPU與外界進(jìn)行信息交換的中轉(zhuǎn)站。原始數(shù)據(jù)通過接口由輸入設(shè)備送進(jìn)去運(yùn)算結(jié)果通過接口由輸出設(shè)備送出來控制命令通過接口發(fā)出去現(xiàn)場數(shù)據(jù)通過接口從輸入設(shè)備送進(jìn)去接口和接口技術(shù)接口技術(shù)是研究CPU如何與外部世界進(jìn)行最佳耦合與匹配,實(shí)現(xiàn)雙方高效、可靠地交換信息的一門技術(shù),是軟件、硬件結(jié)合的體現(xiàn),是微機(jī)應(yīng)用的關(guān)鍵。為什么要用
2、接口電路?外設(shè)是用來實(shí)現(xiàn)人機(jī)交互的一些機(jī)電設(shè)備。外設(shè)處理信息的類型、速度、通信方式與CPU不匹配, 不能直接掛在總線上,必須通過接口和系統(tǒng)相連。接口和接口技術(shù)接口電路的作用數(shù)據(jù)總線控制總線地址總線接口電路外部設(shè)備數(shù)據(jù)線控制線狀態(tài)線外設(shè)必須通過接口電路與CPU相連接,輸入輸出操作是由復(fù)雜的I/O接口控制實(shí)現(xiàn)的。接口電路的作用是把計(jì)算機(jī)輸出的信息變成外設(shè)能夠識(shí)別的信息,把外設(shè)輸入的信息轉(zhuǎn)化成計(jì)算機(jī)所能接受的信息。接口電路的典型結(jié)構(gòu)數(shù)據(jù)緩沖器狀態(tài)寄存器控制寄存器接外設(shè)一側(cè) 主機(jī)外設(shè) 總線驅(qū)動(dòng)地址譯碼控制邏輯接CPU一側(cè)DBABCB數(shù)據(jù)信息控制信息狀態(tài)信息端口接口實(shí)現(xiàn)對(duì)CPU數(shù)據(jù)總線速度和驅(qū)動(dòng)能力的匹
3、配實(shí)現(xiàn)各寄存器端口尋址操作 實(shí)現(xiàn)接口電路中的各寄存器端口的讀/寫操作和時(shí)序控制接口電路的典型結(jié)構(gòu)從編程角度看,接口內(nèi)部主要包括一個(gè)或多個(gè)CPU可以進(jìn)行讀/寫操作的寄存器,又稱為I/O端口。各I/O端口由端口地址區(qū)分。接口電路的典型結(jié)構(gòu)按存放信息的不同,I/O端口可分為三種類型數(shù)據(jù)端口:用于存放CPU與外設(shè)間傳送的數(shù)據(jù)信息狀態(tài)端口:用于暫存外設(shè)的狀態(tài)信息控制端口:用于存放CPU對(duì)外設(shè)或接口的控制信息,控制外設(shè)或接口的工作方式。CPU對(duì)外設(shè)輸入/輸出的控制,是通過對(duì)接口電路中各I/O端口的讀/寫操作完成。 (讀操作用IN指令,寫操作用OUT指令)接口電路的典型結(jié)構(gòu)數(shù)據(jù)傳送方式:并行接口串行接口功能
4、選擇的靈活性:可編程接口,其芯片功能可以由指令來控制不可編程接口,即硬步線邏輯接口芯片通用性:通用接口(8253 定時(shí)/計(jì)數(shù)器、8259 中斷控制器、8237 DMA、8250 8251 串行接口、 8255 并行接口)專用接口(軟盤控制器 8271 8272、CRT 8275、鍵盤顯示 8279)I/O接口電路分類接口電路按通用性分為兩類:通用接口和專用接口通用接口:可供多種外部設(shè)備使用的標(biāo)準(zhǔn)接口,目的是使微機(jī)正常工作通用接口通常制造成集成電路芯片,稱為接口芯片。最初的IBM-PC使用了6塊接口芯片:8284、8288、8255、8259、8237、8253后來的微機(jī)將這些芯片集成為大規(guī)模集
5、成電路芯片,稱為芯片組。如82430TX芯片組,由兩片芯片組成:北橋:82439TX南橋:82371AB專用接口:為某種用途或某類外設(shè)而專門設(shè)計(jì)的接口電路,目的在于擴(kuò)充微機(jī)系統(tǒng)的功能。專用接口通常制造成專用接口卡,插在主板總線插槽上使用。通用接口和專用接口的界限并不嚴(yán)格。I/O接口電路分類輸入輸出的基本方式輸入輸出指令微機(jī)系統(tǒng)中存在著存儲(chǔ)器地址空間和輸入輸出空間。存儲(chǔ)器的每個(gè)字節(jié)單元都占存儲(chǔ)器地址空間的一個(gè)地址。與此相類似,在輸入輸出地址空間中,占據(jù)一個(gè)輸入輸出地址的稱為一個(gè)輸入輸出端口或簡稱端口(PORT)。CPU可以從端口讀入數(shù)據(jù),也可以向端口輸出數(shù)據(jù)。對(duì)8086微處理器,CPU從端口讀入
6、數(shù)據(jù)的指令稱為輸入指令,助記符為IN;CPU向端口輸出數(shù)據(jù)的指令稱為輸出指令,助記符為OUT。接口(interface)與端口(port)傳送這三種信息(數(shù)據(jù)、狀態(tài)、控制)的接口電路中的寄存器稱為數(shù)據(jù)、狀態(tài)和控制端口。不同的寄存器有不同的端口地址,即用地址來訪問。端口由一個(gè)或多個(gè)寄存器組成。接口由若干個(gè)端口加上相應(yīng)的控制邏輯組成,地址不是對(duì)接口而言。I/O端口的編址方式端口與存儲(chǔ)器分別獨(dú)立編址端口與存儲(chǔ)器統(tǒng)一編址端口與存儲(chǔ)器分別獨(dú)立編址例Intel的80X86系列、Z80系列特點(diǎn):不占用內(nèi)存空間設(shè)有專門的I/O指令對(duì)端口進(jìn)行讀寫, 對(duì)內(nèi)存操作的指令不能用于I/O端口操作I/O端口的編址方式例:
7、 對(duì)內(nèi)存操作 MOV 00000H , AL MOV DL , BX對(duì)端口操作 OUT 0000H, AL IN AL,0010HI/O端口的編址方式端口與存儲(chǔ)器統(tǒng)一編址例Motorola的M6800系列、Intel 51單片機(jī)系列特點(diǎn):I/O端口相當(dāng)于內(nèi)存的一部分,使內(nèi)存容量減小;對(duì)I/O端口的讀/寫與對(duì)存儲(chǔ)器的讀/寫相同,所有可對(duì)內(nèi)存操作的指令對(duì)I/O端口均可使用;指令系統(tǒng)中不專設(shè)I/O指令。I/O端口的編址方式端口與存儲(chǔ)器統(tǒng)一編址I/O端口的編址方式8088/8086輸入/輸出指令8088/8086CPU采用I/O端口與存儲(chǔ)器分別獨(dú)立編址??蓪ぶ?20= 1M個(gè)內(nèi)存單元內(nèi)存范圍00000
8、 FFFFFH內(nèi)存單元的地址有5種尋址可尋址216= 64 K個(gè)I/O端口I/O端口范圍0000 FFFFHI/O端口的地址由一8位二進(jìn)制數(shù) 直接尋址或DX寄存器間接尋址存儲(chǔ)器I/O端口指令的一般格式:名稱助記符和格式操作功能輸入IN AL, PORTIN AX, PORTIN AL, DXIN AX, DX(AL)(PORT)(AX)(PORT+1:PORT)(AL)(DX)(AX)(DX)+1:(DX)輸出OUT PORT, ALOUT PORT, AXOUT DX, ALOUT DX, AX(PORT)(AL) (PORT+1:PORT)(AX) (DX)(AL) (DX)+1:(DX)
9、(AX) port 為端口地址(直接尋址), 大小為0255 或0FFH對(duì)于IN指令,目的地址DST的尋址方式為寄存器方式,字節(jié)輸入時(shí)為AL,字輸入時(shí)為AX。源操作數(shù)的尋址方式有兩種: 直接尋址方式,即在SRC的位置上直接寫上代表端口地址的數(shù)或能求出值的表達(dá)式。其端口地址不能大于255。 寄存器間接尋址方式。間址寄存器為DX。這種方式需要在IN指令之前,把輸入端口地址傳送至DX寄存器,端口地址的大小沒有限制。對(duì)于OUT指令,源操作數(shù)的尋址方式和IN指令的目的操作數(shù)的尋址方式相同。輸入輸出指令的執(zhí)行不影響任何標(biāo)志位的狀態(tài)。8088/8086輸入/輸出指令輸入/輸出指令舉例(1)IN AL,28H
10、 若(28H端口) = 1010 1111B 執(zhí)行后(AL) = (28H端口)= 0AFH(2)IN AX,28H若(28H端口)= 1010 1111B (29H端口)= 0101 0000B執(zhí)行后(AL) = (28H端口)= 0AFH (AH) = (29H端口)= 50H(3)MOV DX,300H IN AL,DX 若(300H端口)= 69H執(zhí)行后(AL) = (300H端口)= 69H(1)OUT 21H, AL若(AL)= 1100 1100B執(zhí)行后(21H端口)= 0CCH(2)MOV DX ,21BH OUT DX,AL若(AL)= 1010 0110B執(zhí)行后(21BH端
11、口)= (AL) = 0A6H輸入/輸出指令舉例輸入/輸出指令(IN、OUT)特點(diǎn)(1) 累加器AL、AX的專用指令對(duì)輸入指令I(lǐng)N ,目的操作數(shù)只能為AL, 或AXIN AL, 21H IN AX, DX IN BX, 21H 對(duì)輸出指令OUT ,源操作數(shù)只能為AL, 或AXOUT 20H, ALOUT DX, AXOUT DX, CX 輸入/輸出指令(IN、OUT)特點(diǎn)(2)端口地址可為直接尋址方式或間接間接方式當(dāng)端口號(hào)在0FFH,即0255時(shí),可在指令中直接指定端口號(hào)例IN AL, 21HOUT 20H, AL當(dāng)端口號(hào)FFH,即255時(shí),需把端口號(hào)放在DX寄存器中,DX是一個(gè)16位寄存器,
12、范圍在0FFFFH之間。當(dāng)端口號(hào)在0FFH,即0255時(shí),可在指令中直接指定端口號(hào),稱雙字節(jié)指令。當(dāng)端口號(hào)FFH,即255時(shí), 需把端口號(hào)放在DX寄存器中,稱單字節(jié)指令。例:指令 機(jī)器碼 IN AL, 21H E421 ;兩個(gè)字節(jié) OUT 20H, AL E620 IN AL, DX EC ;一個(gè)字節(jié) OUT DX, AL EE輸入/輸出指令(IN、OUT)特點(diǎn)(3)可進(jìn)行字節(jié)或字傳送由指令中AL或AX的類型決定 IN AL, 20H ;字節(jié)傳送 IN AX, 20H ;字傳送 IN AL, DX ;字節(jié)傳送 IN AX, DX ;字傳送 OUT 20H, AL;字節(jié)傳送 OUT 20H, A
13、X;字傳送 OUT DX, AL;字節(jié)傳送 OUT DX, AX;字傳送(4)輸入輸出指令的執(zhí)行不影響任何狀態(tài)標(biāo)志。輸入/輸出指令(IN、OUT)特點(diǎn)在實(shí)際數(shù)據(jù)傳輸過程中,有一個(gè)突出要解決的問題,就是主機(jī)與外部設(shè)備之間時(shí)間同步的問題,具體表現(xiàn)在:外部設(shè)備工作時(shí)有自己的定時(shí)機(jī)構(gòu),主機(jī)在運(yùn)行程序、執(zhí)行指令時(shí)也有自己的定時(shí)系統(tǒng),它們?cè)跁r(shí)間上是不同步的。輸入數(shù)據(jù)時(shí),CPU如何確定輸入設(shè)備已經(jīng)準(zhǔn)備好數(shù)據(jù),輸出數(shù)據(jù)時(shí),CPU如何確定輸出設(shè)備已經(jīng)準(zhǔn)備好接收數(shù)據(jù)。一個(gè)微機(jī)系統(tǒng)中,如果有多個(gè)外部設(shè)備存在,也就存在這種可能性:兩個(gè)或多個(gè)設(shè)備同時(shí)要求與主機(jī)交換信息。出現(xiàn)這種情況,CPU如何確定先響應(yīng)哪個(gè)設(shè)備的請(qǐng)求,
14、再響應(yīng)哪個(gè)設(shè)備的請(qǐng)求。輸入輸出同步問題 無條件傳送:傳送之前不查詢外設(shè)狀態(tài) 程序控制方式 查詢傳送:傳送之前查詢外設(shè)狀態(tài) 中斷方式:外設(shè)準(zhǔn)備好后向CPU申請(qǐng)中斷, CPU響應(yīng)中斷完成數(shù)據(jù)傳送。 DMA(直接存儲(chǔ)器存?。┓绞剑河蓪S糜布癉MA控制器” 控制內(nèi)存和外設(shè)之間直接傳送數(shù)據(jù)。 (不需要CPU干預(yù))數(shù)據(jù)輸入輸出的基本方式程序直接控制傳送方式 程序直接控制輸入輸出方式就是完全通過執(zhí)行程序?qū)崿F(xiàn)主機(jī)與外部設(shè)備之間的數(shù)據(jù)交換。無條件傳送方式:又稱同步方式,是最簡單的一種I/O控制方式外設(shè)已準(zhǔn)備好,不查詢外設(shè)的狀態(tài)輸入時(shí),外設(shè)的數(shù)據(jù)已送到三態(tài)緩沖器。輸出時(shí),CPU的輸出信息已送到輸出鎖存器的輸入端
15、多用于CPU與低速口之間的信息交換。如開關(guān),LED顯示器,它們總是被認(rèn)為處于“待命”狀態(tài)。條件(查詢)傳送方式程序測試外設(shè)的狀態(tài),若滿足,傳送, 不滿足,等待。多用于CPU與中速口之間的信息交換。數(shù)據(jù)傳送過程:CPU從接口讀取狀態(tài)字;CPU檢測狀態(tài)字的對(duì)應(yīng)位是否滿足“就緒” 條件,如果不滿足,回到第一步讀取狀態(tài)字;如狀態(tài)字表明外設(shè)已處于“就緒”狀態(tài),則傳送數(shù)據(jù)。程序直接控制I/O的程序結(jié)構(gòu)其他功能其他功能I/O指令傳輸數(shù)據(jù)從狀態(tài)端口讀入信息傳輸準(zhǔn)備好?YN 數(shù)據(jù)的傳輸靠執(zhí)行指令來實(shí)現(xiàn)。這就是說,程序直接控制輸入輸出每個(gè)數(shù)據(jù),必須執(zhí)行I/O指令,必須經(jīng)過微處理器中的寄存器AL和AX。 外部設(shè)備的
16、狀態(tài)信息用IN指令輸入,然后測試;主機(jī)用OUT指令向外設(shè)提供狀態(tài)信息,從而達(dá)到連絡(luò)的目的。這種輸入輸出方式的優(yōu)點(diǎn)是簡單、實(shí)現(xiàn)容易。但存在明顯的缺點(diǎn):第一,為了測試和等待外部設(shè)備作好傳輸數(shù)據(jù)的準(zhǔn)備常?;ㄙM(fèi)大量的時(shí)間。在這段時(shí)間內(nèi),程序不能完成其他任務(wù),所以使系統(tǒng)的時(shí)間利用率大大降低。第二,CPU在一段時(shí)間里只能和一個(gè)外部設(shè)備之間傳輸數(shù)據(jù),其它設(shè)備只能等待。第三,不能發(fā)現(xiàn)和處理預(yù)先無法估計(jì)的錯(cuò)誤和異?,F(xiàn)象。所以這種輸入輸出方式只適用于CPU數(shù)據(jù)處理任務(wù)不煩忙,而且外部設(shè)備數(shù)較少的情況。程序直接控制傳送方式特點(diǎn)使用查詢方式,CPU必須檢測接口電路的狀態(tài)寄存器,如果設(shè)備未準(zhǔn)備好,CPU就要不斷地查詢,
17、降低了CPU運(yùn)行效率中斷方式:CPU對(duì)一個(gè)隨機(jī)的請(qǐng)求進(jìn)行處理的過程。當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動(dòng)向CPU請(qǐng)求中斷,CPU響應(yīng)中斷后在中斷處理程序中與外設(shè)交換數(shù)據(jù)。若外設(shè)未準(zhǔn)備好,CPU可以執(zhí)行其他程序,提高了CPU的利用率每條指令完成后,CPU均可響應(yīng)中斷,因此當(dāng)設(shè)備準(zhǔn)備好時(shí),可及時(shí)與CPU交換數(shù)據(jù),實(shí)現(xiàn)了對(duì)信息的實(shí)時(shí)處理,提高了計(jì)算機(jī)的使用效率。程序中斷控制方式程序中斷控制方式硬件實(shí)現(xiàn)框圖程序中斷控制方式特點(diǎn) 雖然程序中斷功能參與了控制,但數(shù)據(jù)的傳輸仍然要靠在程序中排入I/O指令完成。外部設(shè)備要求與CPU傳輸數(shù)據(jù)的狀態(tài)信息,不是用指令輸入和測試的,而是從CPU的中斷請(qǐng)求輸入端直接加入的。中斷控
18、制輸入輸出是靠硬件和軟件相配合實(shí)現(xiàn)的。 DMA (Direct Memory Access)方式,即直接存儲(chǔ)器存取方式,是一種不需要CPU干預(yù)也不需要軟件介入的高速數(shù)據(jù)傳送方式。 這種傳送方式中,CPU只是啟動(dòng)DMA過程,但是不干預(yù)這一過程,這個(gè)DMA過程是由硬件自動(dòng)完成的,也不需要軟件的介入。 在DMA控制器(DMAC)的控制下,外設(shè)和存儲(chǔ)器利用數(shù)據(jù)總線直接進(jìn)行數(shù)據(jù)交換。存儲(chǔ)器直接存取方式首先,微處理器本身在設(shè)計(jì)時(shí)就能實(shí)現(xiàn)這種功能。8086的HOLD和HLDA這兩個(gè)引腳就是為這種I/O方式服務(wù)的。CPU將總線的控制權(quán)交給DMA控制器,使外部設(shè)備與存儲(chǔ)器之間有直接通路連通,并控制傳輸一個(gè)或多個(gè)
19、字節(jié)。其次,組成微機(jī)系統(tǒng)時(shí),還必須配有DMA控制器,共同組成DMA控制機(jī)構(gòu),實(shí)現(xiàn)DMA傳輸所需要的全部功能。優(yōu)點(diǎn):由于在數(shù)據(jù)傳輸時(shí)沒有程序和指令介入,CPU只是暫停一個(gè)或幾個(gè)總線周期的時(shí)間,CPU內(nèi)各寄存器的內(nèi)容沒有任何改變,所以CPU的時(shí)間利用率比前兩種I/O方式大大提高。這種I/O方式最適用于高速外部設(shè)備與存儲(chǔ)器之間交換成批數(shù)據(jù)的情況。缺點(diǎn):說沒有程序和指令介入僅僅是指數(shù)據(jù)傳輸期間,并不意味著DMA輸入輸出的全過程都沒有程序介入。恰恰相反,數(shù)據(jù)傳輸前的準(zhǔn)備工作,都是用程序預(yù)置于DMA控制器中的。存儲(chǔ)器直接存取方式接口和接口技術(shù)接口(Interface)的基本意思是交接界面,所以任何相關(guān)的異
20、體之間總存在著接口。兩個(gè)微機(jī)系統(tǒng),如果它們之間有數(shù)據(jù)往來,它們之間就存在接口;在一個(gè)微機(jī)系統(tǒng)內(nèi),由于各部分之間要交換信息,各部分之間也存在接口;就是微處理器內(nèi)部,各部分之間也存在接口。輸入輸出接口即輸入輸出界面,狹義地說,在IBM PC系列微機(jī)中,就是在主機(jī)的擴(kuò)充插槽上的系統(tǒng)級(jí)總線。因?yàn)槿魏卧O(shè)備,無論要增加什么輔助邏輯,最終都要通過系統(tǒng)總線與主板相連。I/O接口的組成框圖部分存儲(chǔ)器和控制邏輯并行打印機(jī)接口CRT顯示器接口RS232C串行接口磁盤機(jī)接口其他設(shè)備接口系統(tǒng)總線部分存儲(chǔ)器和控制邏輯I/O指令控制邏輯中斷控制機(jī)構(gòu)DMA控制機(jī)構(gòu)其 它I/O邏輯微處理器主板其他設(shè)備磁盤機(jī)顯示器打印機(jī)外設(shè)接口
21、在主機(jī)板與輸入輸出有關(guān)的邏輯包括微處理器支持訪問擴(kuò)充板上存儲(chǔ)器操作的邏輯,支持執(zhí)行輸入輸出指令的邏輯,支持外部中斷方式的以8259芯片為核心組成的中斷控制邏輯和支持存儲(chǔ)器直接讀寫(DMA)操作的以8237為核心組成的DMA控制邏輯。這些邏輯,一側(cè)與微處理器相連,受微處理器控制和管理,另一側(cè)則形成系統(tǒng)總線接到擴(kuò)充插槽的接點(diǎn)上,成為與輸入輸出接口板的物理連接點(diǎn)。此外主板上還有CMOS和8254組成的系統(tǒng)計(jì)時(shí)系統(tǒng)和鍵盤接口邏輯,它們不接入系統(tǒng)總線。I/O接口I/O控制邏輯從功能上總結(jié)如下:為執(zhí)行I/O指令服務(wù)的邏輯;實(shí)現(xiàn)中斷控制功能的邏輯;實(shí)現(xiàn)DMA控制的邏輯;某些外設(shè)的接口邏輯。接口一詞也與軟件有
22、關(guān)。接口與軟件的關(guān)系有兩方面的含義。一方面的含義是接口的軟件。接口的功能的實(shí)現(xiàn)常常包括軟件,輸入輸出接口一般都是由硬件和軟件共同支持完成的,接口的開發(fā)自然包括必要的軟件開發(fā)。另一方面含義是軟件的接口。許多系統(tǒng)軟件包含許多子程序。為減輕應(yīng)用軟件開發(fā)的負(fù)擔(dān),允許應(yīng)用軟件調(diào)用系統(tǒng)軟件中的子程序完成應(yīng)用軟件中某些要求的功能。接口與軟件IBM PC系統(tǒng)提供的接口資源基本配置的系統(tǒng)為I/O接口既提供了硬件資源又提供了軟件資源。 提供硬件資源包括:在擴(kuò)充插槽上提供了系統(tǒng)級(jí)總線;主板上有鍵盤接口邏輯和揚(yáng)聲器接口邏輯;主板上有以兩片8259中斷控制器為核心組成的中斷控制邏輯;主板上有以兩片8237DMA控制器為
23、核心組成的DMA傳送控制邏輯,共有8個(gè)數(shù)據(jù)通道,用于實(shí)現(xiàn)內(nèi)存與外設(shè)之間和內(nèi)存存儲(chǔ)區(qū)之間直接、快速、成批數(shù)據(jù)的傳送。主板上有一片8254定時(shí)計(jì)數(shù)器,有3個(gè)功能:第1個(gè)功能是用于當(dāng)日計(jì)時(shí),和CMOS共同組成定時(shí)計(jì)時(shí)系統(tǒng);第2個(gè)功能是為動(dòng)態(tài)存儲(chǔ)器刷新提供定時(shí)信號(hào);第3個(gè)功能是通過編程向揚(yáng)聲器提供聲音信號(hào)?;九渲玫南到y(tǒng)微機(jī)包含的I/O接口卡可能有不同的組合,但在功能上和編程上是兼容的。通常包含以下接口邏輯:顯示器接口;兩個(gè)標(biāo)準(zhǔn)(Centronics)的并行打印機(jī)接口;兩個(gè)標(biāo)準(zhǔn)(RS232)串行異步通信接口;磁盤驅(qū)動(dòng)器接口,通常能連接兩個(gè)軟盤驅(qū)動(dòng)器和兩個(gè)硬盤驅(qū)動(dòng)器。此外,系統(tǒng)總線中還提供了相當(dāng)容量的5
24、V、5V、12V和12V直流電源。IBM PC系統(tǒng)提供的接口資源主要包括DOS的功能調(diào)用和BIOS(Basic Input/Output System)調(diào)用。駐留在ROM中的BIOS給PC系列的不同微處理器提供了兼容的系統(tǒng)加電自檢、引導(dǎo)裝入、主要I/O設(shè)備的處理程序以及接口控制等功能模塊來處理所有的系統(tǒng)中斷。使用BIOS功能調(diào)用,給程序員編程帶來很大的方便。程序員不必了解硬件操作的具體細(xì)節(jié),直接使用指令設(shè)置參數(shù),并利用INT指令,中斷調(diào)用BIOS,所以利用BIOS功能編寫的程序簡潔,可讀性好。系統(tǒng)為I/O接口提供的軟件資源I/O指令所需的接口邏輯 IBM PC/XT系列微機(jī)I/O地址線可有16
25、根,最大可尋址I/O端口地址空間為64 K。由于IBM公司最初設(shè)計(jì)微機(jī)主板及規(guī)劃接口卡時(shí),采用了非完全譯碼方式,只將低10位地址線A0A9進(jìn)行譯碼,而不考慮高6位地址線A10A15,因此其I/O端口地址范圍是0000H03FFH,總共只有1024個(gè)端口,并且把前512個(gè)端口分配給了主板,后512個(gè)端口分配給了擴(kuò)展槽上的常規(guī)外設(shè)。后來在PC/AT系統(tǒng)中,又作了一些調(diào)整,其中前256個(gè)端口(000H0FFH)供系統(tǒng)板上的I/O接口芯片使用,后768個(gè)端口(100H3FFH)供擴(kuò)展槽上的I/O接口控制卡使用。I/O指令所需的接口邏輯無論哪種輸入輸出方式,I/O指令是實(shí)現(xiàn)輸入輸出控制的基礎(chǔ)。在外部設(shè)備
26、的接口邏輯中,必須有一部分邏輯能使I/O指令得以執(zhí)行。I/O指令執(zhí)行時(shí),都必須有I/O端口地址的選擇。端口地址的選擇與訪問存儲(chǔ)器時(shí)對(duì)存儲(chǔ)單元的地址選擇很相似,也是用譯碼器邏輯對(duì)系統(tǒng)總線中的地址總線進(jìn)行譯碼實(shí)現(xiàn)的。對(duì)于接口設(shè)計(jì)者來說,系統(tǒng)I/O端口地址分配十分重要。哪些地址已分配給了別的設(shè)備,哪些是計(jì)算機(jī)制造商為今后開發(fā)而保留的,哪些地址是空閑的,了解這些信息是計(jì)算機(jī)系統(tǒng)接口設(shè)計(jì)的首要工作。在開發(fā)一個(gè)I/O端口時(shí),必須先為它指定一個(gè)端口地址,并要設(shè)計(jì)一個(gè)地址譯碼器。在輸入端的地址狀態(tài)與指定的端口地址一致時(shí),譯碼器恰好輸出有效信號(hào),作為端口選擇信號(hào)。A9A2A1A0AENIORIOW74LS307
27、4LS2074LS3274LS3274LS32讀300H寫300H000110000000000000單端口地址譯碼電路應(yīng)該特別注意的是,系統(tǒng)總線中的AEN信號(hào)必須(經(jīng)過反相)參加譯碼。這是因?yàn)锳EN信號(hào)在DMA傳輸時(shí)為高電平,此時(shí)A9A0地址總線上將有存儲(chǔ)器地址選擇碼,有可能與指定的I/O端口地址相符,就可能發(fā)生這樣的錯(cuò)誤:在其它設(shè)備與存儲(chǔ)器之間進(jìn)行DMA傳輸,或利用DMA機(jī)構(gòu)進(jìn)行動(dòng)態(tài)存儲(chǔ)器刷新時(shí),I/O端口地址譯碼器的輸出端可能輸出不應(yīng)有的有效選擇信號(hào)。為了避免這種錯(cuò)誤發(fā)生,將AEN信號(hào)反相加入譯碼器與非門的輸入端,在DMA傳輸時(shí)就會(huì)封閉譯碼器的輸出。有些外部設(shè)備,一個(gè)設(shè)備就占用多個(gè)I/O
28、端口地址。例如一部簡單的并行打印機(jī)接口就占用3個(gè)端口,一個(gè)輸出打印字符碼,一個(gè)用于輸入打印機(jī)狀態(tài),一個(gè)輸出控制信號(hào)。這就需要選擇合適的端口地址譯碼電路。單端口地址譯碼電路多端口地址譯碼電路IBM PC/AT機(jī)的I/O端口地址分配用戶可以使用的I/O地址有: 1001EF 22026F 2802AF 30035F并行通信和串行通信通信指計(jì)算機(jī)與外設(shè),計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。通信的基本方法:串行通信和并行通信并行通信:8位或16位或32位數(shù)據(jù)同時(shí)傳輸, 速度快,信息率高,成本高串行通信:一位一位數(shù)據(jù)傳送(在一條線上順序傳送),成本低。實(shí)現(xiàn)并行通信的接口就是并行接口。一個(gè)并行接口可以設(shè)計(jì)為只用
29、來作為輸出接口,也可以只用來作為輸入接口,此外,還可以將它設(shè)計(jì)成既作為輸入又作為輸出的接口并行通信和串行通信串行通信:數(shù)據(jù)的各位依次由發(fā)送方到達(dá)目的地優(yōu)點(diǎn):遠(yuǎn)程,費(fèi)用低缺點(diǎn):通信速度慢應(yīng)用:長距離、中低速通信TDRD發(fā)送接收0110 1010并行通信和并行接口并行通信:數(shù)據(jù)的各位同時(shí)由發(fā)送方到達(dá)接收方優(yōu)點(diǎn):通信速度快缺點(diǎn):距離短,通信費(fèi)用高應(yīng)用:短距離、高速通信D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7發(fā)送接收并行通信和并行接口并行接口連接CPU與并行外設(shè),實(shí)現(xiàn)兩者間的并行通信,在信息傳送過程中,起到輸出鎖存和輸入緩沖的作用。并行接口的典型硬件結(jié)構(gòu)包括:一個(gè)或一個(gè)以上具有
30、鎖存或緩沖的數(shù)據(jù)端口與CPU進(jìn)行數(shù)據(jù)交換所必須的控制和狀態(tài)信號(hào)與外設(shè)進(jìn)行數(shù)據(jù)交換所必須的控制和狀態(tài)信號(hào)端口譯碼電路控制電路 一個(gè)控制寄存器 ,用來接收CPU對(duì)它的控制命令 一個(gè)狀態(tài)寄存器,提供各種狀態(tài)位供CPU查詢 輸入緩沖寄存器和輸出寄存器,實(shí)現(xiàn)數(shù)據(jù)輸入和輸出并行接口輸入設(shè)備CPU控制寄存器輸入緩沖寄存器輸出鎖存器狀態(tài)寄存器片選A0A1地址譯碼數(shù)據(jù)總線數(shù)據(jù)輸入數(shù)據(jù)輸入準(zhǔn)備好數(shù)據(jù)輸入響應(yīng)讀信號(hào)寫信號(hào)復(fù)位準(zhǔn)備好中斷請(qǐng)求并行接口的基本概念并行接口的輸出過程并行接口向CPU發(fā)出“準(zhǔn)備就緒”信號(hào)或者發(fā)出中斷請(qǐng)求信號(hào),表示端口寄存器(輸出鎖存器)中已經(jīng)作好接收數(shù)據(jù)的準(zhǔn)備,CPU可以發(fā)來數(shù)據(jù)了。CPU將數(shù)
31、據(jù)寫入輸出端口(鎖存器),并發(fā)送“回執(zhí)”信號(hào);接口收到“回執(zhí)”信號(hào)后,撤銷“準(zhǔn)備就緒”信號(hào)。并行接口向外設(shè)發(fā)出“數(shù)據(jù)準(zhǔn)備好”信號(hào)。外設(shè)取走數(shù)據(jù),并向接口發(fā)出“數(shù)據(jù)輸入響應(yīng)”信號(hào),表示外設(shè)已取走數(shù)據(jù)。并行接口撤銷“數(shù)據(jù)輸出準(zhǔn)備好”信號(hào),同時(shí)再次向CPU發(fā)出“準(zhǔn)備就緒”信號(hào)或者發(fā)出中斷請(qǐng)求信號(hào)。8255可編程并行通信接口8255A是Intel系列的8位并行接口芯片,通用性強(qiáng),使用靈活,可用程序設(shè)置改變芯片的工作方式,是一種常用的可編程并行接口芯片。具有兩個(gè)8位(A口和B口)和兩個(gè)4位(C口高/低4位)并行I/O端口的接口芯片。能適應(yīng)CPU與I/O接口之間的多種數(shù)據(jù)傳送方式的要求??蓤?zhí)行功能很強(qiáng),內(nèi)
32、容豐富的命令(方式字和控制字)為用戶如何根據(jù)外界條件(I/O設(shè)備需要哪些信號(hào)線以及它能提供哪些狀態(tài)線)來使用8255A構(gòu)成多種接口電路,組成微機(jī)應(yīng)用系統(tǒng)提供了靈活方便的編程環(huán)境。8255芯片內(nèi)部主要由控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄器組成。8255A內(nèi)部結(jié)構(gòu)框圖8255A內(nèi)部結(jié)構(gòu)由以下四部分組成: 數(shù)據(jù)端口A、B、C;A組控制和B組控制;讀/寫控制邏輯電路;數(shù)據(jù)總線緩沖器。 端口A: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入緩沖器,可作為數(shù)據(jù)輸入或輸出端口, 并工作于三種方式中的任何一種。端口B: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入緩沖器,可作為數(shù)據(jù)
33、輸入或輸出端口, 但不能工作于方式2。 8255A內(nèi)部結(jié)構(gòu)端口C: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入緩沖器, 可在方式字控制下分為兩個(gè)4位的端口(C端口上和下),每個(gè)4位端口都有4位的鎖存器, 用來配合端口A與端口B鎖存輸出控制信號(hào)和輸入狀態(tài)信號(hào),不能工作于方式1或2。A組和B組控制的作用如下: A組控制邏輯控制端口A及端口C的上半部; B組控制邏輯控制端口B及端口C的下半部。8255A內(nèi)部結(jié)構(gòu)8255A外部特性8255A芯片引腳信號(hào)1234567891011121314151617181920212223242526272829303132333435363738
34、39408255APA3PA2PA1PA0PA4PA5PA6PA7PB7PB6PB5PB4PB3PB2PB1PB0PC7PC6PC5PC4PC0PC1PC2PC3WRRESETD0D1D2D3D4D5D6D7VCCRDCSGNDA0A1 8255A是一個(gè)40引腳雙列直插的集成芯片其引腳分為五類:1、數(shù)據(jù)線2、地址線 3、控制線 4、I/O端口線5、電源與地線芯片引腳信號(hào)介紹和外設(shè)相連PA7PA0:A組數(shù)據(jù)信號(hào);PB7PB0:B組數(shù)據(jù)信號(hào);PC7PC0:C組數(shù)據(jù)信號(hào)。和CPU相連RESET:復(fù)位信號(hào),高電平有效。當(dāng)RESET信號(hào)來到時(shí),所有內(nèi)部寄存器都被清除,同時(shí)3個(gè)數(shù)據(jù)端口被自動(dòng)設(shè)為輸入端口。
35、D7D0:8255A的數(shù)據(jù)線,與系統(tǒng)總線相連。CS:芯片選擇信號(hào),低電平有效。只有CS有效時(shí),8255A被選中。RD:芯片讀出信號(hào),低電平有效。當(dāng)RD有效時(shí),CPU可以從8255A讀取輸入數(shù)據(jù)。WR:芯片寫入信號(hào),低電平有效。當(dāng)WR有效時(shí),CPU可以往8255中寫入控制字或數(shù)據(jù)。A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定當(dāng)A1A0的組合為00時(shí),選中A端口;為01時(shí),選中B端口;為10時(shí),選中C端口;為11時(shí),選中控制端口。芯片引腳信號(hào)介紹在8086系統(tǒng)中,采用16位數(shù)據(jù)總線,在進(jìn)行數(shù)據(jù)傳輸時(shí),CPU總是將低8位數(shù)據(jù)送往偶地址端口,而將高8位數(shù)據(jù)送往
36、奇地址端口;反過來,從偶地址端口取得的數(shù)據(jù)總是通過低8位數(shù)據(jù)線傳送給CPU。 8255A的D7D0接到系統(tǒng)總線的低8位時(shí),從CPU一邊看來,要求8255A的4個(gè)端口地址必須全為偶地址。為了滿足這個(gè)要求,在8086系統(tǒng)中,將8255A的A1端和地址總線的A2相連,而將8255A的A0端和地址總線的A1相連,并且CPU在對(duì)8255A的端口進(jìn)行訪問時(shí),將地址的A0位總是設(shè)置為0。芯片引腳信號(hào)介紹8255具有3個(gè)獨(dú)立的8位I/O并行數(shù)據(jù)端口(PA口、PB口和PC口),PC口也可作為2個(gè)獨(dú)立的4位I/O數(shù)據(jù)端口(C口上半部和C口下半部)。其中,PA口和PC口上半部為A組,PB口和PC口下半部為B組。作為
37、輸入時(shí)提供三態(tài)緩沖器功能,作為輸出時(shí)提供數(shù)據(jù)鎖存功能。8255有3種工作方式,方式0、方式1和方式2,能使用多種數(shù)據(jù)傳送方式完成CPU與I/O設(shè)備之間的數(shù)據(jù)交換,如無條件方式、查詢方式和中斷方式。8255A的基本功能8255A的基本功能方式0為基本的輸入輸出方式(無條件方式)PA口、PB口和PC口均可以工作在方式0。方式1為有聯(lián)絡(luò)信號(hào)的輸入輸出方式(查詢方式/中斷方式)PA口和PB口均可以工作在方式1。方式2為有聯(lián)絡(luò)信號(hào)的雙向輸入輸出方式(查詢方式/中斷方式)只有PA口可以工作在方式2。C口除用作數(shù)據(jù)端口外,當(dāng)8255工作在方式1(PA口和PB口)和方式2 (PA口)時(shí),C口的部分引腳作為固定
38、的聯(lián)絡(luò)信號(hào)線。PA口、PB口和PC口的工作方式是由CPU執(zhí)行OUT指令向8255A內(nèi)部的工作方式控制寄存器端口寫命令實(shí)現(xiàn)的。所以,一片8255A接口芯片內(nèi)部包含了PA口、PB口、PC口和方式控制寄存器端口四個(gè)I/O端口。8255A的基本功能8255A結(jié)構(gòu)與連接resetD7D0A9A2A1A0IORIOW片選譯碼數(shù)據(jù)緩沖器讀寫控制片內(nèi)譯碼CSRESETA1A0RDWRPC7PC0PB7PB0PA7PA0控制口D端口A端口C端口B +5VGNDD7D0外設(shè)8255A總線8255A端口的識(shí)別8255A的控制信號(hào)和傳輸動(dòng)作的對(duì)應(yīng)關(guān)系CSA1A0RDWR傳輸說明00001數(shù)據(jù)從端口A送數(shù)據(jù)總線0010
39、1數(shù)據(jù)從端口B送數(shù)據(jù)總線01001數(shù)據(jù)從端口C送數(shù)據(jù)總線00010數(shù)據(jù)從數(shù)據(jù)總線送端口A00110數(shù)據(jù)從數(shù)據(jù)總線送端口B01010數(shù)據(jù)從數(shù)據(jù)總線送端口C01110寫控制字1D7D0進(jìn)入高阻態(tài)01101非法的信號(hào)組合011D7D0進(jìn)入高阻態(tài)輸入輸出斷開3. 8255A的編程 在使用Intel 8255A時(shí),首先應(yīng)根據(jù)需要對(duì)它進(jìn)行初始化編程,在工作過程中若需改變工作方式或數(shù)據(jù)傳送方向等,也必須對(duì)其編程。實(shí)際上對(duì)8255A的編程十分簡單,就是通過CPU向其控制端口寫入相應(yīng)控制字實(shí)現(xiàn)。 工作方式選擇控制字 端口C置位/復(fù)位控制字 8255A的控制字 :8255A的編程8255A的控制字工作方式選擇控制
40、字 是芯片各端口的方式選擇控制字,它可以使8255A的3個(gè)數(shù)據(jù)端口工作在不同的工作方式。方式選擇控制字總是將3個(gè)數(shù)據(jù)端口分為兩組來設(shè)定工作方式,即端口A和端口C的高4位作為一組,端口B和端口C的低4位作為一組。端口C置位/復(fù)位控制字 是C端口按位置1置0控制字,它可以使C端口中的任何一位進(jìn)行置位和復(fù)位。方式選擇控制字 若要求使用8255的A口工作于方式1作為輸入,B口工作于方式0作為輸出,C口上半部輸入、下半部輸出。8255的端口地址為60H63H.控制字為 10111000B=0B8H初始化程序?yàn)?MOV AL,0B8HOUT 63H,ALC端口置1/置0控制字 需要特別指出的是,C端口置1
41、/置0控制字盡管是對(duì)端口C進(jìn)行操作,但此控制字必須寫入控制口,而不是寫入C端口。接上例,若A口工作于方式1作為輸入,要使用中斷傳送方式,則應(yīng)當(dāng)寫PC4的按位置位字: MOV AL,00001001B OUT 63H,AL0 D7 D6 D5 D4 D3 D2 D1 D01=置10=置0端口C置1/0控制字0 0 0 PC00 0 1 PC10 1 0 PC20 1 1 PC31 0 0 PC41 0 1 PC51 1 0 PC61 1 1 PC7兩個(gè)控制字的差別:工作方式控制字放在程序的開始部分;按位置位/復(fù)位控制字可放在初始化程序以后的任何地方。C端口置1/置0控制字 8255A的工作方式方
42、式0是一種基本輸入或輸出方式,它適用于無需握手信號(hào)的簡單輸入輸出應(yīng)用場合, 端口A、B、C都可作為輸入或輸出數(shù)據(jù)使用,輸出有鎖存而輸入無鎖存。 方式0的基本特點(diǎn)如下:任何一個(gè)端口可作為輸入口,也可作為輸出口,各端口之間沒有規(guī)定必然的關(guān)系。各個(gè)端口的輸入或輸出,可以有16種不同的組合,所以可以適用于多種場合。簡單的輸入/輸出方式,提供兩個(gè)八位口(A和B)和兩個(gè)四位口(PC7PC4,PC3PC0)。單向傳送,即一次初始化只能設(shè)置在一個(gè)方向上傳送數(shù)據(jù)??捎糜跓o條件傳送,也可用于查詢式傳送。在查詢方式時(shí),通常A口和B口作為數(shù)據(jù)口,C口的四位(高四位或低四位)做輸出口,輸出一些控制信號(hào),另四位規(guī)定為輸入
43、口,用來讀入外設(shè)的狀態(tài)。方式0也稱選通的輸入/輸出方式。在這種方式下,無論是輸入還是輸出都通過應(yīng)答關(guān)系實(shí)現(xiàn), 這時(shí)端口A或B用作數(shù)據(jù)口,端口C的一部分引腳用作握手信號(hào)線與中斷請(qǐng)求線。 方式1的基本特點(diǎn)如下:端口A和端口B可分別作為兩個(gè)數(shù)據(jù)口工作在方式1,并且任何一個(gè)端口可作為輸入口或輸出口。如果端口A和端口B只有一個(gè)端口工作于方式1,那么端口中就有3位被規(guī)定為配合方式1工作的信號(hào),此時(shí)另一個(gè)端口可以工作在方式0,端口C中的其他數(shù)據(jù)位也可以工作在方式0。方式1方式1當(dāng)端口A工作在方式1并作為輸入端口時(shí): PC4-選通信號(hào) 輸入端 PC5-輸入緩沖區(qū)滿信號(hào)輸出端IBFA PC3 -中斷請(qǐng)求信號(hào)輸出
44、端INTRA當(dāng)端口B工作在方式1并作為輸入端口時(shí): PC2-選通信號(hào) 輸入端 PC1-輸入緩沖區(qū)滿信號(hào)輸出端IBFB PC0 -中斷請(qǐng)求信號(hào)輸出端INTRB 當(dāng)端口A工作在方式1并作為輸出端口時(shí)PC7-輸出緩沖器滿信號(hào) 輸出端PC6-外設(shè)接收數(shù)據(jù)后的響應(yīng)信號(hào) 輸入端PC3 -中斷請(qǐng)求信號(hào)INTRA輸出端當(dāng)端口B工作在方式1并作為輸出端口時(shí)PC1 -輸出緩沖器滿信號(hào) 輸出端PC2 -外設(shè)接收數(shù)據(jù)后的響應(yīng)信號(hào) 輸入端PC0 -中斷請(qǐng)求信號(hào)INTRB輸出端。 方式1端口A和端口B都工作在方式1,那么端口C中就有6位被規(guī)定為配合方式1工作的信號(hào),剩下的2位,仍可作為輸入或輸出。方式1也稱選通的雙向I/
45、O方式,僅適用于端口A, 這時(shí)A口的PA7PA0作為雙向的數(shù)據(jù)總線, 端口C有5條引腳用作端口A的握手信號(hào)線和中斷請(qǐng)求線,而B口和C口余下的3位仍可工作于方式0或1。方式28255A的初始化例. 設(shè)分配給8255A的端口地址為280H283H。將8255A的PA口設(shè)置成方式0輸出,PB口設(shè)置成方式1輸入,PC口設(shè)置成方式0輸出。試編寫8255A的初始化程序。地址分析對(duì)應(yīng)280H端口的地址信號(hào)為(取A9A0):初始化程序MOV DX,283HMOV AL,10000110B ; 86HOUT DX,AL ;若欲將PC2置1,PC口位管理方法如下MOV AL,0XXX0101BOUT DX,AL8
46、255應(yīng)用舉例要求使用程序直接控制I/O方式來輸出存儲(chǔ)器BUF緩沖區(qū)的10個(gè)字符,8255工作于方式0,打印機(jī)的STB信號(hào)的有效形式為上升沿,8255地址分配如下:A口地址80H,B口地址82H,C口地址84H,控制端口地址86H。工作方式設(shè)置10000001 DATA SEGMENT BUF DB 10 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, 10000001B ;設(shè)置工作方式 OUT 86H, AL LEA SI, BUF MOV CX, 10
47、WAITP: IN AL, 84H;讀打印機(jī)的狀態(tài)(PC2) TEST AL, 04H JNZ WAITP MOV AL, SI INC SI8255應(yīng)用舉例 OUT 80H, AL;將數(shù)據(jù)寫入端口A MOV AL, 00001100B;STB的上升沿?cái)?shù)據(jù)輸出到打印機(jī) OUT 86H, AL INC AL OUT 86H, AL LOOP WAITP MOV AH, 4CH INT 21H CODE ENDS END START8255應(yīng)用舉例7.2中斷系統(tǒng)在微機(jī)系統(tǒng)中,中斷功能是靠微處理器本身的功能和與之配合的外部邏輯共同實(shí)現(xiàn)的。這種外部邏輯通常是以中斷控制器為核心組成的。中斷是指CPU暫停
48、正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行處理中斷事件的中斷服務(wù)程序,待執(zhí)行完中斷服務(wù)程序再返回到原被中斷的程序繼續(xù)執(zhí)行。通常引起中斷的事件稱為中斷源。中斷的種類中斷外部硬中斷可屏蔽中斷(INTR)非可屏蔽中斷(NMI)內(nèi)部中斷軟中斷(INT指令)異常中斷陷阱中斷故障中斷終止 中斷最初是作為處理器與外部設(shè)備交換信息的一種控制方式提出的。由此,最初的中斷全部是對(duì)外部設(shè)備而言的,稱為外部中斷或硬件中斷。 隨著計(jì)算機(jī)技術(shù)的發(fā)展,中斷的范圍也隨之?dāng)U大,出現(xiàn)了內(nèi)部軟件中斷的概念,它是為解決機(jī)器內(nèi)部運(yùn)行時(shí)出現(xiàn)的異常以及為編程方便而提出的。外部硬中斷外部硬中斷:是微處理器外部事件發(fā)生,產(chǎn)生中斷請(qǐng)求信號(hào),中斷請(qǐng)求信號(hào)再通過微處
49、理器芯片上的接受中斷請(qǐng)求信號(hào)的引腳,加入微處理器而出現(xiàn)的中斷。CPU芯片上有兩個(gè)引腳用于接受外部中斷請(qǐng)求信號(hào): INTR 和NMI ,分別接受可屏蔽中斷請(qǐng)求和非可屏蔽中斷請(qǐng)求?!翱善帘巍焙汀胺强善帘巍笔侵窩PU的PSW寄存器(標(biāo)志寄存器)中的IF控制位對(duì)中斷響應(yīng)是否存在控制作用??善帘瓮獠恐袛嗫善帘沃袛嗟闹袛嗾?qǐng)求信號(hào)通過CPU的INTR引腳產(chǎn)生??善帘沃袛嗍鞘躀F位控制的中斷:若IF位為1,CPU將能響應(yīng)可屏蔽中斷的中斷請(qǐng)求,稱為開中斷狀態(tài),置IF為1的指令STI稱為開中斷指令;若IF為0,就關(guān)閉CPU響應(yīng)可屏蔽中斷的中斷請(qǐng)求,稱為關(guān)中斷狀態(tài),清除IF的指令CLI稱為關(guān)中斷指令。處理器只有一個(gè)
50、INTR引腳可以接受外部可屏蔽中斷請(qǐng)求,為了管理眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器8259。PC系列機(jī)通過兩片8259級(jí)連可以響應(yīng)15個(gè)外部中斷源。常規(guī)外部設(shè)備(鍵盤、打印機(jī)、串行異步通信接口,自行開發(fā)的接口設(shè)備或?qū)S媒涌诘龋弥袛鄼C(jī)制和CPU交換信息,都利用可屏蔽中斷。非可屏蔽外部中斷為外部緊急請(qǐng)求提供服務(wù)的中斷,通過CPU的NMI引腳產(chǎn)生。NMI輸入是上升沿觸發(fā)的,只要NMI輸入端上出現(xiàn)由0到1的跳變,一個(gè)中斷服務(wù)請(qǐng)求就被鎖存在CPU中,與IF標(biāo)志的狀態(tài)無關(guān)。使用非屏蔽中斷的典型例子是電源故障中斷。內(nèi)部中斷內(nèi)部中斷:中斷源在CPU內(nèi)部。由于CPU主要的工作就是執(zhí)行程序中的
51、指令,因此內(nèi)部中斷都將涉及到指令的執(zhí)行。內(nèi)部中斷分為:軟中斷和異常中斷兩類。軟中斷:是中斷指令I(lǐng)NT執(zhí)行時(shí)所產(chǎn)生的中斷,同其它中斷一樣,將轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序。軟件中斷進(jìn)一步分為BIOS中斷(BIOS功能調(diào)用)和DOS中斷(DOS功能調(diào)用)軟中斷問題: INT指令是作為指令排入程序中的,那么INT的位置是編程者設(shè)定的,執(zhí)行INT就是要調(diào)用一個(gè)子程序。為什么不把這個(gè)子程序直接排在INT指令的位置上或者用CALL指令調(diào)用這個(gè)子程序呢?用軟中斷到底干什么?軟中斷回答:軟中斷是用匯編語言編程時(shí),用戶的應(yīng)用程序調(diào)用系統(tǒng)軟件中的子程序的主要方法。系統(tǒng)軟件特別在ROM BIOS和常駐內(nèi)存的操作系統(tǒng)中,有設(shè)
52、計(jì)好的子程序可作為系統(tǒng)資源供用戶使用。在高級(jí)語言編程時(shí),這些系統(tǒng)子程序常以應(yīng)用程序接口函數(shù)的形式被調(diào)用。在匯編語言編程時(shí),INT指令的作用同應(yīng)用接口函數(shù)的作用一樣,用于調(diào)用系統(tǒng)資源。INT 21H指令的功能就是用軟中斷來實(shí)現(xiàn)應(yīng)用程序調(diào)用系統(tǒng)程序。異常中斷異常中斷:分為故障中斷、陷阱中斷(或自陷中斷)和終止三種。故障中斷:在指令執(zhí)行之前已經(jīng)檢測出不具備正確執(zhí)行指令的條件,從而引起的中斷。例如,除法指令執(zhí)行前已經(jīng)檢測出除數(shù)為零或由于除數(shù)太小不能得到合理的商值時(shí),將產(chǎn)生故障中斷,通知用戶出現(xiàn)了除法錯(cuò)誤(divide error)。特點(diǎn):中斷服務(wù)程序返回后重新執(zhí)行被中斷的指令。陷阱中斷:在指令執(zhí)行時(shí),
53、由于滿足了陷阱條件引起中斷,即本條指令已經(jīng)執(zhí)行結(jié)束,在中斷返回時(shí),不重新執(zhí)行本條指令而是執(zhí)行下一條指令。例如,當(dāng)將PSW中的TF控制標(biāo)志位置1后(設(shè)置了陷阱條件),CPU每執(zhí)行完一條指令都將產(chǎn)生一次中斷。用DEBUG程序調(diào)試程序時(shí),執(zhí)行有斷點(diǎn)的G命令就利用了這種中斷。異常中斷終止:不能準(zhǔn)確確定引起異常條件的指令位置。終止將造成停機(jī)。例如,在進(jìn)入某種異常中斷處理程序后又出現(xiàn)另一種異常條件,引發(fā)雙重異常中斷,若再發(fā)生第3次異常中斷條件,再繼續(xù)操作無意義,進(jìn)入停機(jī)狀態(tài)。在微處理器中,不同的中斷是以中斷類型號(hào)來區(qū)別的。每種中斷配以固定的中斷類型號(hào)。在中斷發(fā)生時(shí),借助中斷類型號(hào),能使程序轉(zhuǎn)入相對(duì)應(yīng)的中斷
54、服務(wù)程序。中斷類型號(hào)的范圍為0255,即最多256個(gè)。其中,由中斷指令產(chǎn)生的軟中斷,其中斷類型號(hào)由指令本身給出,INT n指令中的n即是中斷類型號(hào)。中斷類型號(hào)中斷向量表和中斷描述符如何獲得中斷服務(wù)程序的入口地址?一是依據(jù)每種中斷有自己的中斷類型號(hào);再者與中斷類型號(hào)相適應(yīng),在實(shí)模式下有中斷向量表,在保護(hù)模式下有中斷描述符表IDT。中斷向量表 中斷類型號(hào)通過一個(gè)地址指針表與中斷服務(wù)程序的入 口地址相聯(lián),在實(shí)模式下,該表稱為中斷向量表。 中斷向量表包含256個(gè)中斷向量。每個(gè)中斷向量包含兩個(gè)字(4個(gè)字節(jié)),高地址字為中斷服務(wù)程序所在代碼段的段基址,低地址字為代碼段中中斷服務(wù)程序第一條指令的偏移量。中斷
55、類型號(hào)與中斷向量地址的對(duì)應(yīng)關(guān)系類型0時(shí)置入IP類型0時(shí)置入CS類型N時(shí)置入IP類型1時(shí)置入IP類型1時(shí)置入CS類型N時(shí)置入CS類型255時(shí)置入IP類型255時(shí)置入CS類型0指針類型1指針類型2指針類型N指針類型255指針0000000004000084N003FC00400保留用于除出錯(cuò)保留用于單步陷阱(TF為1時(shí))保留用于非可屏蔽中斷中斷向量和中斷向量表在實(shí)模式下,存儲(chǔ)器地址最低的1024單元,即地址0000H03FFH,專用于存儲(chǔ)各種中斷服務(wù)程序的入口地址。每4個(gè)單元存放一個(gè)中斷服務(wù)程序入口,其中前兩個(gè)單元的16位是入口地址的段內(nèi)偏移地址,后兩個(gè)單元的16位是入口地址的段地址。程序運(yùn)行轉(zhuǎn)入
56、中斷服務(wù)程序時(shí),入口地址的段內(nèi)偏移地址部分將裝入IP中,入口地址的段地址部分裝入CS。中斷服務(wù)程序的32位以邏輯地址形式表示的入口地址稱為中斷向量或中斷指針。存儲(chǔ)器地址最低的1024個(gè)單元可存放256種中斷向量,這個(gè)專用于存儲(chǔ)向量的存儲(chǔ)區(qū)稱為中斷向量表。中斷類型號(hào)與中斷向量表的關(guān)系中斷類型號(hào)是訪問中斷向量表的索引號(hào),中斷向量在中斷向量表中的存儲(chǔ)順序是以中斷類型號(hào)為索引的。中斷類型號(hào)乘以4就是該種中斷向量在中斷向量表的開始地址。中斷類型號(hào)為0,其中斷向量在向量表的00000H00003H地址。中斷類型號(hào)為1,其中斷向量在00004H00007H中斷類型號(hào)為255時(shí),其中斷向量應(yīng)在003FCH00
57、3FFH地址。 IBM PCXT機(jī)的中斷類型號(hào)的安排(一) IBM PCXT機(jī)的中斷類型號(hào)的安排(二)中斷類型號(hào)地址(H)中斷功能中斷類型號(hào)地址(H)中斷功能2080-83程序結(jié)束2698-9B絕對(duì)磁盤寫2184-87DOS系統(tǒng)調(diào)用279C-9F程序結(jié)束,駐留內(nèi)存2288-8B結(jié)束地址28A0-A3DOS內(nèi)部使用238C-8F中止處理292EA4-BBDOS保留2490-93錯(cuò)誤處理2FBC-BFDOS內(nèi)部使用2594-97絕對(duì)磁盤讀303FC0-FFDOS保留中斷優(yōu)先權(quán)與中斷嵌套通常一個(gè)系統(tǒng)有多個(gè)中斷源,而CPU同一時(shí)刻只能響應(yīng)一個(gè)中斷源的請(qǐng)求,那么當(dāng)多個(gè)中斷源同時(shí)請(qǐng)求中斷服務(wù)時(shí),應(yīng)該先響應(yīng)
58、哪一個(gè),有一個(gè)次序安排的問題。按中斷源的輕重緩急程度確定的優(yōu)先級(jí)別,稱為優(yōu)先級(jí)。除單步中斷外的內(nèi)部所有中斷的優(yōu)先權(quán)外部中斷對(duì)于外部中斷NMIINTR單步中斷內(nèi)部中斷和異常軟件中斷外部非屏蔽中斷(NMI)外部可屏蔽中斷(INTR)單步中斷優(yōu)先級(jí)遞增中斷嵌套當(dāng)CPU正在響應(yīng)某一中斷源的請(qǐng)求,執(zhí)行為其服務(wù)的中斷服務(wù)程序時(shí),如果有優(yōu)先級(jí)更高的中斷源發(fā)出請(qǐng)求,CPU將中止正在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入為新的中斷源服務(wù),等新的中斷服務(wù)程序執(zhí)行完后,再返回到被中止的中斷服務(wù)程序,這一過程稱為中斷嵌套。中斷嵌套可以有多級(jí),具體級(jí)數(shù)原則上不限,只取決于堆棧深度。1#中斷請(qǐng)求響應(yīng)返回1#中斷服務(wù)程序2#中斷請(qǐng)求響應(yīng)
59、返回2#中斷服務(wù)程序3#中斷請(qǐng)求響應(yīng)返回3#中斷服務(wù)程序原主程序中斷優(yōu)先級(jí)3#2#1#中斷優(yōu)先級(jí)與中斷嵌套中斷響應(yīng)和返回操作過程中斷響應(yīng)的操作過程,對(duì)于可屏蔽中斷、非可屏蔽中斷和內(nèi)部中斷,是不盡相同的??善帘沃袛嗟捻憫?yīng)操作在IF位為1(開中斷)情況下,從INTR端加入中斷請(qǐng)求信號(hào)開始,到進(jìn)入中斷服務(wù)程序?yàn)橹顾?jīng)過的一系列操作,稱為可屏蔽中斷的響應(yīng)過程。該過程包括如下操作:等待當(dāng)前指令結(jié)束,然后進(jìn)入中斷響應(yīng)周期。有幾種特殊情況需要說明。首先是帶有指令的前綴,不允許在前綴碼和指令碼之間響應(yīng)中斷。其次,對(duì)于目的地址是段寄存器的MOV和POP指令,本條指令之后不允許響應(yīng)中斷,還要執(zhí)行一條指令結(jié)束后才能
60、響應(yīng)中斷。從微處理器外部的中斷控制邏輯獲得中斷類型號(hào)。當(dāng)前的PSW、CS和IP的內(nèi)容依次壓入堆棧。清除PSW中的IF位和TF位為0。把中斷服務(wù)程序的入口地址置入IP和CS,即把地址為4n和4n1兩個(gè)單元的16位數(shù)作為中斷服務(wù)程序入口的偏移地址置入IP,把地址為4n2和4n3兩個(gè)單元的16位數(shù)作為中斷服務(wù)程序的段地址置入CS。可屏蔽中斷的響應(yīng)操作非可屏蔽的中斷請(qǐng)求在NMI端加入。CPU對(duì)它的響應(yīng)不受IF位的控制。與可屏蔽中斷一樣,非可屏蔽中斷也要等待當(dāng)前指令執(zhí)行完畢。因?yàn)榉强善帘沃袛嗟闹袛囝愋吞?hào)為2,是微處理器硬件決定的,所以不需要從外部取回一個(gè)字節(jié)的中斷類型號(hào)操作。非可屏蔽中斷的響應(yīng)過程所有的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 菜品保價(jià)協(xié)議書
- 后廚廚師長合同協(xié)議書
- 配套合作協(xié)議書
- 移交食堂協(xié)議書
- 貸款協(xié)商協(xié)議書
- 和企業(yè)結(jié)對(duì)共建協(xié)議書
- 蘇州拆除協(xié)議書
- 道路出行協(xié)議書
- 用證提車協(xié)議書
- 經(jīng)銷框架協(xié)議書
- 2023年新疆烏魯木齊一中自主招生物理試卷試題(含答案)
- (高清版)JTGT D31-06-2017 季節(jié)性凍土地區(qū)公路設(shè)計(jì)與施工技術(shù)規(guī)范
- 國開(河北)2024年《中外政治思想史》形成性考核1-4答案
- 巴金名著導(dǎo)讀《激流三部曲》
- 吸煙與肺結(jié)核雙重危害的防范
- 石油開采業(yè)的大數(shù)據(jù)應(yīng)用與數(shù)據(jù)分析
- 中心靜脈導(dǎo)管相關(guān)血流感染課件
- 風(fēng)濕免疫疾病的患者教育和自我管理
- 《冷凝器設(shè)計(jì)》課件
- PDF-規(guī)范標(biāo)準(zhǔn)資料
- (完整PPT)上海英文介紹
評(píng)論
0/150
提交評(píng)論