2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩132頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第 13 章 中斷系統(tǒng),,本章主要內(nèi)容,(1)中斷及中斷處理的基本概念(2)80x86實(shí)模式中斷系統(tǒng)(3)可編程中斷控制器8259A,13.1 基本概念,13.1.1 中斷的定義在程序運(yùn)行時(shí),系統(tǒng)外部、內(nèi)部或現(xiàn)行程序本身若出現(xiàn)緊急事件,處理器必須立即強(qiáng)行中止現(xiàn)行程序的運(yùn)行,改變機(jī)器的工作狀態(tài)并啟動(dòng)相應(yīng)的程序來處理這些事件,然后再恢復(fù)原來的程序運(yùn)行,這一過程稱為中斷。,13.1.2 中斷響應(yīng)和處理過程,CPU在執(zhí)行每條指

2、令的適當(dāng)時(shí)刻,檢測(cè)中斷請(qǐng)求信號(hào)。若發(fā)現(xiàn)中斷請(qǐng)求信號(hào)有效,對(duì)于可屏蔽中斷還必須CPU開放中斷,則在下一機(jī)器周期進(jìn)入中斷響應(yīng)周期。進(jìn)入中斷響應(yīng)周期后,中斷響應(yīng)和處理的過程如下:,,1. 關(guān)中斷CPU在響應(yīng)中斷時(shí),發(fā)出中斷響應(yīng)信號(hào)INTA,同時(shí)內(nèi)部自動(dòng)地關(guān)中斷,以禁止接受其他的中斷請(qǐng)求。2. 保存斷點(diǎn)把斷點(diǎn)處的指令指針I(yè)P值和CS值壓入堆棧,以使中斷處理完后能正確地返回主程序斷點(diǎn)。,,3. 識(shí)別中斷源CPU要對(duì)中斷請(qǐng)求進(jìn)行處理,必

3、須找到相應(yīng)的中斷服務(wù)程序的入口地址,這就是中斷的識(shí)別。4. 保護(hù)現(xiàn)場(chǎng)為了不使中斷服務(wù)程序的運(yùn)行影響主程序的狀態(tài),必須把斷點(diǎn)處有關(guān)寄存器(指在中斷服務(wù)程序中要使用的寄存器)的內(nèi)容以及標(biāo)志寄存器的狀態(tài)壓入堆棧保護(hù)。,,5. 執(zhí)行中斷服務(wù)程序在執(zhí)行中斷服務(wù)程序中,可在適當(dāng)時(shí)刻重新開放中斷,以便允許響應(yīng)較高優(yōu)先級(jí)的中斷。6. 恢復(fù)現(xiàn)場(chǎng)并返回即把中斷服務(wù)程序執(zhí)行前壓入堆棧的現(xiàn)場(chǎng)信息彈回原寄存器,然后執(zhí)行中斷返回指令,從而返回主程序繼續(xù)運(yùn)

4、行。,,在上述中斷響應(yīng)及處理的6項(xiàng)操作中,前3項(xiàng)是中斷響應(yīng)過程,一般由中斷系統(tǒng)硬件負(fù)責(zé)完成;后3項(xiàng)是中斷處理過程,通常是由用戶或系統(tǒng)程序設(shè)計(jì)者編制的中斷處理程序(軟件)負(fù)責(zé)完成。針對(duì)一個(gè)具體的系統(tǒng)或機(jī)型,中斷服務(wù)程序設(shè)計(jì)者應(yīng)該清楚該系統(tǒng)在中斷響應(yīng)時(shí),中斷響應(yīng)硬件完成了哪些操作(如程序狀態(tài)字PSW是否已被壓入堆棧),還需中斷處理軟件(中斷服務(wù)程序)完成哪些操作。,13.1.3 中斷優(yōu)先級(jí)和中斷嵌套,1. 中斷優(yōu)先級(jí)在實(shí)際系

5、統(tǒng)中,多個(gè)中斷請(qǐng)求可能同時(shí)出現(xiàn),但中斷系統(tǒng)只能按一定的次序來響應(yīng)和處理,這時(shí)CPU必須確定服務(wù)的次序,即根據(jù)中斷源的重要性和實(shí)時(shí)性,照顧到操作系統(tǒng)處理的方便,對(duì)中斷源的響應(yīng)次序進(jìn)行確定。這個(gè)響應(yīng)次序稱為中斷優(yōu)先級(jí)(priority)。,,通常,可用軟件查詢法確定中斷優(yōu)先級(jí),也可用硬件組成中斷優(yōu)先級(jí)編碼電路來實(shí)現(xiàn)。現(xiàn)代PC機(jī)中多采用可編程中斷控制器(如8259A)來處理中斷優(yōu)先級(jí)問題。(1) 軟件查尋法確定中斷優(yōu)先級(jí)采用軟件查詢法

6、解決中斷優(yōu)先級(jí)只需要少量硬件電路。如圖13.1所示,系統(tǒng)中有多種外部設(shè)備,將這些設(shè)備的中斷請(qǐng)求信號(hào)相“或”,從而產(chǎn)生一個(gè)總的中斷請(qǐng)求信號(hào)INTR發(fā)給CPU。,圖13.1 軟件查詢接口電路,,當(dāng)CPU響應(yīng)中斷請(qǐng)求進(jìn)入中斷處理程序后,必須在中斷處理程序的開始部分安排一段帶優(yōu)先級(jí)的查詢程序,查詢的先后順序就體現(xiàn)了不同設(shè)備的中斷優(yōu)先級(jí),即先查的設(shè)備具有較高的優(yōu)先級(jí),后查的設(shè)備具有較低的優(yōu)先級(jí)。 一般來說總是先查速度較快或是實(shí)時(shí)性較高的設(shè)備。

7、 軟件查詢的流程如圖13.2所示。,圖13.2 軟件查詢流程圖,,(2) 菊花鏈優(yōu)先級(jí)排隊(duì)電路菊花鏈優(yōu)先級(jí)排隊(duì)電路是一種優(yōu)先級(jí)管理的簡(jiǎn)單硬件方案。它是在每個(gè)設(shè)備接口設(shè)置一個(gè)簡(jiǎn)單的邏輯電路,以便根據(jù)優(yōu)先級(jí)順序來傳遞或截留CPU發(fā)出的中斷響應(yīng)信號(hào)INTA,以實(shí)現(xiàn)響應(yīng)中斷的優(yōu)先順序。典型的菊花鏈優(yōu)先級(jí)結(jié)構(gòu)如圖13.3(a) 所示。,圖13.3 菊花鏈優(yōu)先級(jí)結(jié)構(gòu)(a) 菊花鏈排隊(duì)電路,圖13.3 菊花鏈優(yōu)先級(jí)結(jié)構(gòu)(b) 菊花鏈邏輯,,

8、,,,,,,,,,,,,,,,,,,中斷請(qǐng)求信號(hào)(高電平有效),中斷響應(yīng)信號(hào)(低電平有效),INTR,,2. 中斷嵌套當(dāng)CPU正在執(zhí)行優(yōu)先級(jí)較低的中斷服務(wù)程序時(shí),允許響應(yīng)比它優(yōu)先級(jí)高的中斷請(qǐng)求,而將正在處理的中斷暫時(shí)掛起,這就是中斷嵌套。此時(shí),CPU首先為級(jí)別高的中斷服務(wù),待優(yōu)先級(jí)高的中斷服務(wù)結(jié)束后,再返回到剛才被中斷的較低的那一級(jí),繼續(xù)為它進(jìn)行中斷服務(wù)。如圖13.4所示。,圖13.4 中斷嵌套示意圖,,,,,STI,,

9、,IRET,,,,,STI,,,IRET,,,,,....,....,....,,中斷嵌套的深度(中斷服務(wù)程序又被中斷的層次)受到堆棧容量的限制。所以在編寫中斷服務(wù)程序時(shí),必須要考慮有足夠的堆棧單元來保留多次中斷的斷點(diǎn)信息及有關(guān)寄存器的內(nèi)容。,13.2 80x86實(shí)模式的中斷系統(tǒng),13.2.1 中斷的分類中斷分類的方式很多。根據(jù)進(jìn)入中斷的方式可分為自愿中斷和強(qiáng)迫中斷。根據(jù)其重要性可分為可屏蔽中斷和不可屏蔽

10、中斷。根據(jù)中斷源的位置可分為內(nèi)部中斷和外部中斷等等。如圖13.5所示。,圖13.5 80x86實(shí)模式系統(tǒng)的中斷分類,INT n 指令,中 斷 邏 輯,斷點(diǎn)中斷(INT 3),溢出中斷(INTO, OF=1),單步中斷(TF=1),除法錯(cuò)中斷,,,,,,,,,,軟件中斷(內(nèi)部中斷),,非屏蔽中斷請(qǐng)求,,,,,,,中斷控制器(8259A),,NMI,INTR,,,,,,,,,IRQ0,....,IRQ7,

11、,可 屏 蔽 中 斷,硬件中斷(外部中斷),關(guān)于中斷分類的補(bǔ)充說明,為了支持多任務(wù)和虛擬存儲(chǔ)器等功能,80386及以上CPU 把外部中斷稱為“中斷”(interrupt),把內(nèi)部中斷稱為“異常”(exception) 。與8086一樣,它也最多處理256種中斷和異常。根據(jù)引起異常的程序是否可被恢復(fù)和恢復(fù)點(diǎn)的不同,又把異常分為三類: 故障(fault) 陷阱(trap) 中止(abort) 把對(duì)應(yīng)的

12、異常處理程序分別稱為故障處理程序、陷阱處理程序和中止處理程序。,,故障是在引起異常的指令之前,把異常通知給系統(tǒng)的一種異常。故障的特點(diǎn)是可以排除的。 例如,在執(zhí)行一條指令時(shí),如果發(fā)現(xiàn)它要訪問的段不在內(nèi)存中,那磨停止該指令的執(zhí)行,并產(chǎn)生一個(gè)段不存在異常,對(duì)應(yīng)的故障處理程序可通過從外存加載該段到內(nèi)存的方法來排除故障。之后,原引起異常的指令就可以繼續(xù)執(zhí)行,就不再產(chǎn)生異常。陷阱是在引起異常的指令執(zhí)行之后觸發(fā)的一種異常。在轉(zhuǎn)入異常處理程序

13、時(shí),引起陷阱的指令已完成。陷阱處理程序執(zhí)行完,返回到引起陷阱指令的下一條指令。軟中斷指令I(lǐng)NT n 是陷阱的例子。中止是在系統(tǒng)出現(xiàn)嚴(yán)重的不可恢復(fù)的事件時(shí)觸發(fā)的一種異常。產(chǎn)生中止后,正執(zhí)行的程序不能恢復(fù)執(zhí)行,系統(tǒng)要重新啟動(dòng)才能恢復(fù)正常運(yùn)行狀態(tài)。,13.2.2 中斷向量表,所謂中斷向量(interrupt vector),實(shí)際上就是中斷服務(wù)程序的入口地址,每個(gè)中斷類型對(duì)應(yīng)一個(gè)中斷向量。每個(gè)中斷向量占4字節(jié)的存儲(chǔ)單元。其中:前兩個(gè)字

14、節(jié)單元存放中斷服務(wù)程序入口地址的偏移量(IP),低字節(jié)在前,高字節(jié)在后;后兩個(gè)字節(jié)單元存放中斷服務(wù)程序入口地址的段基值(CS),也是低字節(jié)在前,高字節(jié)在后。,,80x86實(shí)模式系統(tǒng)允許引入的中斷可達(dá)256個(gè),因此需占用1K字節(jié)的存儲(chǔ)空間來存放這256個(gè)中斷服務(wù)程序入口地址。80x86實(shí)模式系統(tǒng)把中斷服務(wù)程序入口地址信息設(shè)置在存儲(chǔ)器的最低端,即從00000H~003FFH的1K字節(jié)存儲(chǔ)空間中。這一存儲(chǔ)空間就叫中斷向量表,如圖13.6

15、所示。,圖13.6 實(shí)模式系統(tǒng)的中斷向量表,,︽︾,︽︾,︽︾,︽︾,,,,,,,,,類型255(十進(jìn)制),類型32類型31(十進(jìn)制),,供用戶定義的中斷(共224個(gè)),,類型5類型4類型3類型2類型1類型0,,保留的中斷(共27個(gè)),專用的中斷(共5個(gè)),0000: 03FFH0000:007FH0000:007EH 0000:0014H0000:0013H

16、0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H,,溢出中斷,,斷點(diǎn)中斷,,,,非屏蔽中斷,單步中斷,除數(shù)為0中斷,,在中斷向量表中,各中斷向量按中斷類型碼從0到255順序存放。這樣,知道了中斷類型碼,很快就可算出相應(yīng)中斷向量的存放位置,從而取出中斷向量。例如,中斷類型碼為27H

17、的中斷所對(duì)應(yīng)的中斷向量應(yīng)存放在從0000H:009CH開始的4個(gè)連續(xù)字節(jié)單元中。如果相應(yīng)存儲(chǔ)單元的內(nèi)容如圖13.7所示,那么27H號(hào)中斷的中斷服務(wù)程序的入口地址即為8765H:4321H。,圖13.7 中斷向量的存放格式,87H65H43H21H,,,,,,,,,,0000:009FH0000:009CH,,由于中斷向量在中斷向量表中是按中斷類型碼(也稱中斷向量號(hào))順序存放的,所以每個(gè)中斷向量的地址可由

18、中斷類型碼乘以4計(jì)算出來。CPU響應(yīng)中斷時(shí),只要把中斷類型碼N左移2位(乘以4),即可得到中斷向量在中斷向量表中的對(duì)應(yīng)地址4N(該中斷向量所占4個(gè)字節(jié)單元的第一個(gè)字節(jié)單元的地址)。然后把由此地址開始的兩個(gè)低字節(jié)單元的內(nèi)容裝入IP寄存器: IP ← (4N, 4N+1) 再把兩個(gè)高字節(jié)單元的內(nèi)容裝入 CS 寄存器: CS ←(4N+2, 4N+3),,這就是使程序轉(zhuǎn)入中斷類型碼為N的中斷服務(wù)程序的

19、控制過程,如下面例1所示。至于中斷類型碼N的來源,對(duì)于不同的中斷類型(內(nèi)部中斷、外部中斷),情況有所不同,詳見后述。例13.1 若中斷類型碼為3,則由中斷類型碼取得中斷服務(wù)入口地址的過程如圖13.8所示。,圖13.8 根據(jù)中斷類型碼取得中斷服務(wù)程序入口地址,,例13.2 中斷類型碼為20H,則中斷服務(wù)程序的入口地址存放在中斷向量表從0000:0080H開始的4個(gè)字節(jié)單元中。若這4個(gè)字節(jié)單元的內(nèi)容分別為:(0000:0080

20、H)= 10H(0000:0081H)= 20H(0000:0082H)= 30H(0000:0083H)= 40H試指出相應(yīng)的中斷服務(wù)程序的入口地址。解: 中斷服務(wù)程序的入口地址為 。,,例13.3 中斷類型碼為17H,若中斷服務(wù)程序的入口地址為2340H:7890H,試指出中斷向量表中存放該中斷向量的4個(gè)字節(jié)單元的地址及內(nèi)容。解: 由于中斷類型碼為17H

21、,所以中斷向量表中存放相應(yīng)中斷向量的4個(gè)字節(jié)單元的地址分別為0000:005CH、0000:005DH、0000:005EH、0000:005FH,4個(gè)字節(jié)單元的內(nèi)容分別為 。,13.2.3 外部中斷,由外部的中斷請(qǐng)求信號(hào)啟動(dòng)的中斷,稱為外部中斷,也稱硬件中斷。80x86 CPU為外部中斷提供兩條引線,即NMI和INTR,用來輸入中斷請(qǐng)求信號(hào)。1. 非屏蔽中

22、斷從NMI引腳進(jìn)入的中斷為非屏蔽中斷,它不受中斷允許標(biāo)志IF的影響。非屏蔽中斷的類型碼為2,因此,非屏蔽中斷處理子程序的入口地址存放在08H、09H、0AH和0BH這4個(gè)字節(jié)單元中 。,,2. 可屏蔽中斷一般外部設(shè)備請(qǐng)求的中斷都是從CPU的INTR端引入的可屏蔽中斷。當(dāng)CPU接收到一個(gè)可屏蔽中斷請(qǐng)求時(shí),如果中斷允許標(biāo)志IF為1,那么CPU就會(huì)在執(zhí)行完當(dāng)前指令后響應(yīng)這一中斷請(qǐng)求。下面以8086系統(tǒng)為例,具體介紹一下可屏蔽中斷的

23、響應(yīng)時(shí)序。,圖13.9 8086的中斷響應(yīng)總線周期,,,,,,,,,,,,,,,,,,,,T1 T2 T3 T4 TI TI TI T1 T2 T3 T4,,,,,第一個(gè)總線周期,第二個(gè)總線周期,,三個(gè)空閑狀態(tài),,,,,,,,,,,,,中斷類型碼,CLK,____INTA,AD7~AD0,,,

24、13.2.4 內(nèi)部中斷,內(nèi)部中斷也稱軟件中斷。它是由于CPU執(zhí)行了INT n(含INT 3)、INTO指令,或者由于除法出錯(cuò)以及進(jìn)行單步操作所引起的中斷,主要包括INT n指令中斷、斷點(diǎn)中斷、溢出中斷、除法錯(cuò)中斷以及單步中斷。,,(1) INT n 指令中斷。 80x86系統(tǒng)提供了直接調(diào)用中斷處理子程序的手段,這就是中斷指令I(lǐng)NT n。指令中的中斷類型碼n告訴CPU調(diào)用哪個(gè)中斷處理子程序。(2) 除法錯(cuò)中斷(類型0)在執(zhí)行

25、除法指令DIV 或IDIV 后,若所得的商超出了目標(biāo)寄存器所能表示的范圍,比如用數(shù)值0作除數(shù),則CPU立即產(chǎn)生一個(gè)0型中斷。,,(3) 溢出中斷(類型4)若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位OF置1,則緊接著執(zhí)行INTO指令時(shí),將引起類型為4的內(nèi)部中斷,CPU將轉(zhuǎn)入溢出錯(cuò)誤處理。若OF=0時(shí),則INTO指令執(zhí)行空操作,即INTO指令不起作用。 INTO指令通常安排在算術(shù)運(yùn)算指令之后,以便在發(fā)生溢出時(shí)能及時(shí)處理。典型情況如表13-1

26、所示。,表 13-1,,,...,...,...,...,,,(4) 單步中斷(類型1)當(dāng)把CPU標(biāo)志寄存器的TF位置為1以后,CPU便處于單步工作方式。在單步工作方式下,CPU每執(zhí)行完一條指令,就會(huì)自動(dòng)產(chǎn)生一個(gè)1 型中斷,進(jìn)入1型中斷處理程序。此處理程序顯示CPU內(nèi)部各寄存器的內(nèi)容并告知某些附帶的信息。,,(5) 斷點(diǎn)中斷 (類型3)與單步中斷類似,斷點(diǎn)中斷也是一種調(diào)試程序的手段,并且常常和單步中斷結(jié)合使用。

27、對(duì)一個(gè)大的程序,不可能對(duì)整個(gè)程序全部用單步方式來調(diào)試,而只能先將程序中的某一錯(cuò)誤確定在程序中的一小段中,再對(duì)這一小段程序用單步方式跟蹤調(diào)試。斷點(diǎn)中斷就是用來達(dá)到這個(gè)目的的。,,在所有INT n形式的指令中,只有斷點(diǎn)中斷指令I(lǐng)NT 3是一條單字節(jié)長(zhǎng)的指令,其他中斷指令都是兩字節(jié)指令。,圖13.10 斷點(diǎn)的設(shè)置,,,ADD AL, BL,JMP 201H,INC AL,CMP AL, 0FFH,JL 200H,,不轉(zhuǎn)移,轉(zhuǎn)移,,,,,

28、,,,,,,,斷點(diǎn),1FCH,1FDH,1FEH,1FFH,200H,201H,202H,203H,204H,,內(nèi)部中斷的特點(diǎn)是:(1) 中斷類型碼由CPU內(nèi)部自動(dòng)提供(含從INT n指令中自動(dòng)提取),不需要執(zhí)行中斷響應(yīng)總線周期(INTA總線周期)去讀取中斷類型碼。(2) 除單步中斷外,所有內(nèi)部中斷都不可以用軟件的方法來禁止(屏蔽)。單步中斷可以通過軟件將TF標(biāo)志置1或清0來予以允許或禁止。(3) 除單步中斷外,所有內(nèi)部中斷的優(yōu)先

29、級(jí)都比外部中斷高。,13.2.5 中斷響應(yīng)和中斷處理過程,1. 可屏蔽中斷的響應(yīng)和處理過程圖13.11給出了可屏蔽中斷從中斷請(qǐng)求信號(hào)產(chǎn)生到中斷服務(wù)程序結(jié)束并返回被中斷程序的全過程。,圖13.11 可屏蔽中斷全過程,,,INTR ____ INTA,IP,CS,PSW(FR),,,,,,,,,中斷類型碼寄存器,,,②C

30、PU完成現(xiàn)行指令, 發(fā)出中斷響應(yīng)信號(hào),,,Q中斷請(qǐng)求,中斷屏蔽,,,,,,,①接口發(fā)中斷請(qǐng)求信號(hào)INTR,③CPU讀取中斷類型碼N,新的(IP)新的(CS)舊的(IP)舊的(CS)舊的(PSW),被中斷的程序.....,,,,,,,STI...,IRET,中斷服務(wù)程序...,存儲(chǔ)器,,,,,,,,,,,,,中斷向量表,︽︾,︽︾,︽︾,︽︾,,,,,16位,,4N4N+2,,,,,,,,,

31、,,,,⑤清除IF和TF,,⑦轉(zhuǎn)入中斷服務(wù)程序,⑩返回被中斷的程序,⑧開放中斷(可選),④現(xiàn)行PSW、CS、IP壓棧,⑨IRET指令使舊的IP、CS、PSW彈出堆棧,CPU,外設(shè)接口,⑥取CS、IP新值,,,,,,,,2. 80x86 實(shí)模式中斷響應(yīng)和中斷處理過程 80x86實(shí)模式中斷響應(yīng)和處理流程如圖13.12所示。,圖13.12 80x86實(shí)模式中斷響應(yīng)和中斷處理過程,80x86實(shí)模式中斷優(yōu)先級(jí),,,,

32、,,,結(jié)束當(dāng)前指令,除法錯(cuò),INTO,INT n?,NMI,INTR?,TF=1?,執(zhí)行下一條指令,,,,,,N,N,N,N,,,,,TF=1?,,,N,,,Y,Y,Y,Y,Y,內(nèi)部自動(dòng)形成中斷類型碼N,,讀中斷類型碼N,,標(biāo)志壓入堆棧,令TEMP=TF,清除IF和TF,CS和IP壓入堆棧,(4N,4N+1)?IP(4N+2,4N+3)?CS,執(zhí)行中斷處理程序,IP、CS出棧,標(biāo)志寄存器出棧,返回被中斷的主程序,有NMI?,TEMP=

33、1?,,,,,,,Y,Y,N,N,,,,,,,,執(zhí)行IRET指令,,①‘,①,②,③,④,⑤,⑥,,,,,,判斷與思考: 若在主程序中已使IF=1(開中),則在響應(yīng)中斷請(qǐng)求并執(zhí)行完中斷服務(wù)程序返回主程序后,IF 標(biāo)志位是否為1決定于在中斷服務(wù)程序中是否執(zhí)行了STI指令。,,需要說明的是,在圖13.12所示的中斷響應(yīng)和處理過程中,其中的①~⑥步(含①′)是由處理器內(nèi)部的中斷系統(tǒng)硬件自動(dòng)完成的,即無需程序員的直接控制和干預(yù);

34、其后的中斷處理過程則是通過執(zhí)行中斷服務(wù)程序(軟件)來完成的。,單步運(yùn)行方式時(shí)發(fā)生其他中斷的處理過程,單步運(yùn)行方式時(shí)發(fā)生中斷的處理過程(續(xù)),堆堆棧的情形:,13.3 可編程中斷控制器8259A(8259A Programmable Interrupt Controller-PIC),Intel 8259A用于管理和控制80x86的外部中斷請(qǐng)求,實(shí)現(xiàn)優(yōu)先級(jí)判決,提供中斷類型碼,屏蔽中斷輸入等功能。 使用單片8259A可以管理8級(jí)中斷

35、,采用級(jí)聯(lián)方式,可擴(kuò)充到64級(jí)(用9片8259A)。,,.,13.3.1 8259A的引腳功能,封裝形式 28腳雙列直插(28-pin DIP), DIP:Dual-In-line Package ,如圖13.13所示。,,,--片選信號(hào)(Chip Select)低電平有效,來自地址譯碼器的輸出只有 有效時(shí),CPU才能對(duì)8259A進(jìn)行讀寫操作。 --寫信號(hào),低電平有效,來自CPU的輸出;當(dāng) 有效且 有效時(shí), 使8259A

36、接受CPU送來的命令字。 --讀信號(hào),低電平有效,來自CPU的 輸出;當(dāng) 有效且 有效時(shí), 使8259A將狀態(tài)信息放到數(shù)據(jù)總路線上,供CPU檢測(cè)。,,D7~ D0 :雙向數(shù)據(jù)總線,接到系統(tǒng)數(shù)據(jù)總線的D7~ D0 上,用來傳送控制字、狀態(tài)字和中斷類型號(hào)。IR7~IR0 :中斷請(qǐng)求信號(hào),輸入,來自外部接口電路。(單片時(shí))INT:向CPU發(fā)出的中斷請(qǐng)求信號(hào)。(單片時(shí))。INTA:中斷響應(yīng)信號(hào),由此接收CPU發(fā)來的中斷響應(yīng)

37、脈沖。,A0:地址輸入信號(hào),用于對(duì)8259A內(nèi)部寄存器的尋址。CAS2~ CAS0:級(jí)聯(lián)線(CASCADE LINES),傳送3位標(biāo)識(shí)碼,用于區(qū)分特定的從控制器。雙向:對(duì)于主片為輸出,對(duì)于從片為輸入?! ?從片/允許緩沖器信號(hào)。雙功能引腳:作為輸入時(shí),8259A作為主片(  ?。?)  8259A作為從片(   =0)見P462圖13.15作為輸出時(shí),用來啟動(dòng)(允許)數(shù)據(jù)總線收發(fā)器(如8286

38、)。 *究竟是作為輸入還是輸出,取決于8259A是否工作于“緩沖方式”(即8259A是否通過一個(gè)“數(shù)據(jù)總線收發(fā)器”與系統(tǒng)總線相連)。詳見后面ICW4的格式。,,13.3.2 8259A的內(nèi)部結(jié)構(gòu),8259A的內(nèi)部邏輯結(jié)構(gòu)如圖13.14所示。,圖13.14 8259A的內(nèi)部邏輯結(jié)構(gòu),,CPU,AD7~AD0,INTR,,,ISR,ICW1,OCW1 (IMR),ICW2,OCW2,ICW3,OCW3,ICW4,PR,IRR,

39、,,,D7~D0,,,,地址譯碼,,,...,,,,INT,A0,,,,CAS0,CAS1,CAS2,...,IR7,IR0,,,8259A的編程結(jié)構(gòu),IRR—Interrupt Request RegisterPR---Priority ResolverISR---In-Service RegisterIMR---Interrupt Mask RegisterICWs---Initialization Command

40、 WordsOCWs---Operation Command Words7個(gè)CPU可訪問的寄存器,分兩組:初始化命令字ICW1 ~ICW4---系統(tǒng)初啟時(shí)設(shè)定。操作命令字OCW1~OCW3—系統(tǒng)運(yùn)行時(shí),由應(yīng)用程序設(shè)定(實(shí)現(xiàn)對(duì)中斷處理的動(dòng)態(tài)管理和控制). The OCWs can be written into the 8259A anytime after initialization.(手冊(cè)P6-P7)。,,7個(gè)寄存器

41、的尋址問題:,規(guī)規(guī)定:A0,,8259A的處理部件:中斷請(qǐng)求寄存器IRR-8位寄存器+控制邏輯作用:接受并鎖存來自IR0~I(xiàn)R7的中斷請(qǐng)求信號(hào)。中斷服務(wù)寄存器ISR作用:保存當(dāng)前正在處理的中斷請(qǐng)求。優(yōu)先級(jí)裁決器PR作用:把新進(jìn)入的中斷請(qǐng)求和當(dāng)前正在處理的中斷進(jìn)行比較,以決定哪一個(gè)優(yōu)先級(jí)更高。,,處理過程:IR0~I(xiàn)R7上出現(xiàn)某一中斷請(qǐng)求信號(hào)->IRR對(duì)應(yīng)位被置“1”->由IMR的相應(yīng)位決定是否將其屏蔽(屏

42、蔽位=1,不通過;屏蔽位=0,通過)->中斷請(qǐng)求進(jìn)PR->PR把新進(jìn)入的中斷請(qǐng)求和當(dāng)前正在處理的中斷進(jìn)行優(yōu)先級(jí)比較->若新進(jìn)入的中斷優(yōu)先級(jí)高,該中斷請(qǐng)求被送到CPU。若CPU的IF=1,CPU完成當(dāng)前指令后,響應(yīng)中斷,在 引腳上發(fā)出兩個(gè)負(fù)脈沖 (執(zhí)行兩個(gè)中斷響應(yīng)總線周期,參見P463 圖13.16)。,圖13.9 8086的中斷響應(yīng)總線周期,,,,,,,,,,,,,,,,,,,,T1

43、 T2 T3 T4 TI TI TI T1 T2 T3 T4,,,,,第一個(gè)總線周期,第二個(gè)總線周期,,三個(gè)空閑狀態(tài),,,,,,,,,,,,,中斷類型碼,CLK,____INTA,AD7~AD0,,,,8259A收到第一個(gè)負(fù)脈沖后:使IRR鎖存允許,不予接受IR0~I(xiàn)R7上的中斷請(qǐng)求信號(hào);直到第二

44、個(gè)負(fù)脈沖結(jié)束后,才又使IRR鎖存禁止(輸入輸出透明)。使ISR的相應(yīng)位置“1”,以便為優(yōu)先級(jí)裁決器以后的裁決提供依據(jù)。清除IRR的相應(yīng)位。8259A收到第二個(gè)負(fù)脈沖后:把中斷類型碼寄存器的內(nèi)容(ICW2的內(nèi)容)送到D7~D0如果ICW4的AEOI位為1,則在第二個(gè) 脈沖結(jié)束時(shí),將ISR中被第一個(gè) 脈沖置“1”的位清除(自動(dòng)結(jié)束);否則,要等到中斷結(jié)束命令(EOI)發(fā)送后才能清除。,13.3.3 82

45、59A的工作方式,1. 設(shè)置優(yōu)先級(jí)的方式(1) 全嵌套方式(FULLY NESTED MODE)也稱固定優(yōu)先級(jí)方式。在這種方式下,由IRi引入的中斷請(qǐng)求具有固定的優(yōu)先級(jí)-IR0(最高)->IR7(最低).This mode is entered after initialization unless another mode is programmed.,,當(dāng)一個(gè)中斷請(qǐng)求被響應(yīng)時(shí),ISR中的對(duì)應(yīng)位ISn被置“1”,8259

46、A把中斷類型碼放到數(shù)據(jù)總線上,然后,進(jìn)入中斷服務(wù)程序。一般情況下(除了“中斷自動(dòng)結(jié)束”方式外),在CPU發(fā)出中斷結(jié)束命令(EOI)前,此對(duì)應(yīng)位一直保持為“1”-封鎖同級(jí)或低級(jí)的中斷響應(yīng),但并不禁止比本級(jí)優(yōu)先級(jí)高的中斷響應(yīng)-實(shí)現(xiàn)中斷“嵌套”。,,(2) 特殊全嵌套方式(SPECIAL FULLY NESTED MODE-SFNM)在處理某一級(jí)中斷時(shí),不但允許優(yōu)先級(jí)更高的中斷請(qǐng)求進(jìn)入,也允許同級(jí)的中斷請(qǐng)求進(jìn)入。用于主從結(jié)構(gòu)的8259系

47、統(tǒng)中,將主片設(shè)置為“特殊全嵌套方式”。通過ICW4的“SFNM”位可以設(shè)置此種方式。(參見p464),,(3) 優(yōu)先級(jí)自動(dòng)循環(huán)方式(AUTOMATIC ROTATION)優(yōu)先級(jí)是循環(huán)變化的(不希望有固定的優(yōu)先級(jí)差別)-一個(gè)設(shè)備的中斷服務(wù)完成后,其優(yōu)先級(jí)自動(dòng)降為最低,而將最高優(yōu)先級(jí)賦給原來比它低一級(jí)的中斷請(qǐng)求。開始時(shí),優(yōu)先級(jí)隊(duì)列還是:IR0->IR7,若此時(shí)出現(xiàn)了IR0請(qǐng)求,響應(yīng)IR0并處理完成后,隊(duì)列變?yōu)椋篒R1,IR2

48、,IR3,IR4 ,IR5 ,IR6 ,IR7,IR0。若又出現(xiàn)了IR4請(qǐng)求,處理完IR4后,隊(duì)列變?yōu)椋篲_________________________________系統(tǒng)中是否采用“自動(dòng)循環(huán)優(yōu)先級(jí)”,由操作命令字OCW2來設(shè)定。( 參見p466),,(4)優(yōu)先級(jí)特殊循環(huán)方式(SPECIFIC ROTATION)與“優(yōu)先級(jí)自動(dòng)循環(huán)方式”相比,只有一點(diǎn)不同,即可以設(shè)置開始的最低優(yōu)先級(jí)。例如,設(shè)定IR4為最低優(yōu)先級(jí),那么I

49、R5就是最高優(yōu)先級(jí),其余各級(jí)按循環(huán)方法類推。,,2. 屏蔽中斷源的方式(中斷屏蔽方式)普通屏蔽方式通過對(duì)中斷屏蔽寄存器(IMR)的設(shè)定,實(shí)現(xiàn)對(duì)相應(yīng)位為“1”的中斷請(qǐng)求的屏蔽。可通過OCW1使IMR的一位或幾位置“1”。*特殊屏蔽方式(SPECIAL MASK MODE)作用:P462實(shí)現(xiàn):,,3. 中斷結(jié)束方式(END OF INTERRUPT-EOI)(1)中斷自動(dòng)結(jié)束方式(AUTOMATIC-AEOI方式)在第二個(gè)

50、 后沿,即完成把對(duì)應(yīng)的ISR位復(fù)位。注意:AEOI方式是在中斷響應(yīng)后,而不是在中斷處理程序結(jié)束后將ISR位清0。這樣,在中斷處理過程中,8259A中就沒有“正在處理”的標(biāo)識(shí)。此時(shí),若有中斷請(qǐng)求出現(xiàn),且IF=1,則無論其優(yōu)先級(jí)如何(比本級(jí)高、低或相同),都將得到響應(yīng)。尤其是當(dāng)某一中斷請(qǐng)求信號(hào)被CPU響應(yīng)后,如不及時(shí)撤銷,就會(huì)再次被響應(yīng)-“二次中斷”。,,所以,AEOI方式適合于中斷請(qǐng)求信號(hào)的持續(xù)時(shí)間有一定限制以及不出現(xiàn)中斷

51、嵌套的場(chǎng)合。通過ICW4可以設(shè)置AEOI方式(AEOI=1)。,,(2)一般(常規(guī))中斷結(jié)束方式適合于全嵌套方式。實(shí)現(xiàn):在中斷服務(wù)程序結(jié)束時(shí),向8259A發(fā)常規(guī)中斷結(jié)束命令(OCW2:EOI=1,SL=0,R=0)例:MOV AL,20H; OCW2=20H OUT 20H,AL; 端口地址=20H(偶地址)在全嵌套方式下,ISR中最高優(yōu)先級(jí)的置“1”位,正對(duì)應(yīng)于當(dāng)前正在處理的中斷,將其清“0”,就完

52、成了當(dāng)前正在處理中斷的結(jié)束操作。,IR0,IR7,,(3)特殊中斷結(jié)束方式(SPECIFIC EOI-SEOI)在非全嵌套方式下,無固定的優(yōu)先級(jí)序列(使用設(shè)置優(yōu)先權(quán)命令或特殊屏蔽方式),此時(shí),根據(jù)ISR的內(nèi)容就無法確定剛剛所響應(yīng)(處理)的中斷。這種情況下,就不能用上述的EOI方式進(jìn)行中斷結(jié)束處理,而必須用特殊的中斷結(jié)束命令SEOI--用OCW2:EOI=1,SL=1,R=0,L2~L0.由L2~L0指定清除ISR中的哪一位。,,4

53、. 中斷觸發(fā)方式電平觸發(fā)方式:由IRi上的有效電平來觸發(fā)“中斷請(qǐng)求觸發(fā)器”。邊沿觸發(fā)方式:由IRi上由低電平向高電平的跳變來觸發(fā)“中斷請(qǐng)求觸發(fā)器”。由ICW1的LTIM位可以設(shè)置中斷觸發(fā)方式。,,5. 連接系統(tǒng)總線的方式緩沖方式(ICW4的BUF=1)8259A通過總線驅(qū)動(dòng)器(如8286)和數(shù)據(jù)總線相連。在緩沖方式下,8259A的 作為輸出( 有效),此時(shí),由ICW4的M/S位來定義(標(biāo)識(shí))

54、本8259A是主片還是從片。非緩沖方式(ICW4的BUF=0)即8259A直接與數(shù)據(jù)總線相連在“非緩沖方式下”,8259A的 作為輸入( 有效) 此時(shí),由 端來標(biāo)識(shí)本8259A是主片還是從片。在“非緩沖方式下”,ICW4的BUF=0,M/S位無意義。,,“中斷查詢”方式特點(diǎn):既有中斷的特點(diǎn),又有查詢(Polling)的特點(diǎn)。外設(shè)仍然向8259A發(fā)中斷請(qǐng)求信號(hào),要求CPU服務(wù)

55、。CPU的IF=0,不響應(yīng)外部的中斷請(qǐng)求(對(duì)CPU的中斷請(qǐng)求信號(hào)不起作用)此時(shí),CPU需要用軟件查詢方法來確認(rèn)中斷源,從而實(shí)現(xiàn)對(duì)設(shè)備的服務(wù)先向8259A發(fā)查詢命令(poll command)OCW3:,P,,,緊接著執(zhí)行一條讀指令(IN指令),讀出專門的“中斷狀態(tài)字”:當(dāng)8259A收到P=1的查詢命令后,在下一個(gè) 信號(hào)將使ISR的相應(yīng)位置“1”,就像收到了 一樣,并把上述的“中斷狀態(tài)字”送到數(shù)據(jù)總線上,

56、由CPU讀入AL。,13.3.5 8259A的控制字及編程使用,8259A的控制寄存器可分為兩組,一組是初始化命令字ICW1~I(xiàn)CW4,另一組是操作命令字OCW1~OCW3。每片8259A具有兩個(gè)內(nèi)部端口地址,一個(gè)偶地址端口(A0 = 0),一個(gè)奇地址端口(A0 = 1),其他高位地址碼由用戶定義,用來產(chǎn)生8259A的片選信號(hào)。,1. 初始化命令字,初始化命令字用來對(duì)8259A初始化,包括ICW1~I(xiàn)CW4 4個(gè)初始化命令字。(

57、1) ICW1ICW1 使用偶地址端口(A0 = 0),其中D4 位為特征位(標(biāo)志位),此時(shí)該位固定為1,表示當(dāng)前寫入的是ICW1 (OCW1 也用偶地址端口寫入,但OCW1 的D4 位為0)。ICW1 的格式如下:,初始化命令字 ICW1格式,,解釋: IC4 規(guī)定初始化時(shí)是否要寫入ICW4。IC4 = 0表示不寫入ICW4,IC4 = 1表示寫入ICW4。SNGL規(guī)定8259A的用法。SNGL=0表示為級(jí)聯(lián)方式,同時(shí)要寫

58、入ICW3 ;SNGL=1表示為單片方式,不要寫入ICW3。ADI為配合8085工作時(shí)選用CALL指令字節(jié)數(shù)而設(shè),80x86不用這一位。LTIM規(guī)定中斷檢測(cè)方式。LTIM=0表示邊沿觸發(fā),LTIM=1表示電平觸發(fā)。A5~A7 在8085微處理器中用這幾位作中斷向量字,80x86不用這三位。,,(2) ICW2ICW2 使用奇地址端口(A0 = 1),緊跟在ICW1之后設(shè)置。ICW2 的格式如下:,A15/T7,A14/T6,A

59、13/T5,A12/T4,A11/T3,A10,A9,A8,1,ICW2,A0 D7 D6 D5 D4 D3 D2 D1 D0,初始化命令字 ICW2格式,,對(duì)于80x86系統(tǒng),ICW2的D7~D3位用來確定中斷類型碼N的高5位T7~T3位,低3位D2~D0未定義;對(duì)于非80x86系統(tǒng),ICW2的8位全部用來

60、作中斷向量地址的高8位A15~A8。在80x86系統(tǒng)中,8259A在中斷響應(yīng)周期的第二個(gè)總線周期內(nèi),從數(shù)據(jù)總線上向CPU送出8位中斷類型碼N的值。其中高5位D7~D3即T7~T3,由ICW2在初始化編程時(shí)設(shè)定;低3位D2~D0則由8259A根據(jù)中斷進(jìn)入的引腳序號(hào)而自動(dòng)填入,從IR0~I(xiàn)R7依次為000~111。,,例:若將 ICW2 初始化為28H , 則在中斷響應(yīng)總線周期從數(shù)據(jù)總線上向CPU送出的對(duì)應(yīng)于 IR2的中斷類型碼為

61、2AH,對(duì)應(yīng)于 IR3的中斷類型碼為 等。,,(3) ICW3ICW3 只在級(jí)聯(lián)方式中使用,端口地址為奇地址,其格式如下:,初始化命令字 ICW3格式,,對(duì)于主片8259A,ICW3 表示哪些IRi 引腳接有從片8259A。接有從片8259A的相應(yīng)S位置1,否則置0。 例如,若IR2、IR6 上接有從片8259A,且其他IR引腳未接有從片8259A,則ICW3 為01000100。,,對(duì)于從片8259A,

62、用ICW3 中的ID2~I(xiàn)D0 表示本8259A接在主片8259A的哪一根IR引腳上。與IR0~I(xiàn)R7 分別對(duì)應(yīng)的ID碼為000~111。例如,若從片8259A接在主片8259A的IR6 上,則從片8259A的ICW3 應(yīng)設(shè)定為: ID2=1,ID1=1,ID0=0,,(4) ICW4在80x86系統(tǒng)中必須設(shè)置ICW4,端口地址為奇地址,其格式如下:,初

63、始化命令字 ICW4格式,,其中,μPM規(guī)定是哪種系統(tǒng)。μPM = 0表示是8080/8085系統(tǒng),μPM = 1表示是80x86系統(tǒng)。AEOI表示中斷結(jié)束方式。AEOI=0為普通EOI方式,AEOI=1表示自動(dòng)EOI方式。BUF表示本8259A工作于緩沖方式還是非緩沖方式。BUF=1為緩沖方式,BUF=0為非緩沖方式。,,在緩沖方式下,SP/EN引腳作為輸出能使信號(hào)給總線收發(fā)器。此時(shí),由M/S位來定義本8259A是主片還是從片。所

64、謂8259A工作于緩沖方式,是指在多片8259A級(jí)聯(lián)的大系統(tǒng)中,8259A通過總線收發(fā)器(驅(qū)動(dòng)器)和數(shù)據(jù)總線相連。M/S位用來在緩沖方式下規(guī)定本8259A是主片還是從片。M/S=0表示是從片,M/S=1表示是主片。在非緩沖方式(BUF=0)下,M/S位無效。SFNM表示中斷嵌套方式。SFNM=0表示全嵌套方式,SFNM=1表示特殊全嵌套方式。,8259A的初始化流程,8259A的初始化命令字(ICW)是在加電之后由CPU按特定的順

65、序?qū)懭氲摹R簿褪钦f,各初始化命令字的識(shí)別一方面依賴于地址信號(hào)A0和初始化命令字中的特定標(biāo)識(shí)位,另一方面也與寫入的先后次序有關(guān)。8259A的初始化順序及相應(yīng)的尋址標(biāo)志如圖13.17所示。,,① 在初始化操作過程的開頭,總要依次寫入命令字ICW1和ICW2。② 只有當(dāng)ICW1中的SNGL位=0,才需寫入ICW3。對(duì)于主片和從片均需寫入ICW3,而且它們的格式不同。③ 只有當(dāng)ICW1中的IC4=1時(shí),才需寫入ICW4。對(duì)于80x8

66、6系統(tǒng),ICW4總是需要設(shè)置的。,,在系統(tǒng)中,單片8259A與80x86 CPU配置時(shí),初始化要寫入的預(yù)置命令字是:ICW1、ICW2、ICW4 。而級(jí)聯(lián)系統(tǒng)要寫入預(yù)置命令字是:ICW1、ICW2、ICW3和ICW4。初始化過程結(jié)束,8259A進(jìn)入所設(shè)置的狀態(tài)后,才能寫入操作命令字(OCW)。,2. 操作命令字,在8259A工作期間,可通過設(shè)置操作命令字來修改或控制8259A的工作方式。需要說明的是,與初始化命令字ICW1~I(xiàn)

67、CW4需要按規(guī)定的順序進(jìn)行設(shè)置不同,操作命令字OCW1~OCW3 的設(shè)置沒有規(guī)定其先后順序,使用時(shí)可根據(jù)需要靈活選擇不同的操作命令字寫入到8259A中。當(dāng)然,也需注意奇、偶端口地址及有關(guān)標(biāo)識(shí)位的規(guī)定。,,(1) OCW1OCW1 為中斷屏蔽操作命令字,用來實(shí)現(xiàn)中斷屏蔽功能,要求寫入8259A的奇地址端口(A0=1)。OCW1 的內(nèi)容被直接置入中斷屏蔽寄存器IMR中,其格式如下:,操作命令字OCW1,,其中M0~M7 分別對(duì)應(yīng)825

68、9A的IR0~I(xiàn)R7。當(dāng)OCW1 中的Mi 位為1時(shí),則相應(yīng)的IRi 的中斷請(qǐng)求就被屏蔽。例如, 若通過OCW1向中斷屏蔽寄存器寫入代碼11110000,將導(dǎo)致中斷輸入IR7~I(xiàn)R4被屏蔽掉,而IR3~I(xiàn)R0撤銷屏蔽。,,(2) OCW2OCW2 用來設(shè)置優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式。占用偶地址端口(A0=0)。OCW2 的格式如下:,操作命令字OCW2,,其中,D4D3= 00是OCW2 的標(biāo)識(shí)位。R表示中斷優(yōu)先級(jí)是否按循

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論