微機(jī)原理與接口中斷技術(shù)及中斷系統(tǒng)_第1頁
微機(jī)原理與接口中斷技術(shù)及中斷系統(tǒng)_第2頁
微機(jī)原理與接口中斷技術(shù)及中斷系統(tǒng)_第3頁
微機(jī)原理與接口中斷技術(shù)及中斷系統(tǒng)_第4頁
微機(jī)原理與接口中斷技術(shù)及中斷系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第7章 輸入/輸出與中斷 17.3 中中 斷斷 技技 術(shù)術(shù) 7.3.1 中斷的基本概念中斷的基本概念 1中斷的定義中斷的定義 在在CPU執(zhí)行程序的過程中,出現(xiàn)了某種緊急或異常的事件執(zhí)行程序的過程中,出現(xiàn)了某種緊急或異常的事件(中斷請求中斷請求),CPU需暫停正在執(zhí)行的程序,轉(zhuǎn)去處理該事件需暫停正在執(zhí)行的程序,轉(zhuǎn)去處理該事件(執(zhí)執(zhí)行中斷服務(wù)程序行中斷服務(wù)程序),并在處理完畢后返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行被暫停,并在處理完畢后返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行被暫停的程序,這一的程序,這一過程稱為中斷。過程稱為中斷。斷點(diǎn)處是指返回主程序時執(zhí)行的第斷點(diǎn)處是指返回主程序時執(zhí)行的第一條指令的地址。中斷過程如圖一條指令的地址。中斷

2、過程如圖7.10所示。為實(shí)現(xiàn)中斷功能而設(shè)所示。為實(shí)現(xiàn)中斷功能而設(shè)置的硬件電路和與之相應(yīng)的軟件,稱為中斷系統(tǒng)。置的硬件電路和與之相應(yīng)的軟件,稱為中斷系統(tǒng)。 第7章 輸入/輸出與中斷 2圖7.10 中斷過程示意圖繼續(xù)執(zhí)行斷點(diǎn)主程序中斷服務(wù)程序有中斷請求中斷處理返回?cái)帱c(diǎn)第7章 輸入/輸出與中斷 3 2中中斷源斷源 任何能夠引發(fā)中斷的事件都稱為中斷源,可分為硬件中斷源任何能夠引發(fā)中斷的事件都稱為中斷源,可分為硬件中斷源和軟件中斷源兩類。和軟件中斷源兩類。硬件中斷源硬件中斷源主要包括外設(shè)主要包括外設(shè)(如鍵盤、打印機(jī)等如鍵盤、打印機(jī)等)、數(shù)據(jù)通道、數(shù)據(jù)通道(如磁如磁盤機(jī)、磁帶機(jī)等盤機(jī)、磁帶機(jī)等)、時鐘電路

3、、時鐘電路(如定時計(jì)數(shù)器如定時計(jì)數(shù)器8253)和故障源和故障源(如如電源掉電電源掉電)等;等;軟件中斷源軟件中斷源主要包括為調(diào)試程序設(shè)置的中斷主要包括為調(diào)試程序設(shè)置的中斷(如斷點(diǎn)、單步執(zhí)如斷點(diǎn)、單步執(zhí)行等行等)、中斷指令、中斷指令(如如INT 21H等等)以及指令執(zhí)行過程出錯以及指令執(zhí)行過程出錯(如除法如除法運(yùn)算時除數(shù)為零運(yùn)算時除數(shù)為零)等。等。 第7章 輸入/輸出與中斷 4 3中斷處理過程中斷處理過程 對于一個中斷源的中斷處理過程應(yīng)包括以下幾個步驟,對于一個中斷源的中斷處理過程應(yīng)包括以下幾個步驟,即即中斷請求、中斷響應(yīng)、保護(hù)斷點(diǎn)、中斷處理和中斷返回中斷請求、中斷響應(yīng)、保護(hù)斷點(diǎn)、中斷處理和中斷

4、返回。 1) 中斷請求中斷請求 中斷請求是中斷源向中斷請求是中斷源向CPU發(fā)出的請求中斷的要求。發(fā)出的請求中斷的要求。軟件中斷源軟件中斷源是在是在CPU內(nèi)部由中斷指令或程序出錯直接引發(fā)中斷;內(nèi)部由中斷指令或程序出錯直接引發(fā)中斷;硬件中斷源硬件中斷源必須通過專門的電路將中斷請求信號傳送給必須通過專門的電路將中斷請求信號傳送給CPU,CPU也有專門的引腳接收中斷請求信號。例如,也有專門的引腳接收中斷請求信號。例如,8086/8088 CPU用用INTR引腳引腳(可屏蔽中斷請求可屏蔽中斷請求)和和NMI引腳引腳(非屏蔽中斷請求非屏蔽中斷請求)接收接收硬件中斷請求信號。一般外設(shè)發(fā)出的都是可屏蔽中斷請求

5、。硬件中斷請求信號。一般外設(shè)發(fā)出的都是可屏蔽中斷請求。 第7章 輸入/輸出與中斷 5&輸入鎖存器數(shù)據(jù)總線中斷請求D端口譯碼地址總線Q中斷屏蔽INT5 V輸入設(shè)備三態(tài)緩沖器Q&RD圖圖7.11 中斷請求與屏蔽接口電路中斷請求與屏蔽接口電路 滿足兩個條件:滿足兩個條件:一是要由外設(shè)將接口中的中斷請求觸發(fā)器置一是要由外設(shè)將接口中的中斷請求觸發(fā)器置1,二是要由二是要由CPU將接口中的中斷屏蔽觸發(fā)器將接口中的中斷屏蔽觸發(fā)器Q端置端置1。 第7章 輸入/輸出與中斷 6 2) 中斷響應(yīng)中斷響應(yīng)響應(yīng)時刻:響應(yīng)時刻:CPU在每條指令執(zhí)行的最后一個時鐘周期檢測其中在每條指令執(zhí)行的最后一個時鐘周期檢

6、測其中斷請求輸入端,判斷有無中斷請求,若斷請求輸入端,判斷有無中斷請求,若CPU接收到了中斷請求接收到了中斷請求信號,且此時信號,且此時CPU內(nèi)部的中斷允許觸發(fā)器的狀態(tài)為內(nèi)部的中斷允許觸發(fā)器的狀態(tài)為1,則,則CPU在現(xiàn)行指令執(zhí)行完后,發(fā)出在現(xiàn)行指令執(zhí)行完后,發(fā)出INTA信號響應(yīng)中斷。信號響應(yīng)中斷。從圖從圖7.11中可以看到,一旦進(jìn)入中斷處理,中可以看到,一旦進(jìn)入中斷處理,立即清除中斷立即清除中斷請求請求信號。這樣可以避免一個中斷請求被信號。這樣可以避免一個中斷請求被CPU多次響應(yīng)。多次響應(yīng)。 圖圖7.12給出了給出了CPU內(nèi)部產(chǎn)生中斷響應(yīng)信號的邏輯電路。對內(nèi)部產(chǎn)生中斷響應(yīng)信號的邏輯電路。對于于

7、8086/8088 CPU可以用開中斷可以用開中斷(STI)或關(guān)中斷或關(guān)中斷(CLI)指令來改變指令來改變中斷允許觸發(fā)器中斷允許觸發(fā)器(即即IF標(biāo)志位標(biāo)志位)的狀態(tài)。的狀態(tài)。 第7章 輸入/輸出與中斷 7&R1允許中斷開中斷指令關(guān)中斷指令CPUCPU響應(yīng)中斷信號INTRRESETSQ圖7.12 CPU內(nèi)部設(shè)置中斷允許觸發(fā)器 第7章 輸入/輸出與中斷 8 3) 保護(hù)斷點(diǎn)保護(hù)斷點(diǎn) CPU一旦響應(yīng)中斷,需要對其正在執(zhí)行程序的斷點(diǎn)信息進(jìn)一旦響應(yīng)中斷,需要對其正在執(zhí)行程序的斷點(diǎn)信息進(jìn)行保護(hù),以便在中斷處理結(jié)束后仍能回到該斷點(diǎn)處繼續(xù)執(zhí)行。行保護(hù),以便在中斷處理結(jié)束后仍能回到該斷點(diǎn)處繼續(xù)執(zhí)行。對于對

8、于8086/8088 CPU,保護(hù)斷點(diǎn)的過程由硬件自動完成,主要,保護(hù)斷點(diǎn)的過程由硬件自動完成,主要工作是關(guān)中斷、將標(biāo)志寄存器內(nèi)容入棧保存以及將工作是關(guān)中斷、將標(biāo)志寄存器內(nèi)容入棧保存以及將CS和和IP內(nèi)容內(nèi)容入棧保存。入棧保存。保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場一般用保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場一般用PUSH和和POP指令實(shí)現(xiàn),指令實(shí)現(xiàn),所以要特別注意寄存器內(nèi)容入棧和出棧的次序所以要特別注意寄存器內(nèi)容入棧和出棧的次序。 4) 中斷處理中斷處理 中斷處理的過程實(shí)際就是中斷處理的過程實(shí)際就是CPU執(zhí)行中斷服務(wù)程序的過程。執(zhí)行中斷服務(wù)程序的過程。用戶編寫的用于用戶編寫的用于CPU為中斷源進(jìn)行中斷處理的程序稱為中斷服為中斷源進(jìn)

9、行中斷處理的程序稱為中斷服務(wù)程序。由于不同中斷源在系統(tǒng)中的作用不同,所要完成的功務(wù)程序。由于不同中斷源在系統(tǒng)中的作用不同,所要完成的功能不同,因此,不同中斷源的中斷服務(wù)程序內(nèi)容也各不相同。能不同,因此,不同中斷源的中斷服務(wù)程序內(nèi)容也各不相同。例如,對于圖例如,對于圖7.11所示的輸入設(shè)備,其中斷服務(wù)程序的主要任所示的輸入設(shè)備,其中斷服務(wù)程序的主要任務(wù)是用輸入指令務(wù)是用輸入指令(IN)從接口中的數(shù)據(jù)端口向從接口中的數(shù)據(jù)端口向CPU輸入數(shù)據(jù)。輸入數(shù)據(jù)。 第7章 輸入/輸出與中斷 9 5) 中斷返回中斷返回 執(zhí)行完中斷服務(wù)程序,返回到原先被中斷的程序,此過程稱執(zhí)行完中斷服務(wù)程序,返回到原先被中斷的程

10、序,此過程稱為中斷返回。為了能正確返回到原來程序的斷點(diǎn)處,在中斷服為中斷返回。為了能正確返回到原來程序的斷點(diǎn)處,在中斷服務(wù)程序的最后應(yīng)專門放置一條中斷返回指令務(wù)程序的最后應(yīng)專門放置一條中斷返回指令(如如8086/8088的的IRET指令指令)。中斷返回指令的作用實(shí)際上是恢復(fù)斷點(diǎn),也就是中斷返回指令的作用實(shí)際上是恢復(fù)斷點(diǎn),也就是保護(hù)斷點(diǎn)的逆過程。保護(hù)斷點(diǎn)的逆過程。 第7章 輸入/輸出與中斷 107.3.2 中斷優(yōu)先級和中斷的嵌套中斷優(yōu)先級和中斷的嵌套 1中斷優(yōu)先級中斷優(yōu)先級 中斷請求是隨機(jī)發(fā)生的,當(dāng)系統(tǒng)具有多個中斷源時,有時會中斷請求是隨機(jī)發(fā)生的,當(dāng)系統(tǒng)具有多個中斷源時,有時會同時出現(xiàn)多個中斷請

11、求,同時出現(xiàn)多個中斷請求,CPU只能按一定的次序予以響應(yīng)和處只能按一定的次序予以響應(yīng)和處理,這個響應(yīng)的次序稱為中斷優(yōu)先級。對于不同級別的中斷請理,這個響應(yīng)的次序稱為中斷優(yōu)先級。對于不同級別的中斷請求,一般的處理原則是:求,一般的處理原則是: (1) 不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級由高到低依次處理。由高到低依次處理。 第7章 輸入/輸出與中斷 11 (2) 低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應(yīng)轉(zhuǎn)去處理低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應(yīng)轉(zhuǎn)去處理高優(yōu)先級請求,服務(wù)結(jié)束后再返回原優(yōu)先級較低的中斷服務(wù)程高優(yōu)先級請求,服務(wù)結(jié)束

12、后再返回原優(yōu)先級較低的中斷服務(wù)程序繼續(xù)執(zhí)行。序繼續(xù)執(zhí)行。 (3) 高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應(yīng)。高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應(yīng)。 (4) 中斷處理時,出現(xiàn)同級別請求,應(yīng)在當(dāng)前中斷處理結(jié)束以中斷處理時,出現(xiàn)同級別請求,應(yīng)在當(dāng)前中斷處理結(jié)束以后再處理新的請求。后再處理新的請求。 第7章 輸入/輸出與中斷 12 2中斷優(yōu)先級的確定中斷優(yōu)先級的確定 在微機(jī)系統(tǒng)中通常用三種方法來確定中斷源的優(yōu)先級別,即在微機(jī)系統(tǒng)中通常用三種方法來確定中斷源的優(yōu)先級別,即軟件查詢法、硬件排隊(duì)電路法和專用中斷控制芯片法軟件查詢法、硬件排隊(duì)電路法和專用中斷控制芯片法。本節(jié)簡。本節(jié)簡要

13、介紹前兩種方法,第三種方法將在本章的最后一節(jié)作詳細(xì)介要介紹前兩種方法,第三種方法將在本章的最后一節(jié)作詳細(xì)介紹。紹。 1) 軟件查詢法軟件查詢法 軟件查詢法需要簡單的硬件電路支持。以軟件查詢法需要簡單的硬件電路支持。以8個中斷源為例,個中斷源為例,其硬件電路如圖其硬件電路如圖7.13所示,將所示,將8個外設(shè)的中斷請求組合起來作為個外設(shè)的中斷請求組合起來作為一個端口一個端口(中斷寄存器中斷寄存器),并將各個外設(shè)的中斷請求信號相或,產(chǎn),并將各個外設(shè)的中斷請求信號相或,產(chǎn)生一個總的生一個總的INT信號。信號。 第7章 輸入/輸出與中斷 131CPUD7INTRINT 1中斷寄存器INTD0INT 2I

14、NT 8圖7.13 軟件查詢法的硬件電路 第7章 輸入/輸出與中斷 14對1號中斷源服務(wù)NNNYYY斷點(diǎn)保護(hù)INT 1?INT 2?對2號中斷源服務(wù)對n號中斷源服務(wù)INT n?圖7.14 軟件查詢方式的流程圖 第7章 輸入/輸出與中斷 15 對于圖對于圖7.13所示電路,設(shè)中斷寄存器端口號為所示電路,設(shè)中斷寄存器端口號為n,則軟件查詢,則軟件查詢的程序段如下:的程序段如下: IN AL,n TEST AL,80H ;1號外設(shè)有請求號外設(shè)有請求? JNZ II1;有,轉(zhuǎn);有,轉(zhuǎn)1號中斷服務(wù)程序號中斷服務(wù)程序 TEST AL,40H ;2號外設(shè)有請求號外設(shè)有請求? JNZ II2 ;有,轉(zhuǎn);有,轉(zhuǎn)

15、2號中斷服務(wù)程序號中斷服務(wù)程序可以看出,采用軟件查詢方式,各中斷源的優(yōu)先級是由查詢順序可以看出,采用軟件查詢方式,各中斷源的優(yōu)先級是由查詢順序決定的,最先查詢的設(shè)備,其優(yōu)先級最高,最后查詢的設(shè)備,其決定的,最先查詢的設(shè)備,其優(yōu)先級最高,最后查詢的設(shè)備,其優(yōu)先級最低。優(yōu)先級最低。采用軟件查詢方式的采用軟件查詢方式的優(yōu)點(diǎn)是節(jié)省硬件優(yōu)點(diǎn)是節(jié)省硬件。但是,由于。但是,由于CPU每次響每次響應(yīng)中斷時都要對各中斷源進(jìn)行逐一查詢,所以其應(yīng)中斷時都要對各中斷源進(jìn)行逐一查詢,所以其響應(yīng)速度較慢。響應(yīng)速度較慢。對于優(yōu)先級較低的中斷源來說,該缺點(diǎn)更為明顯。對于優(yōu)先級較低的中斷源來說,該缺點(diǎn)更為明顯。 第7章 輸入/

16、輸出與中斷 16 2) 硬件排隊(duì)電路硬件排隊(duì)電路 采用硬件排隊(duì)電路法,各個外設(shè)的優(yōu)先級與其接口在排隊(duì)電采用硬件排隊(duì)電路法,各個外設(shè)的優(yōu)先級與其接口在排隊(duì)電路中的位置有關(guān)。常用的硬件優(yōu)先權(quán)排隊(duì)電路有鏈?zhǔn)絻?yōu)先權(quán)排路中的位置有關(guān)。常用的硬件優(yōu)先權(quán)排隊(duì)電路有鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路、硬件優(yōu)先級編碼加比較器的排隊(duì)電路等。圖隊(duì)電路、硬件優(yōu)先級編碼加比較器的排隊(duì)電路等。圖7.15給出了給出了一個鏈?zhǔn)絻?yōu)先級排隊(duì)電路。一個鏈?zhǔn)絻?yōu)先級排隊(duì)電路。 圖圖7.15中,當(dāng)響應(yīng)信號沿鏈?zhǔn)诫娐愤M(jìn)行傳遞時,最靠近中,當(dāng)響應(yīng)信號沿鏈?zhǔn)诫娐愤M(jìn)行傳遞時,最靠近CPU并并發(fā)出中斷請求的接口將首先攔截住響應(yīng)信號,發(fā)出中斷請求的接口將首先攔截住

17、響應(yīng)信號,CPU進(jìn)入相應(yīng)外進(jìn)入相應(yīng)外設(shè)的中斷處理程序,在服務(wù)完成后,該外設(shè)撤消其中斷請求,設(shè)的中斷處理程序,在服務(wù)完成后,該外設(shè)撤消其中斷請求,解除對下一級外設(shè)的封鎖。解除對下一級外設(shè)的封鎖。第7章 輸入/輸出與中斷 17響應(yīng)3#中斷請求“ 1”應(yīng)答2#應(yīng)答3#應(yīng)答1#1#中斷請求2#中斷請求&INT&圖7.15 鏈?zhǔn)街袛鄡?yōu)先級電路 第7章 輸入/輸出與中斷 18 上述兩種方法雖然可以解決中斷優(yōu)先級控制問題,但實(shí)現(xiàn)上述兩種方法雖然可以解決中斷優(yōu)先級控制問題,但實(shí)現(xiàn)起來在硬件和軟件上都要做大量的工作,十分麻煩。起來在硬件和軟件上都要做大量的工作,十分麻煩。目前,目前,最方便的辦法

18、就是利用廠家提供的可編程中斷控制器,最方便的辦法就是利用廠家提供的可編程中斷控制器,這樣的器件在各種微機(jī)中得到普遍應(yīng)用。本章后面將介紹廣泛這樣的器件在各種微機(jī)中得到普遍應(yīng)用。本章后面將介紹廣泛應(yīng)用于應(yīng)用于80 x86微機(jī)系統(tǒng)中的專用可編程中斷控制芯片微機(jī)系統(tǒng)中的專用可編程中斷控制芯片8259A。 第7章 輸入/輸出與中斷 19 3中斷嵌套中斷嵌套 CPU在執(zhí)行低級別中斷服務(wù)程序時,又收到較高級別的中斷請求,CPU暫停執(zhí)行低級別中斷服務(wù)程序,轉(zhuǎn)去處理這個高級別的中斷,處理完后再返回低級別中斷服務(wù)程序,這個過程稱為中斷嵌套,如圖7.16所示。 高級中斷請求低級中斷請求STISTI主程序低級中斷服務(wù)

19、程序高級中斷服務(wù)程序圖7.16 中斷嵌套示意圖 第7章 輸入/輸出與中斷 20 一般一般CPU響應(yīng)中斷請求后,在進(jìn)入中斷服務(wù)程序前,響應(yīng)中斷請求后,在進(jìn)入中斷服務(wù)程序前,硬件會硬件會自動實(shí)現(xiàn)關(guān)中斷,自動實(shí)現(xiàn)關(guān)中斷,這樣,這樣,CPU在執(zhí)行中斷服務(wù)程序時將不能再在執(zhí)行中斷服務(wù)程序時將不能再響應(yīng)其他中斷請求。響應(yīng)其他中斷請求。為了實(shí)現(xiàn)中斷嵌套為了實(shí)現(xiàn)中斷嵌套,應(yīng)在,應(yīng)在低級別中斷服務(wù)程序的開始處加一條低級別中斷服務(wù)程序的開始處加一條開中斷指令開中斷指令STI。能夠?qū)崿F(xiàn)中斷嵌套的中斷系統(tǒng),其軟、硬件設(shè)能夠?qū)崿F(xiàn)中斷嵌套的中斷系統(tǒng),其軟、硬件設(shè)計(jì)都非常復(fù)雜,如果采用了可編程中斷控制器,就會方便很多。計(jì)都

20、非常復(fù)雜,如果采用了可編程中斷控制器,就會方便很多。 第7章 輸入/輸出與中斷 217.4 8086/8088中斷系統(tǒng)中斷系統(tǒng) 7.4.1 8086/8088的中斷源類型的中斷源類型 8086/8088 CPU可以處理可以處理256種不同類型的中斷種不同類型的中斷,每一種中,每一種中斷都給定一個編號斷都給定一個編號(0 255),稱為中斷類型號,稱為中斷類型號,CPU根據(jù)中斷類根據(jù)中斷類型號來識別不同的中斷源。型號來識別不同的中斷源。8086/8088的中斷源如圖的中斷源如圖7.17所示。從所示。從圖中可以看出圖中可以看出8086/8088的中斷源可分為兩大類:的中斷源可分為兩大類:一類來自一

21、類來自CPU的外部,由外設(shè)的請求引起,稱為的外部,由外設(shè)的請求引起,稱為硬件中斷硬件中斷(又稱又稱外部中斷外部中斷);另一類來自另一類來自CPU的內(nèi)部,由執(zhí)行指令時引起,稱為的內(nèi)部,由執(zhí)行指令時引起,稱為軟件中斷軟件中斷(又又稱內(nèi)部中斷稱內(nèi)部中斷)。 第7章 輸入/輸出與中斷 22NMI(17號引腳)中 斷 邏 輯非屏蔽中斷請求INT 2硬件(外部)中斷軟件(內(nèi)部)中斷可屏蔽中斷請求中斷類型號32255INTR(18號引腳)中斷指令I(lǐng)NT nN32255溢出中斷INTOINT 4斷點(diǎn)中斷INT 3單步中斷(TF1)INT 1除法錯誤INT 0圖圖7.17 8086/8088中斷源中斷源 第7章

22、 輸入/輸出與中斷 23 1軟件中斷軟件中斷(內(nèi)部中斷內(nèi)部中斷) 8086/8088的的軟件中斷主要有五種,分為三類軟件中斷主要有五種,分為三類。 1) 處理運(yùn)算過程中某些錯誤的中斷處理運(yùn)算過程中某些錯誤的中斷 執(zhí)行程序時,為及時處理運(yùn)算中的某些錯誤,執(zhí)行程序時,為及時處理運(yùn)算中的某些錯誤,CPU以中斷方以中斷方式中止正在運(yùn)行的程序,提醒程序員改錯。式中止正在運(yùn)行的程序,提醒程序員改錯。 (1) 除法錯中斷除法錯中斷(中斷類型號為中斷類型號為0)。在。在8086/8088 CPU執(zhí)行除執(zhí)行除法指令法指令(DIV/IDIV)時,若發(fā)現(xiàn)除數(shù)為時,若發(fā)現(xiàn)除數(shù)為0,或所得的商超過了,或所得的商超過了C

23、PU中有關(guān)寄存器所能表示的最大值,則立即產(chǎn)生一個類型號為中有關(guān)寄存器所能表示的最大值,則立即產(chǎn)生一個類型號為0的的內(nèi)部中斷,內(nèi)部中斷,CPU轉(zhuǎn)去執(zhí)行除法錯中斷處理程序。轉(zhuǎn)去執(zhí)行除法錯中斷處理程序。 例例 mov bl,0 idiv bl;除數(shù);除數(shù)BL0,產(chǎn)生除法錯中斷,產(chǎn)生除法錯中斷第7章 輸入/輸出與中斷 24 (2) 溢出中斷溢出中斷INTO(中斷類型號為中斷類型號為4)。CPU進(jìn)行帶符號數(shù)的進(jìn)行帶符號數(shù)的算術(shù)運(yùn)算時,若發(fā)生了溢出,則標(biāo)志位算術(shù)運(yùn)算時,若發(fā)生了溢出,則標(biāo)志位OF=1,若此時執(zhí)行,若此時執(zhí)行INTO指令,會產(chǎn)生溢出中斷,打印出一個錯誤信息,結(jié)束時不指令,會產(chǎn)生溢出中斷,打印

24、出一個錯誤信息,結(jié)束時不返回,而把控制權(quán)交給操作系統(tǒng)。若返回,而把控制權(quán)交給操作系統(tǒng)。若OF=0,則,則INTO不產(chǎn)生中不產(chǎn)生中斷,斷,CPU繼續(xù)執(zhí)行下一條指令。繼續(xù)執(zhí)行下一條指令。INTO指令通常安排在算術(shù)指指令通常安排在算術(shù)指令之后,以便在溢出時能及時處理。例如:令之后,以便在溢出時能及時處理。例如: mov ax,2000hadd ax, 7000h;2000H7000H9000H,溢出:,溢出:OF1into;因?yàn)?;因?yàn)镺F1,所以產(chǎn)生溢出中斷,所以產(chǎn)生溢出中斷第7章 輸入/輸出與中斷 252) 為調(diào)試程序設(shè)置的中斷為調(diào)試程序設(shè)置的中斷 (1) 單步中斷單步中斷(中斷類型號為中斷類型號

25、為1)。當(dāng)。當(dāng)TF=1時,每執(zhí)行一條指令,時,每執(zhí)行一條指令,CPU會自動產(chǎn)生一個單步中斷。單步中斷可一條一條指令地跟會自動產(chǎn)生一個單步中斷。單步中斷可一條一條指令地跟蹤程序流程,觀察各個寄存器及存儲單元內(nèi)容的變化,幫助分析蹤程序流程,觀察各個寄存器及存儲單元內(nèi)容的變化,幫助分析錯誤原因。單步中斷又稱為陷阱中斷,主要用于程序調(diào)試。錯誤原因。單步中斷又稱為陷阱中斷,主要用于程序調(diào)試。 例如:例如:DEBUG.EXE調(diào)試程序的單步命令調(diào)試程序的單步命令T就利就利用單步中斷實(shí)現(xiàn)對程序的單步調(diào)試用單步中斷實(shí)現(xiàn)對程序的單步調(diào)試第7章 輸入/輸出與中斷 26(2) 斷點(diǎn)中斷斷點(diǎn)中斷(中斷類型號為中斷類型號

26、為3)。調(diào)試程序時可以在一些關(guān)。調(diào)試程序時可以在一些關(guān)鍵性的地方設(shè)置斷點(diǎn),它相當(dāng)于把一條鍵性的地方設(shè)置斷點(diǎn),它相當(dāng)于把一條INT 3 指令插指令插入到程序中,入到程序中,CPU每執(zhí)行到斷點(diǎn)處,每執(zhí)行到斷點(diǎn)處,INT 3 指令便產(chǎn)指令便產(chǎn)生一個中斷,使生一個中斷,使CPU轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。 3) 中斷指令中斷指令I(lǐng)NT n引起的中斷引起的中斷(中斷類型號為中斷類型號為n) 程序設(shè)計(jì)時,可以用程序設(shè)計(jì)時,可以用INT n指令來產(chǎn)生軟件中斷,中指令來產(chǎn)生軟件中斷,中斷指令的操作數(shù)斷指令的操作數(shù)n給出了中斷類型號,給出了中斷類型號,CPU執(zhí)行執(zhí)行INT n指令后,會立即產(chǎn)

27、生一個類型號為指令后,會立即產(chǎn)生一個類型號為n的中斷,轉(zhuǎn)入相應(yīng)的中斷,轉(zhuǎn)入相應(yīng)的中斷處理程序來完成中斷功能。的中斷處理程序來完成中斷功能。 第7章 輸入/輸出與中斷 27 2硬件中斷硬件中斷(外部中斷外部中斷) 8086/8088 CPU有兩條外部中斷請求線有兩條外部中斷請求線NMI(非屏蔽中斷非屏蔽中斷)和和INTR(可屏蔽中斷可屏蔽中斷)。 1) 非屏蔽中斷非屏蔽中斷NMI(中斷類型號為中斷類型號為2) 整個系統(tǒng)只有一個非屏蔽中斷,它不受整個系統(tǒng)只有一個非屏蔽中斷,它不受IF標(biāo)志位的屏蔽。標(biāo)志位的屏蔽。出現(xiàn)在出現(xiàn)在NMI上的請求信號是上升沿觸發(fā)的,一旦出現(xiàn),上的請求信號是上升沿觸發(fā)的,一旦

28、出現(xiàn),CPU將將予以響應(yīng)。非屏蔽中斷一般用于緊急故障處理。予以響應(yīng)。非屏蔽中斷一般用于緊急故障處理。 2) 可屏蔽中斷可屏蔽中斷INTR 可屏蔽中斷請求信號從可屏蔽中斷請求信號從INTR引腳送往引腳送往CPU,高電平有效,受,高電平有效,受IF標(biāo)志位屏蔽,標(biāo)志位屏蔽,IF0時,對于所有從時,對于所有從INTR引腳進(jìn)入的中斷請引腳進(jìn)入的中斷請求,求,CPU均不予響應(yīng);另外,也可以在均不予響應(yīng);另外,也可以在CPU外部的中斷控制器外部的中斷控制器(8259A)中以及各個中以及各個I/O接口電路中對某一級中斷或某個中斷源接口電路中對某一級中斷或某個中斷源單獨(dú)進(jìn)行屏蔽。單獨(dú)進(jìn)行屏蔽。 第7章 輸入/輸

29、出與中斷 28 當(dāng)外設(shè)的中斷請求未被屏蔽,且當(dāng)外設(shè)的中斷請求未被屏蔽,且IF=1,則,則CPU在當(dāng)前指令周在當(dāng)前指令周期的最后一個期的最后一個T狀態(tài)去采樣狀態(tài)去采樣INTR引腳,若有效,引腳,若有效,CPU予以響應(yīng)。予以響應(yīng)。CPU將執(zhí)行兩個連續(xù)的中斷響應(yīng)周期,送出兩個中斷響應(yīng)信號將執(zhí)行兩個連續(xù)的中斷響應(yīng)周期,送出兩個中斷響應(yīng)信號 INTA。第一個響應(yīng)周期,。第一個響應(yīng)周期,CPU將地址及數(shù)據(jù)總線置高阻;在第將地址及數(shù)據(jù)總線置高阻;在第二個響應(yīng)周期,外設(shè)向數(shù)據(jù)總線輸送一個字節(jié)的中斷類型號,二個響應(yīng)周期,外設(shè)向數(shù)據(jù)總線輸送一個字節(jié)的中斷類型號,CPU讀入后,就可在中斷向量表中找到該類型號的中斷服

30、務(wù)程讀入后,就可在中斷向量表中找到該類型號的中斷服務(wù)程序的入口地址,轉(zhuǎn)入中斷處理序的入口地址,轉(zhuǎn)入中斷處理。 值得注意的是值得注意的是,對于非屏蔽中斷和軟件中斷,其中斷類型對于非屏蔽中斷和軟件中斷,其中斷類型號由號由CPU內(nèi)部自動提供,不需去執(zhí)行中斷響應(yīng)周期讀取中斷類內(nèi)部自動提供,不需去執(zhí)行中斷響應(yīng)周期讀取中斷類型號。型號。 第7章 輸入/輸出與中斷 29 8086/8088中斷響應(yīng)需要兩個總線周期 圖 8086/8088中斷響應(yīng)總線周期第7章 輸入/輸出與中斷 30 38086/8088中斷源的優(yōu)先級中斷源的優(yōu)先級 8086/8088中斷源的優(yōu)先級順序由高到低依次為:中斷源的優(yōu)先級順序由高到

31、低依次為:軟件中斷軟件中斷(除單步中斷外除單步中斷外)、非屏蔽中斷、可屏蔽中斷、單步中斷、非屏蔽中斷、可屏蔽中斷、單步中斷。第7章 輸入/輸出與中斷 317.4.2 中斷向量表(中斷矢量表)中斷向量表(中斷矢量表)基本概念基本概念中斷向量中斷向量,就是中斷服務(wù)程序的入口地址。,就是中斷服務(wù)程序的入口地址。中斷向量表,中斷向量表,是存放中斷向量的一個特定的內(nèi)存區(qū)域。是存放中斷向量的一個特定的內(nèi)存區(qū)域。中斷向量地址中斷向量地址:存放中斷向量的存儲器單元地址。存放中斷向量的存儲器單元地址。對于對于8086/8088系統(tǒng),所有中斷服務(wù)程序的入口地址都存放在中斷系統(tǒng),所有中斷服務(wù)程序的入口地址都存放在中

32、斷向量表中。向量表中。 第7章 輸入/輸出與中斷 32中斷向量地址與中斷類型號的關(guān)系:中斷向量地址與中斷類型號的關(guān)系:8086/8088可以處理可以處理256種中斷種中斷,每種中斷對應(yīng)一個中斷類型號,每種中斷對應(yīng)一個中斷類型號(0255) ,每個中斷類型號與一個中斷服務(wù)程序的入口,每個中斷類型號與一個中斷服務(wù)程序的入口地址相對應(yīng)。地址相對應(yīng)。每個中斷服務(wù)程序的入口地址占每個中斷服務(wù)程序的入口地址占4個存儲單元個存儲單元,其中低地址的其中低地址的兩個單元存放中斷服務(wù)程序入口地址的偏移量兩個單元存放中斷服務(wù)程序入口地址的偏移量(IP);高地址;高地址的兩個單元存放中斷服務(wù)程序入口地址的段地址的兩個

33、單元存放中斷服務(wù)程序入口地址的段地址(CS)。256個中斷向量要占個中斷向量要占25641024個單元,即中斷向量表長度個單元,即中斷向量表長度為為1K個單元。個單元。8086/8088系統(tǒng)的中斷向量表位于內(nèi)存的前系統(tǒng)的中斷向量表位于內(nèi)存的前1K字節(jié),地址范圍為字節(jié),地址范圍為00000H003FFH。8086/8088的中斷向量表如圖的中斷向量表如圖7.18所示。所示。 第7章 輸入/輸出與中斷 3300000H00003H00008H0000BH00004H00007H0000CH0000FH00010H00013H00014H0007FH00080H003FCHIP內(nèi)容CS內(nèi)容類型0中斷

34、入口地址(除法出錯)專用中斷(5個)用戶自定義中斷(224個)系統(tǒng)保留中斷(27個)類型1中斷入口地址(單步中斷)類型2中斷入口地址(NMI)類型3中斷入口地址(斷點(diǎn)中斷)類型4中斷入口地址(溢出中斷)類型5中斷入口地址類型31中斷入口地址類型32中斷入口地址類型255中斷入口地址圖7.18 8086/8088的中斷向量表 第7章 輸入/輸出與中斷 34 圖圖7.18所示的中斷向量表中有所示的中斷向量表中有5個專用中斷個專用中斷(類型類型0類型類型4),它們已經(jīng)有固定用途;,它們已經(jīng)有固定用途;27個系統(tǒng)保留的中斷個系統(tǒng)保留的中斷(類型類型5類型類型31)供系統(tǒng)使用,不允許用戶供系統(tǒng)使用,不允

35、許用戶自行定義;自行定義;224個用戶自定義中斷個用戶自定義中斷(類型類型32類型類型255),這些中斷類型號可供,這些中斷類型號可供軟中斷軟中斷INT n或可屏蔽中斷或可屏蔽中斷INTR使用,使用,使用時,要由用戶自行使用時,要由用戶自行填入相應(yīng)的中斷服務(wù)程序入口地址。填入相應(yīng)的中斷服務(wù)程序入口地址。(其中有些中斷類型已經(jīng)有了固定用途,例如,類型其中有些中斷類型已經(jīng)有了固定用途,例如,類型21H的中斷的中斷已用做已用做DOS的系統(tǒng)功能調(diào)用的系統(tǒng)功能調(diào)用)。 第7章 輸入/輸出與中斷 35 由于中斷服務(wù)程序入口地址在中斷向量表中是按中斷類型號由于中斷服務(wù)程序入口地址在中斷向量表中是按中斷類型號

36、順序存放的,因此每個中斷服務(wù)程序入口地址在中斷向量表中順序存放的,因此每個中斷服務(wù)程序入口地址在中斷向量表中的位置可由的位置可由“中斷類型號中斷類型號4”計(jì)算出來計(jì)算出來。CPU響應(yīng)中斷時,把響應(yīng)中斷時,把中斷類型號中斷類型號N乘以乘以4,得到對應(yīng)地址,得到對應(yīng)地址4N(該中斷服務(wù)程序入口地址該中斷服務(wù)程序入口地址所占所占4個單元的第一個單元的地址個單元的第一個單元的地址),然后把由此地址開始的兩,然后把由此地址開始的兩個個低字節(jié)單元低字節(jié)單元(4N,4N+1)的內(nèi)容裝入的內(nèi)容裝入IP寄存器寄存器,再把兩個再把兩個高字節(jié)單元高字節(jié)單元(4N+2,4N+3)的內(nèi)容裝入的內(nèi)容裝入CS寄存器寄存器,

37、于是,于是CPU轉(zhuǎn)入中斷類型號為轉(zhuǎn)入中斷類型號為N的中斷服務(wù)程序。的中斷服務(wù)程序。 這種采用向量中斷的方法,這種采用向量中斷的方法,CPU可直接通過向量表轉(zhuǎn)向相可直接通過向量表轉(zhuǎn)向相應(yīng)的處理程序,而不需要去逐個檢測和確定中斷源,因而可以應(yīng)的處理程序,而不需要去逐個檢測和確定中斷源,因而可以大大加快中斷響應(yīng)的速度。大大加快中斷響應(yīng)的速度。 第7章 輸入/輸出與中斷 36例:中斷類型號為例:中斷類型號為27H 則中斷向量指針的低地址則中斷向量指針的低地址= 27H 4= 9CH 中斷向量指針的高地址中斷向量指針的高地址= 27H 4+2= 9EH 即該中斷向量存放在即該中斷向量存放在0000H:0

38、09CH開始的開始的4個連續(xù)單元中。個連續(xù)單元中。如果這如果這4個單元中的內(nèi)容如下:個單元中的內(nèi)容如下: 0000:009C 2AH 0000:009D 43H 0000:009E 65H 0000:009F 87H 則該中斷類型號則該中斷類型號27H的中斷向量(中斷服務(wù)程序的中斷向量(中斷服務(wù)程序入口地址)的邏輯地址是入口地址)的邏輯地址是8765H:432AH,即,即(CS)=8765H,(IP)=432AH;物理地址是物理地址是8B97AH。第7章 輸入/輸出與中斷 37例4:某中斷類型號為72H,圖6.10示出了中斷操作過程。 取中斷類型號72H; 計(jì)算中斷向量地址72H4=1C8H;

39、 72H4+2=1CAH; 取中斷服務(wù)程序入口地址的偏移量送IP,IP=2050H, 段地址送CS,CS=A000H; 轉(zhuǎn)入中斷服務(wù)程序A000H:2050H; 中斷返回到INT 72H指令的下一條指令MOV AX , BX。第7章 輸入/輸出與中斷 38第7章 輸入/輸出與中斷 397.4.3 8086/8088的中斷處理過程的中斷處理過程 FLAGS 入棧NNN完成當(dāng)前指令有內(nèi)部中斷嗎?從指令中或內(nèi)部獲得中斷類型號從外部得到中斷類型號TEMP=1?令TEMPTF調(diào)中斷處理程序YYY有NMI中斷嗎?有INTR中斷嗎?TF1?執(zhí)行下一條指令NNNNY中斷類型號2YIF1?中斷類型號1清IF、T

40、FCS、IP入棧返回?cái)帱c(diǎn)FLAGS出棧IP、CS出棧中斷服務(wù)有NMI?(1)(1)(1)(1)(2)(3)(4)(5)YY圖7.19 8086/8088 CPU中斷處理的基本過程 第7章 輸入/輸出與中斷 40先判斷先判斷IF是否為是否為1,若,若IF=1則進(jìn)入中斷響應(yīng),此時則進(jìn)入中斷響應(yīng),此時CPU要要讀取中讀取中斷類型碼斷類型碼,然后進(jìn)入所有中斷都要做的事。,然后進(jìn)入所有中斷都要做的事。 將標(biāo)志寄存器將標(biāo)志寄存器FR的內(nèi)容壓入堆棧的內(nèi)容壓入堆棧 將中斷允許標(biāo)志將中斷允許標(biāo)志IF和單步標(biāo)志和單步標(biāo)志TF清零清零 將斷點(diǎn)保護(hù)到堆棧中。所謂斷點(diǎn)就是指響應(yīng)中斷時,主程將斷點(diǎn)保護(hù)到堆棧中。所謂斷點(diǎn)就

41、是指響應(yīng)中斷時,主程序中當(dāng)前指令下面的一條指令的段寄存器序中當(dāng)前指令下面的一條指令的段寄存器CS的值和指令指針寄的值和指令指針寄存器存器IP的值壓入堆棧,先壓的值壓入堆棧,先壓CS,再壓,再壓IP的值。的值。 根據(jù)當(dāng)前中斷的中斷類型碼查中斷向量表,得到中斷向量根據(jù)當(dāng)前中斷的中斷類型碼查中斷向量表,得到中斷向量(中斷服務(wù)程序入口地址)分別裝入(中斷服務(wù)程序入口地址)分別裝入CS和和IP,從而轉(zhuǎn)到相應(yīng)的,從而轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。中斷服務(wù)程序。 執(zhí)行中斷服務(wù)程序,結(jié)束后恢復(fù)斷點(diǎn),從而繼續(xù)執(zhí)行原來執(zhí)行中斷服務(wù)程序,結(jié)束后恢復(fù)斷點(diǎn),從而繼續(xù)執(zhí)行原來的程序。的程序。 圖中在得到中斷服務(wù)程序入口地址后,

42、查看圖中在得到中斷服務(wù)程序入口地址后,查看NMI是否有,接是否有,接著查看著查看TEMP,若,若TEMP=1,則在中斷前,則在中斷前CPU已處于單步方式,已處于單步方式,就和就和NMI一樣重新保護(hù)現(xiàn)場和斷點(diǎn),轉(zhuǎn)入單步中斷服務(wù)程序。一樣重新保護(hù)現(xiàn)場和斷點(diǎn),轉(zhuǎn)入單步中斷服務(wù)程序。若若TEMP=0,即中斷前,即中斷前CPU處于非單步方式,則處于非單步方式,則CPU轉(zhuǎn)去執(zhí)行轉(zhuǎn)去執(zhí)行最先引起中斷的中斷服務(wù)程序。最先引起中斷的中斷服務(wù)程序。第7章 輸入/輸出與中斷 417.4.4 中斷服務(wù)程序的設(shè)計(jì)中斷服務(wù)程序的設(shè)計(jì) 中斷服務(wù)程序的一般結(jié)構(gòu)如圖中斷服務(wù)程序的一般結(jié)構(gòu)如圖7.20所示。如前所述,若該中斷所示。如前所述,若該中斷處理能被更高級別的中斷源中斷,則需加入開中斷指令。在中處理能被更高級別的中斷源中斷,則需加入開中斷指令。在中斷服務(wù)程序的最后,一定

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論