版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
31一月2024第8章中斷技術(shù)8.1中斷概述8.2多級中斷管理8.3IBM-PC機(jī)的中斷系統(tǒng)
8.4可編程中斷控制器Intel8259A習(xí)題811431一月20248.1中斷概述8.1.1中斷的基本概念
當(dāng)CPU與外設(shè)工作不同步時,很難確保CPU在對外設(shè)進(jìn)行讀寫操作時,外設(shè)一定是準(zhǔn)備好的。為保證數(shù)據(jù)的正確傳送,可采用查詢方式。但是在查詢方式下,CPU主動地查詢所有外設(shè)以確定其是否準(zhǔn)備好,是否需要進(jìn)行數(shù)據(jù)傳送,會使CPU的效率降低,特別是與低速外設(shè)進(jìn)行數(shù)據(jù)交換時,CPU需要等待更多的時間。
外設(shè)就緒否?讀入外設(shè)狀態(tài)輸入/輸出數(shù)據(jù)YN31一月2024
另外在對多個外設(shè)進(jìn)行I/O操作時,如果有些外設(shè)的實(shí)時性要求較高,CPU有可能因來不及響應(yīng)而造成數(shù)據(jù)丟失。
為了解決上述問題,引入了中斷技術(shù)。
中斷是指計算機(jī)在正常執(zhí)行程序的過程中,由于某事件的發(fā)生使CPU暫時停止當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行相關(guān)事件的處理程序,結(jié)束后又返回原程序繼續(xù)執(zhí)行,這樣的一個過程就是中斷。
當(dāng)前指令下一條指令入口IRET中斷服務(wù)程序主程序斷點(diǎn)中斷申請31一月2024中斷舉例
處理文檔電話鈴響暫停文檔文檔中做暫停記號電話交談?wù)页鰰和S浱栁恢美^續(xù)處理文檔
執(zhí)行主程序中斷申請信號有效(中斷請求)暫停執(zhí)行主程序,響應(yīng)中斷當(dāng)前F、CS、IP入棧(保護(hù)現(xiàn)場)處理外設(shè)請求(中斷服務(wù))IP、CS、F出棧(恢復(fù)現(xiàn)場及中斷返回)繼續(xù)執(zhí)行主程序文秘工作CPU
中斷最初的目的是為了解決高速CPU與低速外設(shè)之間的速度矛盾。實(shí)際上中斷的功能遠(yuǎn)遠(yuǎn)超出了預(yù)期的設(shè)計,被廣泛地應(yīng)用在分時操作、實(shí)時處理、人機(jī)交互、多機(jī)系統(tǒng)等方面,中斷技術(shù)大大地提高了CPU的工作效率。31一月2024
中斷的優(yōu)點(diǎn)有下面三點(diǎn):
1.分時操作
中斷技術(shù)實(shí)現(xiàn)了CPU和外部設(shè)備的并行工作,從而消除CPU的等待時間,提高了CPU的利用率。另外,CPU可同時管理多個外部設(shè)備的工作,提高了輸入/輸出數(shù)據(jù)的吞吐量。2.實(shí)時處理
在實(shí)時控制系統(tǒng)中,現(xiàn)場定時或隨機(jī)地產(chǎn)生各種參數(shù)、信息,要求CPU立即響應(yīng)。利用中斷機(jī)制,計算機(jī)就能實(shí)時地進(jìn)行處理,特別是對緊急事件的處理。31一月20243.實(shí)時故障處理計算機(jī)運(yùn)行過程中,如果出現(xiàn)某些故障,如電源掉電、內(nèi)存故障、運(yùn)算溢出等,計算機(jī)可以利用中斷系統(tǒng)自行處理。存儲器奇偶位奇偶檢測電路存儲器出錯檢測電路31一月20248.1.2中斷的響應(yīng)過程
1.中斷源中斷源就是引起中斷的原因或者發(fā)出中斷請求的設(shè)備。中斷源一般分為兩類:內(nèi)部中斷源和外部中斷源。
內(nèi)部中斷源即中斷源在微處理器內(nèi)部。如計算溢出、中斷指令的執(zhí)行、程序調(diào)試中指令的單步運(yùn)行等都是內(nèi)部中斷源。
外部中斷源即引起中斷的原因是處理機(jī)的外部設(shè)備。如外設(shè)的I/O請求、定時時間到、設(shè)備故障、電源掉電等都是外部中斷源。31一月20242.中斷的響應(yīng)過程中斷處理一般需要經(jīng)歷下述七個過程。
1)中斷請求當(dāng)中斷源需要CPU對它進(jìn)行服務(wù)時,就會產(chǎn)生一個中斷請求信號。對外部中斷源,這個信號加至CPU的中斷請求輸入引腳,形成對CPU的中斷請求;對內(nèi)部中斷源,則通過CPU內(nèi)部特定事件的發(fā)生或特定指令的執(zhí)行作為對CPU的中斷請求。
2)中斷響應(yīng)
CPU接受中斷請求就稱為中斷響應(yīng)。當(dāng)CPU執(zhí)行到每條指令的最后一個時鐘周期時,就去檢測是否有中斷請求,如果有中斷請求,對內(nèi)部中斷源,CPU會無條件響應(yīng),而對外部中斷源,只有在滿足響應(yīng)條件時,CPU才會響應(yīng)其中斷請求。31一月20243)現(xiàn)場保護(hù)當(dāng)CPU響應(yīng)某個中斷時,就會轉(zhuǎn)到相應(yīng)中斷源的服務(wù)程序上。為了使CPU在完成中斷服務(wù)后能返回原程序繼續(xù)執(zhí)行,需要將原程序被中斷處的相關(guān)信息保存到堆棧中。對8086/8088CPU,斷點(diǎn)處的IP、CS和標(biāo)志寄存器內(nèi)容由硬件進(jìn)行自動保護(hù),其他信息的保護(hù)則由中斷服務(wù)程序來完成。4)中斷源識別
在計算機(jī)系統(tǒng)中,往往有多個中斷源,當(dāng)有中斷請求時,CPU就需要確定具體的中斷源,以便對其進(jìn)行相應(yīng)的服務(wù)。在8086/8088中斷系統(tǒng)中,由中斷源自身提供其編碼,供CPU進(jìn)行識別。31一月20245)中斷服務(wù)每一個中斷源都有其相應(yīng)的服務(wù)程序,即中斷程序。當(dāng)CPU識別中斷源后,就會取得其中斷程序的入口地址,并轉(zhuǎn)入該中斷程序,進(jìn)行相應(yīng)的中斷服務(wù)。中斷服務(wù)是整個中斷處理的核心。
6)現(xiàn)場恢復(fù)當(dāng)CPU完成相應(yīng)的中斷服務(wù)后,利用中斷服務(wù)程序,將原來在中斷程序中用軟件保存的相關(guān)信息從堆棧彈出,恢復(fù)為中斷前的內(nèi)容。
7)中斷返回在中斷程序的最后,通過執(zhí)行一條中斷返回指令,將IP、CS及標(biāo)志寄存器的內(nèi)容從堆棧中彈出,使CPU返回到中斷前的程序,并從斷點(diǎn)處繼續(xù)執(zhí)行。31一月2024中斷服務(wù)程序結(jié)構(gòu)如下:
PUSHAX……PUSHBXSTI…….CLIPOPBX…..POPAXIRET保護(hù)現(xiàn)場;開中斷;中斷處理;關(guān)中斷恢復(fù)現(xiàn)場;中斷返回31一月20248.1.3中斷控制的功能為了滿足微機(jī)系統(tǒng)的要求,中斷控制系統(tǒng)應(yīng)具有如下三個功能。
1)能實(shí)現(xiàn)中斷并返回當(dāng)某一中斷源發(fā)出中斷請求時,CPU能決定響應(yīng)或是屏蔽它。當(dāng)響應(yīng)中斷請求時,CPU在執(zhí)行完當(dāng)前指令后,把現(xiàn)場信息壓入堆棧,然后自動轉(zhuǎn)到中斷源的服務(wù)程序。當(dāng)中斷處理完成后,能自動返回,并恢復(fù)中斷前的狀態(tài)繼續(xù)原程序的執(zhí)行。
2)能實(shí)現(xiàn)中斷判優(yōu)功能
中斷判優(yōu),即根據(jù)中斷源的優(yōu)先級進(jìn)行排隊(duì)。當(dāng)系統(tǒng)中出現(xiàn)多個中斷源同時提出中斷請求的情況時,中斷控制電路能根據(jù)各中斷源的優(yōu)先級進(jìn)行響應(yīng),優(yōu)先級最高的中斷請求先響應(yīng)。31一月20243)能實(shí)現(xiàn)中斷的嵌套中斷的嵌套是指高級別的中斷能中斷較低級別的中斷處理,它類似于子程序嵌套。
當(dāng)CPU響應(yīng)某一中斷源的請求時,在進(jìn)行中斷處理的過程中,若有優(yōu)先權(quán)級別更高的中斷源發(fā)出中斷請求,則CPU要能暫時中止正在進(jìn)行的中斷服務(wù)程序。此時,它先保存當(dāng)前程序的斷點(diǎn)和現(xiàn)場,然后響應(yīng)高級別的中斷。在高級別的中斷處理完成以后,再返回繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序。而當(dāng)發(fā)出新的中斷請求的中斷源的優(yōu)先權(quán)級別與正在處理的中斷源同級或更低時,則CPU不會響應(yīng)這個中斷請求,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷請求。31一月20248.1.4最簡單的中斷情況為了便于理解中斷系統(tǒng)的工作情況,我們從只有一個中斷源這種最簡單的情況入手,來分析中斷的情況。
1.CPU響應(yīng)中斷的條件
1)中斷請求當(dāng)外設(shè)需要CPU提供服務(wù)時,便通過自身的中斷請求觸發(fā)器發(fā)出中斷請求信號,將它加至CPU的中斷請求輸入引腳(INTR),形成對CPU的中斷請求。這個信號一直保持到CPU響應(yīng)中斷后才被清除,如圖8.1所示。31一月2024圖8.1最簡單的中斷情況11110031一月2024
2)中斷屏蔽
在外設(shè)的接口電路中,設(shè)有一個中斷屏蔽觸發(fā)器,用它來控制該中斷源發(fā)出的中斷請求信號是否被允許送往CPU,中斷屏蔽觸發(fā)器的狀態(tài)可以用輸出指令來控制。而實(shí)際的應(yīng)用系統(tǒng)中往往有多個中斷源,這樣就可以將8個外設(shè)的中斷源組成一個端口,用輸出指令的置位操作來靈活地對某一中斷實(shí)現(xiàn)屏蔽控制。如圖8.1所示,當(dāng)觸發(fā)器為“1”時,外設(shè)的中斷請求才能被送出至CPU。中斷請求觸發(fā)器中斷屏蔽觸發(fā)器與門狀態(tài)線中斷請求信號管理局部外部可屏蔽中斷131一月20243)中斷的開放
在CPU內(nèi)部有一個中斷允許觸發(fā)器,用來決定是否響應(yīng)CPU中斷請求引腳(INTR)送來的中斷請求。當(dāng)中斷開放時(觸發(fā)器為“1”),CPU才能響應(yīng)中斷;當(dāng)關(guān)閉中斷時(觸發(fā)器為“0”),CPU不響應(yīng)中斷請求。這個中斷允許觸發(fā)器的狀態(tài)可以用STI和CLI指令來改變。在CPU復(fù)位或是當(dāng)中斷響應(yīng)后,CPU就處于中斷關(guān)閉狀態(tài),這樣就必須在中斷服務(wù)程序中用STI指令來讓中斷開放。管理全體外部可屏蔽中斷4)中斷請求的檢測
CPU在每條指令執(zhí)行的最后一個時鐘周期,檢測其中斷請求引腳(INTR)有無中斷請求信號。如果有中斷請求信號,就把內(nèi)部的中斷鎖存器置“1”,在下一個總線周期到來時,進(jìn)入中斷響應(yīng)狀態(tài)。(無總線請求、IF=1、CPU執(zhí)行完當(dāng)前指令)31一月20242.CPU對中斷的響應(yīng)當(dāng)CPU響應(yīng)外設(shè)的中斷后,還要具體完成一些工作。
1)關(guān)中斷當(dāng)響應(yīng)中斷后,首先要進(jìn)行關(guān)中斷操作。對8086微處理器,CPU在發(fā)出中斷響應(yīng)信號的同時,在內(nèi)部自動完成關(guān)中斷操作。
2)現(xiàn)場保護(hù)當(dāng)CPU響應(yīng)中斷源的中斷請求后,將停止下一條指令的執(zhí)行,把當(dāng)前相關(guān)寄存器的內(nèi)容壓入堆棧,為中斷返回作好準(zhǔn)備。FLAGSCSIPSP31一月2024
3)給出中斷入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序?qū)?086/8088CPU,由中斷源給出的中斷類型號,形成中斷服務(wù)程序的起始地址,轉(zhuǎn)入中斷服務(wù)程序,進(jìn)行相應(yīng)的中斷服務(wù)。
4)恢復(fù)現(xiàn)場當(dāng)CPU完成相應(yīng)的中斷服務(wù)后,利用中斷服務(wù)程序,將原來保存的現(xiàn)場信息從堆棧彈出,恢復(fù)CPU內(nèi)部各寄存器的內(nèi)容。
5)中斷返回在中斷服務(wù)程序的最后,為使CPU能再次響應(yīng)新的中斷請求,執(zhí)行開中斷操作,同時安排一條中斷返回指令,從堆棧中彈出IP、CS、FLAGS,恢復(fù)原程序的執(zhí)行。31一月20248.2多級中斷管理
在實(shí)際的應(yīng)用當(dāng)中,一般有多個中斷源。如果同一時間有多個中斷源向CPU提出中斷請求,CPU該如何處理,這就涉及到多級中斷的管理問題,其關(guān)鍵是中斷優(yōu)先級的控制問題。中斷優(yōu)先級是指每個中斷源在接受CPU服務(wù)時的優(yōu)先等級,對中斷優(yōu)先級的控制要解決以下兩個方面的問題:
(1)CPU應(yīng)首先響應(yīng)最高優(yōu)先級的中斷請求。由于不同的中斷源在系統(tǒng)中的功能不同,因而它們在重要性方面也存在級別的差異。當(dāng)它們同時向CPU提出中斷請求時,系統(tǒng)應(yīng)根據(jù)各中斷源的級別首先響應(yīng)級別最高的中斷請求。31一月2024
(2)中斷嵌套,即高優(yōu)先級的中斷請求可以中斷低優(yōu)先級的中斷服務(wù)。當(dāng)CPU正在處理某一中斷時,如果還有更高級別的中斷源有中斷請求時,CPU也要能夠響應(yīng)。要保證多級嵌套的順利進(jìn)行,在中斷處理程序中要有開中斷指令,即在中斷服務(wù)的同時,允許被中斷響應(yīng)。1#2#3#主程序中斷程序1中斷程序2中斷程序3SP1#F3#IP3#CS3#F2#IP2#CS2#F
1#CS1#IPSPSPSP要設(shè)置足夠大的堆棧。31一月20248.2.1用軟件查詢確定中斷優(yōu)先權(quán)軟件查詢的方法是:當(dāng)CPU響應(yīng)中斷后,利用軟件查詢有哪些外設(shè)申請中斷,判斷哪個中斷源的級別更高,并首先為它進(jìn)行中斷服務(wù)。在實(shí)際應(yīng)用中,一般將8個外設(shè)的中斷請求觸發(fā)器組合起來,作為一個端口,并賦以端口號,如圖8.2所示。把8個外設(shè)的中斷請求信號相“或”后,作為INTR信號,這樣只要有一個外設(shè)有中斷請求,就可向CPU發(fā)出INTR信號。31一月2024圖8.2實(shí)現(xiàn)軟件查詢的接口電路
當(dāng)CPU響應(yīng)中斷后,把中斷寄存器組成的這個端口的狀態(tài)讀入CPU,逐位檢測,若有中斷請求就轉(zhuǎn)到相應(yīng)的服務(wù)程序的入口。狀態(tài)口DB片選信號31一月2024如果設(shè)定該接口的端口號為20H,程序查詢可采用兩種方法。1)屏蔽法IN AL,20H ;讀取中斷請求觸發(fā)器的狀態(tài)TEST AL,80H ;檢查“設(shè)備7”是否有請求JNE PROG7 ;是,則轉(zhuǎn)至“設(shè)備7”的處理程序PROG7TEST AL,40H ;否,檢查“設(shè)備6”是否有請求JNE PROG6 ;是,則轉(zhuǎn)至“設(shè)備6”的處理程序PROG6TEST AL,20H ;否,檢查“設(shè)備5”是否有請求JNE PROG5 ;是,轉(zhuǎn)至“設(shè)備5”的處理程序PROG5………31一月20242)移位法XOR AL,AL;AL、CF清零IN AL,20HRCL AL,l;檢查“設(shè)備7”是否有請求JC PROG7;是,則轉(zhuǎn)至“設(shè)備7”的處理程序PROG7RCL AL,1;檢查“設(shè)備6”是否有請求JC PROG6;是,則轉(zhuǎn)至“設(shè)備6”的處理程序PROG6………31一月2024
軟件查詢法的優(yōu)缺點(diǎn):
(1)優(yōu)點(diǎn):利用軟件完成中斷優(yōu)先權(quán)的檢測,不需要硬件判優(yōu)電路。另外,優(yōu)先權(quán)由查詢的次序來決定,首先查詢的即為優(yōu)先級最高的。
(2)缺點(diǎn):不管外設(shè)是否有中斷請求都需要按次序逐一詢問,因而效率較低。特別是在中斷源較多的情況下,轉(zhuǎn)至中斷服務(wù)程序的時間較長。31一月20248.2.2硬件優(yōu)先權(quán)排隊(duì)電路
1.中斷優(yōu)先權(quán)編碼電路中斷優(yōu)先權(quán)編碼電路是用硬件編碼器和比較器組成的優(yōu)先權(quán)排隊(duì)電路,如圖8.3所示。在圖中,當(dāng)8個中斷源中某一個有中斷請求時,便在其中斷請求線上產(chǎn)生“1”,并在“或”門的輸出端形成一個中斷請求信號,但它能否送至CPU的中斷請求線INTR,還受到比較器的控制。8條中斷輸入線的任一條,經(jīng)過編碼器可以產(chǎn)生三位二進(jìn)制優(yōu)先權(quán)編碼A2A1A0,編碼范圍為000~111,其中111優(yōu)先權(quán)最高,000優(yōu)先權(quán)最低。而且,當(dāng)有多個中斷源同時產(chǎn)生中斷請求時,編碼器只輸出優(yōu)先權(quán)最高的編碼。31一月2024圖8.3中斷優(yōu)先權(quán)編碼電路111、無中斷時11131一月20242、有中斷時00111131一月2024
優(yōu)先權(quán)寄存器中存放的是CPU正在服務(wù)的中斷編碼,將其輸出至比較器即B2B1B0。A2A1A0與B2B1B0在比較器中進(jìn)行比較,如果A2A1A0級別較低或與B2B1B0相同,則比較器輸出為“0”,與門1被封鎖;如果A2A1A0級別較高,比較器輸出為“1”,則與門1打開,中斷請求就被送至CPU的INTR輸入端。此時,CPU將中斷正在進(jìn)行的中斷服務(wù)程序,轉(zhuǎn)去響應(yīng)更高級別的中斷。如果CPU正在進(jìn)行中斷服務(wù),則“優(yōu)先權(quán)無效”信號為“0”;反之,則為“1”。因此,與門2保證當(dāng)CPU沒有進(jìn)行中斷服務(wù)時,只要有中斷請求,則中斷請求信號都能被送到CPU的INTR請求端。31一月20242.鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路當(dāng)有多個中斷請求輸入時,則由中斷輸入信號的與電路產(chǎn)生INTR信號,送至CPU。當(dāng)CPU在現(xiàn)行指令執(zhí)行完后響應(yīng)中斷,并發(fā)出高電平的中斷響應(yīng)信號。但CPU究竟響應(yīng)哪一個中斷呢?根據(jù)圖8.4的鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路,若F/F1有中斷請求,則它的輸出為高電平,由于來自CPU的中斷響應(yīng)是高電平,所以與門A1輸出為高電平,由它控制轉(zhuǎn)至中斷1的服務(wù)程序的入口。與此同時,與門A2輸出為低電平,它使后級的2個B門、2個C門、2個D門、2個E門等各級門的輸入和輸出全為低電平,使其無法傳遞高電平的中斷請求信號,即屏蔽了所有其他的級。31一月2024
如果第一級沒有中斷請求,即F/F1=0,則中斷輸出1為低電平,但門A2的輸出卻為高電平,這樣就把中斷響應(yīng)傳遞到了下一級。若此時F/F2=1,則與門B1輸出為高電平,控制轉(zhuǎn)去執(zhí)行中斷2的服務(wù)程序,此時與門B2輸出低電平,它屏蔽以下的各級。同理,若F/F2=0,則與門B1輸出低電平,與門B2輸出高電平,這樣就將中斷響應(yīng)再傳遞至下一級,依此類推。31一月2024圖8.4鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路位置決定優(yōu)先級別31一月2024來自外設(shè)的中斷請求信號中斷請求觸發(fā)器XXXXXXXX中斷屏蔽觸發(fā)器IF=1INTRCPUINTA124優(yōu)先權(quán)排隊(duì)判優(yōu)3成功申請個中斷容易嘛!31一月20248.3IBM-PC機(jī)的中斷系統(tǒng)8.3.1外部中斷
外部中斷是由外部中斷源對CPU產(chǎn)生的中斷請求,根據(jù)外部中斷源是否受8086/8088CPU標(biāo)志寄存器的中斷允許標(biāo)志位(IF)的影響,將中斷分為非屏蔽中斷和可屏蔽中斷兩種。對應(yīng)于這兩種中斷方式,在8086/8088CPU的外圍引腳上有兩個中斷請求輸入引腳NMI和INTR,分別用于非屏蔽中斷請求和可屏蔽中斷請求信號的輸入。31一月202431一月2024
1.非屏蔽中斷
非屏蔽中斷不受CPU中斷允許標(biāo)志位IF的影響,一旦有中斷請求,CPU必須響應(yīng)。當(dāng)外部中斷源的中斷請求信號加至NMI(NonMaskableInterrupt)引腳時,就產(chǎn)生非屏蔽中斷。
非屏蔽中斷由CPU內(nèi)部自動提供中斷向量碼(n=2),以便及時響應(yīng)。NMI中斷可用來處理微機(jī)系統(tǒng)的緊急狀態(tài)。在IBMPC/XT機(jī)中,NMI中斷用來處理存儲器奇偶校驗(yàn)錯和I/O通道奇偶校驗(yàn)錯等事件。非屏蔽中斷的優(yōu)先權(quán)高于可屏蔽中斷。31一月20242.可屏蔽中斷
可屏蔽中斷受中斷允許標(biāo)志位IF的限制,只有當(dāng)IF=1時,CPU才響應(yīng)中斷;當(dāng)IF=0時,CPU不會響應(yīng)外部中斷,即中斷被屏蔽。當(dāng)外部中斷請求信號加至CPU的INTR引腳上時,即產(chǎn)生可屏蔽中斷。在計算機(jī)系統(tǒng)中,大多數(shù)的外部中斷源都屬于可屏蔽中斷。需要注意的是,在系統(tǒng)復(fù)位、某一中斷被響應(yīng)或使用CLI指令后,IF就被置“0”,從而使CPU關(guān)閉了對可屏蔽中斷的響應(yīng)。因此,如果需要使CPU再次響應(yīng)來自于INTR的中斷請求,就必須用STI指令開放中斷。31一月20248.3.2內(nèi)部中斷
內(nèi)部中斷是指CPU內(nèi)部事件及執(zhí)行軟中斷指令所產(chǎn)生的中斷請求。已定義的內(nèi)部中斷有下面的5個。
(1)除法錯中斷。執(zhí)行除法指令時,如果除數(shù)為“0”或商超過寄存器所能表達(dá)的最大值,則無條件產(chǎn)生該中斷。該中斷向量碼為0。
(2)單步中斷。該中斷是在調(diào)試程序過程中為單步運(yùn)行程序而提供的中斷。當(dāng)設(shè)定單步操作時,標(biāo)志寄存器的TF=1,這樣使CPU執(zhí)行完一條指令就產(chǎn)生該中斷。該中斷向量碼為1。31一月2024PUSHFPOPAXORAH,01H
;修改TF位PUSHAXPOPFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
OFDFIFTFSFZF
AF
PF
CFTF置1程序ANDAH,0FEH設(shè)置TF=0程序31一月2024
(3)斷點(diǎn)中斷。該中斷在調(diào)試程序過程中為設(shè)置程序斷點(diǎn)而提供的中斷。執(zhí)行INT3指令或設(shè)置斷點(diǎn)可產(chǎn)生該中斷。INT3指令功能與軟件中斷相同,但是為了便于與其他指令置換,它被設(shè)置為1字節(jié)指令。該中斷向量碼為3。
(4)溢出中斷。在算術(shù)運(yùn)算程序中,若在算術(shù)運(yùn)算指令后加入一條INTO指令,則INTO指令將測試溢出標(biāo)志OF。當(dāng)OF=1(運(yùn)算溢出),該中斷發(fā)生。它的中斷向量碼為4。例如:ADDAX,BX
INTO
(5)軟件中斷。執(zhí)行軟件中斷指令I(lǐng)NTn即產(chǎn)生該中斷,n為中斷向量碼。31一月20248.3.3中斷優(yōu)先權(quán)
1.優(yōu)先權(quán)的判決在IBM-PC機(jī)中,當(dāng)多個中斷同時向CPU提出中斷申請時,利用可編程中斷控制器來實(shí)現(xiàn)中斷優(yōu)先權(quán)的判決。它是80x86系統(tǒng)中普遍采用的方法,也是目前使用最廣泛、最方便的方法。對于可編程中斷控制器,將在6.4節(jié)中進(jìn)行詳細(xì)分析。
2.
中斷優(yōu)先級的次序
IBM-PC規(guī)定的中斷優(yōu)先級的次序是:內(nèi)部中斷(高)→非屏蔽中斷→可屏蔽中斷→單步中斷(低)
在8086/8088系統(tǒng)中,可屏蔽中斷有8個中斷源,其中斷優(yōu)先級如表8-1所示。31一月2024表8-18086/8088的8級可屏蔽中斷源
中斷優(yōu)先級中斷源高IRQ0電子鐘時間基準(zhǔn)
低IRQ1鍵盤IRQ2保留IRQ3異步通信(COM2)IRQ4異步通信(COM1)IRQ5硬盤IRQ6軟磁盤IRQ7并行打印機(jī)31一月20248.3.4中斷向量表
1.中斷類型號(中斷向量碼)
在8086/8088的中斷系統(tǒng)中,每個中斷源都有相應(yīng)的處理程序,對每個中斷都規(guī)定有一個中斷類型號,共256個(0~255)。CPU根據(jù)這些類型號結(jié)合中斷向量表就可以轉(zhuǎn)入相應(yīng)的中斷處理程序,完成相應(yīng)的中斷服務(wù)。常用中斷類型號的功能如表8-2所示。其中,中斷類型號的前5個是8088規(guī)定的專用中斷;08H~0FH是八級硬件中斷;05H和10H~1AH是基本外部設(shè)備的輸入/輸出驅(qū)動程序和BIOS中調(diào)用的有關(guān)程序;1BH和1CH由用戶設(shè)定;1DH~1FH指向三個數(shù)據(jù)區(qū)域。31一月2024表8-2常用中斷類型號及其功能中斷類型號中斷功能中斷類型號中斷功能0H除法錯中斷10HCRT顯示I/O驅(qū)動程序1H單步中斷11H設(shè)備檢測2HNMI12H存儲器大小檢測3H斷點(diǎn)中斷13H磁盤I/O驅(qū)動程序4H溢出中斷14HRS-232I/O驅(qū)動程序5H打印屏幕15H盒式磁帶機(jī)處理6H保留16H鍵盤I/O驅(qū)動程序7H保留17H打印機(jī)I/O驅(qū)動程序8H電子鐘定時中斷18HROMBASIC9H鍵盤中斷19H引導(dǎo)(BOOT)0AH保留的硬件中斷1AH一天的時間0BH異步通信中斷(COM2)1BH用戶鍵盤I/O0CH異步通信中斷(COM1)1CH用戶定時器時標(biāo)0DH硬磁盤中斷1DHCRT初始化參數(shù)0EH軟磁盤中斷1EH磁盤參數(shù)0FH并行打印機(jī)中斷1FH圖形字符集31一月2024表8-3DOS操作系統(tǒng)中斷調(diào)用中斷類型號中斷功能20H程序結(jié)束21H請求DOS功能調(diào)用22H結(jié)束地址23H中止(Ctrl-Break)處理24H關(guān)鍵性錯誤處理25H磁盤順序讀26H磁盤順序?qū)?7H程序結(jié)束且駐留內(nèi)存28HDOS內(nèi)部使用29H~2EHDOS保留使用2FHDOS保留使用30H~3FHDOS保留使用31一月20242.中斷向量表當(dāng)一個中斷源提出中斷請求后,系統(tǒng)怎么轉(zhuǎn)入相應(yīng)的處理程序呢?在8086/8088系統(tǒng)中,系統(tǒng)是依靠中斷向量表來轉(zhuǎn)到中斷源相應(yīng)的處理程序,從而完成中斷服務(wù)。
中斷向量表是中斷類型號與相應(yīng)中斷源的中斷處理程序入口地址之間的連接表。8086/8088微機(jī)系統(tǒng)用內(nèi)存最低端的1KB空間作為中斷向量表(00000H~003FFH,共1KB),共有256個中斷類型號,按序號排列。在微機(jī)系統(tǒng)初始化時,利用程序?qū)⒅袛嘞蛄繉懭胂到y(tǒng)內(nèi)存的最低端,如圖8.5所示。31一月2024圖8.5中斷向量表
31一月2024
每個中斷向量在內(nèi)存中占4個字節(jié),共256個中斷向量,因此占存儲器1KB的空間。在一個中斷向量的4個字節(jié)中,高地址字為中斷處理程序的段地址CS,低地址字則是偏移地址IP。在中斷響應(yīng)時,CPU就可以根據(jù)中斷類型號n,通過簡單的4×n運(yùn)算,查找中斷向量表,從表中4×n地址開始的連續(xù)4字節(jié)單元里獲取中斷處理程序的入口地址,從而轉(zhuǎn)入相應(yīng)中斷服務(wù)程序。IPLIPHCSLCSH4*n4*n+14*n+24*n+3IPCSCS:IP中斷處理程序中斷矢量表31一月20248.3.5微處理器的中斷響應(yīng)和處理過程通過對中斷向量表的分析,當(dāng)?shù)玫侥骋恢袛嘣吹闹袛囝愋痛a后,即可轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。因此,在對8086/8088系統(tǒng)中不同中斷類型的分析上,主要看它們是如何獲得中斷類型碼的。
對于外部中斷,CPU是在每條指令執(zhí)行結(jié)束時采樣中斷請求輸入信號。
如果有可屏蔽中斷請求,且IF=1(開中斷),則CPU連續(xù)運(yùn)行兩個中斷響應(yīng)周期,在第二個中斷響應(yīng)周期中,采樣數(shù)據(jù)線獲取由外設(shè)輸入的中斷類型碼。
如果采樣到非屏蔽中斷請求,則CPU不經(jīng)過上述的兩個中斷響應(yīng)周期,而在內(nèi)部自動產(chǎn)生中斷類型碼2。對于軟件中斷,中斷類型碼則自動形成,具體安排如表8-4所示。31一月2024表8-4軟件中斷類型碼除法錯中斷0單步中斷1NMI2斷點(diǎn)中斷3溢出中斷4中斷功能中斷類型碼INT
n指令n31一月20248086/8088取得中斷類型碼后,就開始進(jìn)行中斷服務(wù)。其處理過程如下:
(1)將中斷類型號乘4,并將其作為中斷向量表的指針,使其指向中斷處理程序的入口地址。
(2)保存CPU狀態(tài),即把標(biāo)志寄存器的內(nèi)容入棧。
(3)使TEMP=TF,清除IF和TF的狀態(tài)標(biāo)志位,屏蔽新的INTR和單步中斷。
(4)保存斷點(diǎn),即把CS和IP內(nèi)容入棧。
(5)從中斷向量表中獲取CS、IP,轉(zhuǎn)入中斷處理子程序入口地址。31一月2024(6)將CPU內(nèi)部各寄存器的內(nèi)容入棧,開中斷(允許中斷嵌套),然后執(zhí)行中斷處理子程序,進(jìn)行中斷服務(wù)。當(dāng)中斷處理程序結(jié)束時,恢復(fù)被保存寄存器的內(nèi)容,最后執(zhí)行中斷返回指令I(lǐng)RET。IRET指令將從堆棧中彈出IP、CS和標(biāo)志寄存器的內(nèi)容,此時,CPU結(jié)束中斷處理子程序的運(yùn)行,返回到被中斷的主程序斷點(diǎn)處繼續(xù)執(zhí)行。31一月2024
。。。。
2068:010BMOVDX,26B7H2068:010FMOVAH,09H2068:0110INT21H
。。。。主程序010E2068F中斷前SP進(jìn)入中斷SP保護(hù)現(xiàn)場后SP恢復(fù)現(xiàn)場后SP中斷返回后SP1、進(jìn)入中斷響應(yīng)周期獲取中斷類型號(例如80H)2、標(biāo)志寄存器內(nèi)容入棧3、TF、IF清零4、CS、IP內(nèi)容入棧5、由類型號得到的中斷矢量表地址得到中斷服務(wù)程序入口地址分別送IP和CS,從而進(jìn)入中斷服務(wù)程序(表地址80H*4)6、現(xiàn)場保護(hù)7、開中斷8、中斷服務(wù)9、關(guān)中斷10、恢復(fù)現(xiàn)場11、中斷返回IRETIPINTCSINT80H*431一月2024圖8.68088的中斷響應(yīng)和處理流程8086/8088的中斷處理過程可用圖8.6所示的流程圖表示。IF=1?31一月20248.4可編程中斷控制器Intel8259A8.4.1Intel8259A的主要性能和內(nèi)部結(jié)構(gòu)
1.Intel8259A的主要性能
Intel8259A是被廣泛使用的可編程中斷控制器,在IBM-PC/XT機(jī)中,就使用Intel8259A作為中斷控制器。它用來管理輸入到CPU的可屏蔽中斷請求,其主要功能有:31一月2024(1)可以直接管理8個中斷源,級聯(lián)方式下不用附加電路就可以管理64個可屏蔽中斷源,并具有優(yōu)先權(quán)判決功能。
(2)能為中斷源提供中斷向量碼。
(3)可以對每一級中斷進(jìn)行屏蔽控制。
(4)可提供多種可供選擇的工作方式,并能通過編程進(jìn)行控制。31一月20242.Intel8259A的內(nèi)部結(jié)構(gòu)圖8.78259A的內(nèi)部結(jié)構(gòu)框圖31一月2024
其內(nèi)部各組成模塊有如下功能。
1)中斷請求寄存器IRR8259A有8條外部中斷請求輸入信號線IR0~I(xiàn)R7,每一條請求線上有一個相應(yīng)的觸發(fā)器來保存請求信號,它們構(gòu)成了中斷請求寄存器IRR(InterruptRequestRegister)。外部設(shè)備產(chǎn)生中斷請求有兩種方式:一種是邊沿觸發(fā)方式,它利用脈沖上升沿的跳變,并一直保持高電平直到中斷被響應(yīng)為止;另一種是電平觸發(fā)方式,它通過輸入并保持高電平來實(shí)現(xiàn)中斷請求。31一月20242)中斷屏蔽寄存器IMRIMR(InterruptMaskRegister)用來存放屏蔽位信息,IMR的每一位可以禁止IRR中對應(yīng)位的中斷請求輸入信號進(jìn)入。但屏蔽優(yōu)先權(quán)級別較高的中斷請求輸入,不會影響優(yōu)先級較低的中斷請求輸入。
3)中斷服務(wù)寄存器ISRISR(InterruptServiceRegister)存放當(dāng)前正在進(jìn)行服務(wù)的所有中斷。ISR中相應(yīng)位的置位是在中斷響應(yīng)的INTA脈沖期間,由優(yōu)先權(quán)判決電路根據(jù)IRR中各請求位的優(yōu)先權(quán)級別和IMR中屏蔽位的狀態(tài),將中斷的最高優(yōu)先級請求位選通到ISR中。31一月20244)優(yōu)先權(quán)判決電路它在中斷響應(yīng)期間,根據(jù)控制邏輯規(guī)定的優(yōu)先權(quán)級別和IMR的內(nèi)容,把IRR中允許中斷的優(yōu)先權(quán)最高的中斷請求位送入ISR。
5)控制邏輯在8259A的控制邏輯電路中有一組預(yù)置命令字寄存器和一組操作命令字寄存器,利用它們通過編程設(shè)置來管理8259A的工作方式。當(dāng)有未被屏蔽的高級別的中斷請求時,通過控制邏輯輸出高電平的INT信號,向CPU申請中斷。當(dāng)CPU允許中斷時,發(fā)出中斷響應(yīng)信號INTA。在中斷響應(yīng)期間,它使ISR的相應(yīng)位置位,并發(fā)送相應(yīng)的中斷類型號,通過數(shù)據(jù)總線緩沖器輸出到總線上。31一月2024
6)數(shù)據(jù)總線緩沖器這是8位雙向三態(tài)緩沖器,用作8259A與數(shù)據(jù)總線的接口,傳輸命令控制字、狀態(tài)字和中斷向量。
7)讀/寫控制電路該部件接收來自CPU的讀/寫命令,實(shí)現(xiàn)對8259A的讀/寫操作。
8)級聯(lián)緩沖器/比較器它們實(shí)現(xiàn)8259A芯片之間的級聯(lián),使得中斷源可以由8級擴(kuò)展至64級。31一月20243.8259A的工作過程根據(jù)8259A的內(nèi)部結(jié)構(gòu),其工作的過程如下:
(1)外部中斷源通過IR0~I(xiàn)R7輸入中斷請求信號。
(2)外部中斷源的中斷請求信號使中斷請求觸發(fā)器IRR的相應(yīng)位置“1”,并與IMR按位相比較,送給優(yōu)先權(quán)判決電路。
(3)優(yōu)先權(quán)判決電路從IRR中檢測出優(yōu)先級最高的中斷請求位,并將其與ISR中記錄的正在被CPU服務(wù)的中斷進(jìn)行優(yōu)先級比較。當(dāng)提請的中斷優(yōu)先級高于正在服務(wù)的中斷優(yōu)先級時,中斷優(yōu)先權(quán)判決電路就向控制邏輯發(fā)出有效的中斷請求信號。31一月2024(4)當(dāng)控制邏輯收到有效的中斷請求信號時,向CPU發(fā)出高電平信號INTR,請求中斷服務(wù)。
(5)在中斷允許的情況下(IF=1),CPU接受中斷請求INT,并發(fā)出中斷響應(yīng)信號INTA,對8086/8088CPU,將連續(xù)發(fā)出兩個INTA脈沖。
(6)當(dāng)8259A接到來自CPU的第一個INTA脈沖時,就把允許中斷的最高優(yōu)先級請求位置入ISR,并把IRR中的相應(yīng)位復(fù)位。如果工作在級聯(lián)方式下,而且從設(shè)備的優(yōu)先級最高,則主控8259A將送出級聯(lián)地址CAS0~CAS2,將其加載至從屬8259A上。31一月2024(7)在第二個INTA脈沖,對單獨(dú)使用或是級聯(lián)方式下從屬的8259A,將其中斷類型號發(fā)送至數(shù)據(jù)總線。
(8)CPU從數(shù)據(jù)總線上獲取中斷類型號,從中斷向量表4*n~4*n+3處取出中斷服務(wù)程序入口地址,轉(zhuǎn)到相應(yīng)的中斷處理程序。
(9)中斷結(jié)束時,通過在中斷處理程序中向8259A發(fā)送一條EOI(中斷結(jié)束)命令,使ISR相應(yīng)位復(fù)位,或在AEOI(自動中斷結(jié)束)方式下,由8259A在第二個INTA脈沖的后沿自動將ISR相應(yīng)位復(fù)位。31一月2024IR30000000100000000ISRIMR優(yōu)先權(quán)比較器IRRIR0IR1IR2IR4IR5IR6IR71INTINTRINTAINTA10執(zhí)行中斷結(jié)束命令MOVAL,20HOUT20H,AL從中斷矢量表取出中斷服務(wù)程序入口地址轉(zhuǎn)中斷服務(wù)程序1、無總線請求、2、當(dāng)前指令執(zhí)行完3、IF=1CPU中斷類型號nDB31一月2024IR300010001000000000000000ISRIMR優(yōu)先權(quán)比較器IRRIR0IR1IR2IR4IR5IR6IR70INTINTA11INTAINTR1中斷類型號nDB在IR1中斷服務(wù)程序結(jié)束前,執(zhí)行中斷結(jié)束命令MOVAL,20HOUT20H,AL在IR3中斷服務(wù)程序結(jié)束前,執(zhí)行中斷結(jié)束命令MOVAL,20HOUT20H,AL031一月2024
級聯(lián)線CAS0~CAS2是8259A相互間連接用的專用總線,用來構(gòu)成8259A的主—從式級聯(lián)控制結(jié)構(gòu)。當(dāng)8259A作為主設(shè)備時,CAS0~CAS2是輸出信號;當(dāng)8259A作為從設(shè)備時,它們是輸入線。編程時設(shè)定的8259A的從設(shè)備標(biāo)志保存在級聯(lián)緩沖器內(nèi),系統(tǒng)中全部8259A級聯(lián)線的對應(yīng)端互連。31一月2024可管理22級外部中斷31一月2024
在中斷響應(yīng)期間,主8259A把所有申請中斷的從設(shè)備中優(yōu)先級最高的8259A的從設(shè)備標(biāo)志輸出到級聯(lián)線CAS0~CAS2上,從8259A把這個設(shè)備標(biāo)志與級聯(lián)緩沖器內(nèi)保存的從設(shè)備標(biāo)志進(jìn)行比較。在后續(xù)的INTA脈沖期間,被選中的8259A從設(shè)備把中斷向量送到數(shù)據(jù)總線上。這個中斷向量也是在編程時預(yù)先設(shè)定的,保存在控制邏輯部件內(nèi)。31一月20248.4.2Intel8259A的外部特性31一月2024在上圖中,各引腳的名稱如下:D0~D7:雙向8位雙數(shù)總線。RD:讀輸入信號。WR:寫輸入信號。A0:地址選擇輸入。CS:片選輸入。CAS0~CAS2:級聯(lián)線。31一月2024SP/EN:雙功能線。8259A工作在緩沖方式時,該引腳輸出低電平控制信號,用來控制系統(tǒng)總線與8259A數(shù)據(jù)引線之間的數(shù)據(jù)緩沖器,使中斷向量碼能在第二個INTA周期正常從8259A輸出。當(dāng)8259A工作在級聯(lián)方式時,該引腳為輸入,SP=1,設(shè)定8259A為主控器;SP=0,設(shè)定8259A為從屬部件。
IR0~I(xiàn)R7:中斷請求輸入。
INT:8259A向CPU輸出的中斷請求端,與CPU的INTR引腳相連。
INTA:中斷響應(yīng)輸入端,接收CPU向8259A輸入的中斷響應(yīng)信號。31一月20248.4.3Intel8259A的控制字和編程
8259A是可編程控制器,它根據(jù)CPU的命令進(jìn)行工作。通過對控制字的編程控制,來初始化和控制8259A工作方式,使其完成規(guī)定的功能。CPU對8259A的控制命令分為兩類:一類是初始化控制字(ICW),另一類是操作命令字(OCW)。8259A共有7個控制字,其中4個是初始化控制字,3個是操作控制字。
8259A的編程分為兩部分:一是初始化編程,它是通過初始化控制字來完成對8259A初始狀態(tài)的設(shè)定,在計算機(jī)加電初始化時由BIOS完成的;二是操作方式的編程,它是通過操作命令字來控制8259A的工作方式,操作命令字可在8259A初始化后的任何時間寫入。31一月2024
1.8259A的初始化控制字及初始化編程初始化控制字ICW(InitializationControlWord)是在計算機(jī)啟動的過程中設(shè)定完成的,計算機(jī)啟動起來后,8259A就按初始設(shè)定的狀態(tài)工作。
1)8259A初始化的順序
8259A有四條初始化控制字ICWl、ICW2、ICW3和ICW4,由于8259A只有一根地址線,因此對各個控制字的操作是按照一定的順序并結(jié)合某些數(shù)據(jù)位來進(jìn)行尋址設(shè)置的。8259A初始化的順序如圖8.9所示。31一月2024圖8.98259A的初始化順序31一月20242)各初始化控制字的功能(1)ICW1的控制字格式如圖8.10所示。ICW1啟動8259A的初始化過程,產(chǎn)生下列動作:清除IMR,把最低優(yōu)先級分配給IR7,把最高優(yōu)先級分配給IR0,清除特殊屏蔽方式,設(shè)置讀IRR方式。31一月2024LTIM:中斷輸入寄存器的觸發(fā)方式。0為邊沿觸發(fā),中斷輸入信號上升沿時被識別并送入IRR。1為電平觸發(fā),中斷輸入信號為高電平即可進(jìn)入IRR。這兩種觸發(fā)方式都要求高電平的請求信號在置位IRR相應(yīng)位后一直保持,直到中斷被響應(yīng)為止。
ADI:設(shè)定8080(85)方式下的中斷向量地址間隔的字節(jié)數(shù),1為4字節(jié),0為8字節(jié)。在8086/8088方式下此位不用。
SNGL:單個器件/級聯(lián)方式指示。1表示系統(tǒng)中只有一個8259A,0表示級聯(lián)方式。
IC4:該位用于設(shè)定有無ICW4。1表示使用ICW4,在8086/8088方式下,必須使用ICW4。0表示不用ICW4,此時ICW4所選擇的全部功能位都置成0。31一月2024(2)ICW2在8086/8088方式下,用于提供8個中斷源的中斷向量碼。ICW2的高5位T7~T3在初始化編程時設(shè)置,初始化低3位由8259A用中斷源的編號填寫。在8080(85)方式下,ICW2是中斷向量地址的A15~A8位,低位地址在ICWl的A7~A5中。
ICW2的命令字格式如圖8.11所示。圖8.11ICW2的格式31一月2024ICW2利用A0=1和初始化的次序來尋址。在8086/8088系統(tǒng)中,初始化控制字ICW2是比較重要的,它確定了8259A外接中斷源的起始中斷向量碼,并實(shí)現(xiàn)了每個中斷源中斷向量碼的自動生成。下面舉例說明中斷向量碼的形成情況。在初始化編程時要保持ICW2的低三位為“0”,如設(shè)定ICW2為“11111000”(F8H)。如果某一中斷源IRn有中斷請求,將n填入ICW2的低3位,與高5位共同組成該中斷源的中斷向量碼,如表8-5所示。31一月2024表8-5中斷向量碼的形成情況11111111FFHIR7ICW2
D7D6D5D4D3D2D1D0中斷向量碼中斷源
11111000F8HIR011111001F9HIR111111010FAHIR211111011FBHIR311111100FCHIR411111101FDHIR511111110FEHIR631一月2024(3)ICW3用于8259A的級聯(lián),若系統(tǒng)中只有一片8259A,則不用ICW3;若8259A工作于級聯(lián)方式,則需要用ICW3設(shè)置8259A的狀態(tài)。是否需要ICW3,取決于ICWl中的SNGL位的狀態(tài)。在級聯(lián)方式下,主控8259A的ICW3表示8259A的級聯(lián)結(jié)構(gòu),ICW3中被置位的位表示對應(yīng)的IRn輸入端接有從屬8259A,并與從屬8259A的INT輸出端相連。在中斷響應(yīng)過程中,如果從屬8259A發(fā)出中斷請求的優(yōu)先級最高,則中斷向量由相應(yīng)的從設(shè)備8259A發(fā)送。主控8259A的ICW3格式如圖8.12所示。31一月2024圖8.12ICW3的格式從片31一月2024
對于從設(shè)備8259A,ICW3中低3位是從設(shè)備標(biāo)志代碼,它等于主設(shè)備對應(yīng)IR輸入端的編碼。在中斷響應(yīng)過程中,主設(shè)備把IRn的編碼n送上級聯(lián)線CAS2~CAS0,從設(shè)備把它與自己的從設(shè)備標(biāo)志進(jìn)行比較,并把比較結(jié)果相等的從設(shè)備的中斷向量送到數(shù)據(jù)總線上。從設(shè)備的ICW3格式如圖8.12所示。
ICW3利用A0=1和ICW1中SNGL=1及初始化順序?qū)ぶ?。?259從8259從8259IR2IR5INTINTICW3:00100100ICW3:00000010ICW3:00000101CAS0CAS1CAS2010IR0IR1IR3IR4IR6IR7IR0’IR0’’IR7’IR7’’n31一月2024(4)ICW4只有在ICW1的IC4=1時才使用,其格式如圖8.13所示。圖8.13ICW4格式31一月2024
μPM:CPU類型選擇,為1時用于8086/8088系統(tǒng)中,為0時則工作于8080/8085系統(tǒng)中。
AEOI:選擇是否為自動中斷結(jié)束方式。為1時為自動中斷結(jié)束方式;為0時不用自動中斷結(jié)束方式,此時必須在中斷服務(wù)程序中使用EOI命令,使ISR中最高優(yōu)先權(quán)的位復(fù)位。
M/S:在緩沖方式下有效,決定8259A作為主設(shè)備還是作為從設(shè)備工作。當(dāng)BUF=1和M/S=1時,8259A按主設(shè)備工作;當(dāng)BUF=1和M/S=0時,8259A按從設(shè)備工作。如果在非緩沖方式下,M/S位不起作用。31一月2024BUF:用于指示8259A是否工作在緩沖方式,由此決定了8259A的SP/EN端的功能。為1時,8259A工作于緩沖方式,SP/EN用作允許緩沖器接收/發(fā)送的輸出控制信號EN;為0時,8259A不工作于緩沖方式,SP/EN用作主設(shè)備/從設(shè)備選擇的輸入控制信號SP。
SFNM:這一位用來選擇8259A在級聯(lián)方式下是否工作于特殊全嵌套方式。如果主設(shè)備編程時設(shè)置SFNM=1,即為特殊全嵌套方式,它可確保從設(shè)備的中斷輸入實(shí)現(xiàn)真正的完全嵌套優(yōu)先權(quán)結(jié)構(gòu)。如果SFNM=0,表示8259A工作于一般全嵌套方式。
ICW4利用A0=1、IC4=1和初始化的順序?qū)ぶ贰?1一月202431一月2024
2.8259A的控制命令字及操作方式編程對8259A初始化完成后就進(jìn)入工作狀態(tài),準(zhǔn)備好接受中斷源的中斷請求信號。在8259A工作期間,可通過操作命令字OCW(OperatingCommandWord)來使它按不同的方式進(jìn)行操作,8259A操作命令字可在初始化后的任何時刻寫入8259A。操作命令字共有三個:OCW1、OCW2、OCW3。31一月2024
1)8259A操作命令字的尋址當(dāng)初始化完成后,對8259A操作命令字的尋址是通過8259A的地址線A0和某些數(shù)據(jù)位結(jié)合來進(jìn)行的。具體尋址條件如下:當(dāng)A0=1時,尋址OCW1;當(dāng)A0=0,D4=0,D3=0時,尋址OCW2;當(dāng)A0=0,D4=0,D3=1時,尋址OCW3。1比較:ICW1其它ICW2、ICW3、ICW4的A0=131一月20242)8259A的操作命令
(1)OCW1。當(dāng)A0=1時,可尋址OCW1。OCW1是中斷屏蔽命令字,其格式如圖8.14所示。
OCW1用來設(shè)置8259A的屏蔽操作,OCWl的每一位對應(yīng)中斷屏蔽寄存器IMR的相應(yīng)屏蔽位,通過OCW1對IMR進(jìn)行置位和復(fù)位操作。初始化時,IMR=0,允許所有外部的中斷源申請中斷。圖8.14OCW1格式31一月2024
(2)OCW2。當(dāng)A0=0,D4=D3=0時可尋址OCW2。OCW2用于控制中斷結(jié)束、優(yōu)先權(quán)循環(huán)等操作。
OCW2命令或方式的選擇以位的組合格式來設(shè)置,而不是按位設(shè)置。OCW2的格式和各位的功能如圖8.15所示。31一月2024圖8.15OCW2的格式11831一月2024
R:優(yōu)先權(quán)循環(huán)控制位。R=1為循環(huán)優(yōu)先權(quán),R=0為固定優(yōu)先權(quán)。
SL:選擇指定的IR級別位。SL=1,操作在L2~L0指定的編碼級別上執(zhí)行;SL=0,L2~L0無效。
EOI:中斷結(jié)束命令位,在非自動中斷結(jié)束命令情況下,EOI=1表示中斷結(jié)束命令,它使ISR中最高優(yōu)先權(quán)位復(fù)位;EOI=0則不起作用。
L0~L2:指定操作起作用的IR級別碼。當(dāng)SL=1時,L0~L2指定的級別編碼才起作用。以上各位的組合功能見圖8.15所示。31一月2024
(3)OCW3。當(dāng)A0=0,D4=0,D3=1時,尋址OCW3。OCW3主要控制8259A的中斷屏蔽、查詢和讀寄存器等狀態(tài)。OCW3的格式及各位功能如圖8.16所示。圖8.16OCW3的格式31一月2024
P:查詢命令位。P=1時,8259A發(fā)送查詢命令;P=0時,不處于查詢方式。OCW3設(shè)置查詢方式以后,隨后送到8259ARD端的讀脈沖作為中斷響應(yīng)信號,讀出最高優(yōu)先權(quán)的中斷請求IR級別碼。
ESMM:允許或禁止SMM位起作用的控制位。ESMM為1時允許SMM位起作用,為0時禁止SMM位起作用。
SMM:設(shè)置特殊屏蔽方式選擇位。與ESMM位共同起作用。31一月2024RR:讀寄存器命令位。RR=1時允許讀IRR或ISR,RR=0時禁止讀這兩個寄存器。
RIS:讀IRR或ISR選擇位。
0CH為中斷查詢命令;
0AH為讀IRR命令編碼;0BH為讀ISR命令編碼。31一月20248.4.4Intel8259A的工作方式
8259A通過編程可以設(shè)置各種工作方式,因而能適應(yīng)不同系統(tǒng)環(huán)境的要求。
1.中斷屏蔽方式
8259A有兩種形式的屏蔽方式:一般屏蔽方式和特殊屏蔽方式。
1)一般屏蔽方式在正常情況下,當(dāng)一個中斷請求被響應(yīng)時,8259A將禁止同級和較低優(yōu)先級的中斷請求,這就是一般屏蔽方式。31一月20242)特殊屏蔽方式在一些特殊的場合,如需要均等服務(wù),此時就需要對中斷的優(yōu)先權(quán)進(jìn)行動態(tài)管理,一般屏蔽方式就不能滿足要求。另外,如果一個高級別的中斷源持續(xù)中斷請求,就會使某些優(yōu)先級較低的中斷源長時間得不到服務(wù)等等。這就是引入特殊屏蔽方式的原因。在特殊屏蔽方式下,使用OCW1讓某個屏蔽位置位時,就禁止在這一級上再次產(chǎn)生中斷,而允許其他較高或較低的未屏蔽的優(yōu)先級產(chǎn)生中斷。這樣通過OCW1對IMR的操作控制,就可以有選擇地允許或禁止某些中斷。31一月2024
特殊屏蔽方式由OCW3來設(shè)置,當(dāng)ESMM=1、SMM=1時就可設(shè)置此種方式;當(dāng)ESMM=1、SMM=0時即可清除。
設(shè)置:MOVAL,01101000B
取消:MOVAL,01001000OUT20H,ALOUT20H,AL
設(shè)置了特殊屏蔽方式后,再編程使IMR某位置位,就會同時使ISR的相應(yīng)位復(fù)位。這樣,就不只屏蔽了當(dāng)前正在處理的這級中斷,而且真正開放了其他級別較低的中斷,當(dāng)然未被屏蔽的更高級中斷也可以得到響應(yīng).31一月20242.查詢方式
8259A也可以用查詢方式來檢查請求中斷的設(shè)備。當(dāng)CPU關(guān)中斷時,中斷輸入信號將不起作用,那么對設(shè)備的服務(wù)就可通過軟件查詢來實(shí)現(xiàn)。查詢命令是通過OCW3中P=1發(fā)出的,8259A接到查詢命令后,把隨后的一次CPU讀操作當(dāng)作中斷響應(yīng)信號,如果有中斷請求,就把ISR相應(yīng)的位置位,并讀出該中斷級別,如圖8.17所示。從發(fā)出查詢命令的寫脈沖開始,到讀出查詢結(jié)果的讀脈沖為止,這段時間里中斷被“凍結(jié)”。其中,I為有無中斷的標(biāo)志,當(dāng)I=1時,W2~W0為請求中斷服務(wù)的最高優(yōu)先權(quán)中斷源的二進(jìn)制編碼。31一月2024圖8.17查詢方式讀出的中斷狀態(tài)字例如:查詢中斷狀態(tài)
MOVAL,00001100BOUT20H,ALINAL,20H;
AL寄存器中最高位為1,表示有中斷請求,最低3位為其請求編碼。比如(AL)=10000010,則說明IR2有中斷請求。31一月20243.優(yōu)先級方式
8259A對優(yōu)先級的控制是通過操作命令字OCW2來設(shè)置的,它有兩種優(yōu)先級方式:
1)固定優(yōu)先級方式
當(dāng)8259A初始化完成后,就為固定優(yōu)先級方式,即8個中斷請求的優(yōu)先級從高到低依次為:IR0→IR1→IR2→IR3→IR4→IR5→IR6→IR7,IR0優(yōu)先級最高,IR7優(yōu)先級最低,該順序固定不變。
31一月2024
2)循環(huán)優(yōu)先級方式循環(huán)優(yōu)先級方式是將8個中斷源IR0~I(xiàn)R7按固定順序構(gòu)成一個閉合的環(huán),具體有兩種實(shí)現(xiàn)方法。
(1)自動優(yōu)先級循環(huán)。該方法規(guī)定剛被服務(wù)過的中斷源優(yōu)先級最低,其他中斷源的優(yōu)先級將依閉合環(huán)順序變化。例如,CPU對IR3中斷服務(wù)結(jié)束后,8259A的8個中斷源優(yōu)先順序由高到低為IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3。這種工作模式可通過OCW2來設(shè)置。
OCW2100000000B或者1010000031一月2024
(2)指定循環(huán)優(yōu)先級。該方法規(guī)定在OCW2中指定的中斷源優(yōu)先級最低,其他中斷源的優(yōu)先級將按閉合環(huán)順序變化。例如,設(shè)置OCW2的R=1,SL=1,EOI=0,則OCW2中L2~L0所對應(yīng)的中斷源級別最低。假如L2L1L0編碼為010,即指定IR2的優(yōu)先級最低,8個中斷源的優(yōu)先級順序?qū)⒆優(yōu)椋篒R3、IR4、IR5、IR6、IR7、IR0、IR1、IR2。例如OCW2為:11000010指定IR2級別最低。優(yōu)先權(quán)也可以在執(zhí)行EOI命令時進(jìn)行改變,只要設(shè)置OCW2的R=1,SL=1,EOI=1,同樣也使OCW2中L2~L0所對應(yīng)的中斷源級別最低。循環(huán)優(yōu)先級控制使8259A在中斷控制過程中可以靈活地改變各中斷源的優(yōu)先順序,使每個中斷源都有機(jī)會得到及時的服務(wù)。31一月2024
4.嵌套方式嵌套方式用來進(jìn)行優(yōu)先級控制,8259A的嵌套方式有兩種形式。
1)全嵌套方式(一般嵌套方式)
在8259A初始化完成后,就處于固定中斷優(yōu)先權(quán)方式。全嵌套方式是指當(dāng)CPU正在對某中斷源進(jìn)行服務(wù)時,在中斷服務(wù)程序完成之前,將會屏蔽同級或更低級中斷源的中斷請求,只有優(yōu)先權(quán)比它高的中斷源的中斷請求才能被響應(yīng)(CPU已開中斷)。這種方式一般用在單片使用8259A或級聯(lián)方式下的從屬8259A上。31一月2024全嵌套方式31一月20242)特殊全嵌套方式
8259A以級聯(lián)方式工作時,要求主控制器8259A在對一個從屬8259A送來的中斷進(jìn)行服務(wù)的過程中,還能夠?qū)ν粋€從屬8259A上另外的中斷源進(jìn)行中斷服務(wù),這就需要采用特殊的全嵌套模式IR2IR5INTCAS0CAS1CAS2IR0IR1IR3IR7IR0’IR7’從8259主8259IR3’111100111031一月2024
特殊全嵌套方式是為實(shí)現(xiàn)多重中斷而專門設(shè)置的,這種方式與全嵌套方式的工作情況基本相同,不同點(diǎn)有以下兩個方面。
(1)在級聯(lián)方式下的主控制器8259A上,它允許同級優(yōu)先權(quán)之間中斷。這樣,如果CPU響應(yīng)了從屬8259A某一中斷源的中斷請求后,這個從屬8259A上優(yōu)先權(quán)高于正在服務(wù)的中斷源,另一個中斷請求也可以得到響應(yīng)。
(2)如果主控8259A的某一端接有從屬8259A,這個中斷源要退出中斷服務(wù)程序前,必須檢查它是否是這個從屬8259A中唯一的中斷源,只有在惟一的情況下才能送一個EOI命令至主8259A,以結(jié)束此從屬8259A的中斷。檢查的辦法是送一個一般EOI命令給從屬8259A,當(dāng)它的ISR為0時,說明它的中斷源是唯一的。31一月20245.中斷結(jié)束方式
8259A中的內(nèi)部服務(wù)寄存器ISR用來記錄哪一個中斷源正在被CPU服務(wù),當(dāng)中斷結(jié)束時,必須給8259A一個命令,以清除ISR的相應(yīng)位。8259A有兩種中斷結(jié)束方式。
1)自動結(jié)束方式(AEOI)
這種方式不需要EOI命令,對8086/8088系統(tǒng),8259A在第2個INTA脈沖的后沿自動執(zhí)行使ISR的相應(yīng)位復(fù)位。由于這種方式在中斷服務(wù)過程中使ISR相應(yīng)位復(fù)位,就有可能響應(yīng)優(yōu)先級更低的中斷,因此不適合有中斷嵌套的情況。31一月20242)非自動結(jié)束方式(EOI)
這種方式是在中斷處理程序中提供一條EOI(中斷結(jié)束)命令,使8259A中的ISR相應(yīng)位復(fù)位。如果是級聯(lián)方式,則必須送兩個EOI命令,第一個先送從屬8259A,第二個送主控8259A,特別是在特殊嵌套的情況下,必須按此次序發(fā)送。
EOI命令由OCW2來設(shè)置,有兩種形式。
(1)一般中斷結(jié)束命令(EOI)。該命令對正在服務(wù)的中斷源的ISR復(fù)位。當(dāng)8259A工作在全嵌套方式時,且剛被CPU服務(wù)的中斷源優(yōu)先級最高,此時就可以使用該命令對正在服務(wù)的中斷源的ISR復(fù)位。一般EOI命令通常放置在中斷返回指令之前。31一月2024(2)特殊中斷結(jié)束命令(SEOI)。該命令對指定中斷源的ISR復(fù)位。在特殊的全嵌套方式下,8259A可能無法確定剛被服務(wù)過的中斷源的級別,此時就可用SEOI命令,通過OCW2中的L2~L0來指定ISR中要復(fù)位的位。如:MOVAL,65H;01100101指定結(jié)束1R5的中斷
OUT20H,AL
但如果該位在特殊的屏蔽模式中由IMR屏蔽,則不能使用SEOI命令。10031一月202431一月2024
6.緩沖方式
當(dāng)8259A以級聯(lián)方式用在一個大的系統(tǒng)下時,就要求對數(shù)據(jù)總線進(jìn)行驅(qū)動緩沖。緩沖方式就是用來設(shè)定系統(tǒng)總線與8259A數(shù)據(jù)總線之間是否需要進(jìn)行緩沖。
(1)非緩沖方式。在指定非緩沖方式時,SP/EN作為輸入,用來識別8259A是主控制器還是從屬控制器。
(2)緩沖方式。此方式下SP/EN為輸出,EN作為允許緩沖器發(fā)送/接收的控制信號。31一月2024主從從31一月202431一月20247.讀8259A的狀態(tài)
CPU可以讀出8259A內(nèi)部的IRR、ISR、IMR
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《化學(xué)電源制造技能訓(xùn)練》教學(xué)大綱
- 教案設(shè)計(印刷)
- 玉溪師范學(xué)院《網(wǎng)球》2021-2022學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《商業(yè)銀行業(yè)務(wù)與經(jīng)營》2023-2024學(xué)年第一學(xué)期期末試卷
- 一片槐樹葉課件
- 深圳市龍華區(qū)七年級語文 中段學(xué)情檢測2024-2025學(xué)年第一學(xué)期 統(tǒng)編版
- 2024屆河北省邯鄲市磁縣滏濱中學(xué)高三1月教學(xué)質(zhì)量檢測試題數(shù)學(xué)試題試卷
- 餐飲底料購銷合同范本
- 材料質(zhì)量要求和質(zhì)量標(biāo)準(zhǔn)合同
- 玻璃幕墻安全協(xié)議書
- 纏論基本概念圖解(推薦)
- 海瑞克英文翻譯
- 培訓(xùn)師經(jīng)常用到的七大培訓(xùn)方式及操作方法
- 魯教版美術(shù)九年級下冊教學(xué)設(shè)計
- 電力施工現(xiàn)場應(yīng)急預(yù)案
- 模具斜與蝕紋關(guān)系對照表
- 環(huán)氧自流平工程質(zhì)量驗(yàn)收單
- 大豆栽培技術(shù)PPT課件
- 導(dǎo)尿管相關(guān)尿路感染目標(biāo)性監(jiān)測方案
- 銷售手冊(共33頁).doc
- 美國最大的汽車俱樂部AAA
評論
0/150
提交評論