微機(jī)系統(tǒng)與接口:第六章 輸入與輸出中斷_第1頁
微機(jī)系統(tǒng)與接口:第六章 輸入與輸出中斷_第2頁
微機(jī)系統(tǒng)與接口:第六章 輸入與輸出中斷_第3頁
微機(jī)系統(tǒng)與接口:第六章 輸入與輸出中斷_第4頁
微機(jī)系統(tǒng)與接口:第六章 輸入與輸出中斷_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6 6章章 輸入輸出與中斷輸入輸出與中斷 本章首先介紹輸入輸出接口基本概念、本章首先介紹輸入輸出接口基本概念、CPUCPU與外與外設(shè)數(shù)據(jù)傳送的方式。設(shè)數(shù)據(jù)傳送的方式。然后然后, ,重點(diǎn)研究中斷傳送方式及相關(guān)的技術(shù)。重點(diǎn)研究中斷傳送方式及相關(guān)的技術(shù)。 6.1 6.2 參見參見CAI課件課件6.26.2 查詢方式數(shù)據(jù)采集系統(tǒng)程序查詢方式數(shù)據(jù)采集系統(tǒng)程序控制口(控制口(04H,OUT) b2b0:通道號(hào);:通道號(hào); b4:A/D啟動(dòng)信號(hào)啟動(dòng)信號(hào)狀態(tài)口(狀態(tài)口(02H,IN) b0:A/D轉(zhuǎn)換結(jié)束轉(zhuǎn)換結(jié)束 READY信號(hào)信號(hào)數(shù)據(jù)口(數(shù)據(jù)口(03H,IN) A/D轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù);初始化;初始化ST

2、ART: MOV DL, 0F8H ; 為什么設(shè)此初值?為什么設(shè)此初值?MOV AX, SEG DSTORMOV ES, AXLEA DI, DSTOR; 發(fā)控制命令發(fā)控制命令A(yù)GAIN: MOVAL, DL ANDAL,0EFH OUT 04H, AL CALLDELAY MOVAL,DL OUT04H, AL; 為什么每次要發(fā)為什么每次要發(fā)2次控制命令?中間要加延時(shí)?次控制命令?中間要加延時(shí)?; 查詢查詢A/D狀態(tài),讀入數(shù)據(jù)狀態(tài),讀入數(shù)據(jù)POLL: INAL, 02H SHRAL, 1 JNCPOLL ; 其它判別方法其它判別方法? IN AL, 03H STOSB INCDL JNEAG

3、AIN ; ?6.3 6.3 中斷技術(shù)中斷技術(shù)(簡(jiǎn)介)(簡(jiǎn)介) 中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù)。中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù)。 本節(jié)將介紹本節(jié)將介紹中斷的基本概念中斷的基本概念、中斷的響應(yīng)與處理過程中斷的響應(yīng)與處理過程、優(yōu)先優(yōu)先權(quán)的安排權(quán)的安排等有關(guān)問題。等有關(guān)問題。 一、中斷概述一、中斷概述 ( (一一) ) 中斷與中斷源中斷與中斷源使使CPUCPU暫停運(yùn)行原來的程序而應(yīng)更為急迫事件的需要轉(zhuǎn)去執(zhí)暫停運(yùn)行原來的程序而應(yīng)更為急迫事件的需要轉(zhuǎn)去執(zhí)行為中斷源服務(wù)的程序行為中斷源服務(wù)的程序( (稱為稱為中斷服務(wù)程序中斷服務(wù)程序) ),待該程序處理完后,待該程序處理完后,再

4、返回運(yùn)行原程序,此即再返回運(yùn)行原程序,此即中斷中斷( (或中斷技術(shù)或中斷技術(shù)) )。 所謂所謂中斷源中斷源,即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的,即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來源。通常中斷源有以下幾種來源。通常中斷源有以下幾種 : (1)(1)外部設(shè)備外部設(shè)備: :一般中、慢速外設(shè)如鍵盤、打印機(jī)等,在完成一般中、慢速外設(shè)如鍵盤、打印機(jī)等,在完成自身的操作后,向自身的操作后,向CPUCPU發(fā)出中斷請(qǐng)求發(fā)出中斷請(qǐng)求, ,要求要求CPUCPU為它服務(wù)。為它服務(wù)。 (2) (2) 實(shí)時(shí)時(shí)鐘實(shí)時(shí)時(shí)鐘:在自動(dòng)控制中,常需要定時(shí)檢測(cè)與控制。此:在自動(dòng)控制中,常需要定時(shí)檢測(cè)與控制。此時(shí),時(shí),C

5、PUCPU可發(fā)出命令可發(fā)出命令, ,啟動(dòng)時(shí)鐘電路計(jì)時(shí)啟動(dòng)時(shí)鐘電路計(jì)時(shí), ,待定時(shí)已到,時(shí)鐘電路待定時(shí)已到,時(shí)鐘電路就發(fā)中斷申請(qǐng),由就發(fā)中斷申請(qǐng),由CPUCPU轉(zhuǎn)去執(zhí)行服務(wù)程序。轉(zhuǎn)去執(zhí)行服務(wù)程序。 (3) (3) 故障源故障源:計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如發(fā)生運(yùn)算:計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如發(fā)生運(yùn)算出錯(cuò)(溢出出錯(cuò)(溢出) )、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及越限報(bào)警等意外事件時(shí),這些裝置都能使越限報(bào)警等意外事件時(shí),這些裝置都能使CPUCPU中斷,進(jìn)行相應(yīng)的中斷,進(jìn)行相應(yīng)的中斷處理。中斷處理。 以上以上3 3種屬于種屬于隨機(jī)中斷源隨機(jī)

6、中斷源。由隨機(jī)引起的中斷。由隨機(jī)引起的中斷, ,稱為稱為強(qiáng)迫中斷強(qiáng)迫中斷。 (4) (4) 為調(diào)試程序設(shè)置的中斷源為調(diào)試程序設(shè)置的中斷源:這是:這是CPUCPU執(zhí)行了特殊指令執(zhí)行了特殊指令( (自自陷指令)或由硬件電路引起的中斷陷指令)或由硬件電路引起的中斷, ,主要是供用戶調(diào)試程序時(shí)而主要是供用戶調(diào)試程序時(shí)而采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)試等采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)試等. .這些都要由中斷系這些都要由中斷系統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為自愿中斷自愿中斷。( (二二) ) 中斷系統(tǒng)及其功能中斷系統(tǒng)及其功能 中斷系統(tǒng)應(yīng)具有下列中斷系統(tǒng)應(yīng)具有下列功能功能: 1. 1

7、. 能響應(yīng)中斷、處理中斷與返回能響應(yīng)中斷、處理中斷與返回 2. 2. 能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì) 3. 3. 能實(shí)現(xiàn)中斷嵌套能實(shí)現(xiàn)中斷嵌套 高級(jí)高級(jí)中斷源能中斷源能中斷中斷低級(jí)的中斷低級(jí)的中斷 處理處理 中斷系統(tǒng)中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與硬件與軟件軟件, ,包括中斷控制邏輯及相應(yīng)管理中斷的指令。包括中斷控制邏輯及相應(yīng)管理中斷的指令。 ( (三三) ) 中斷的應(yīng)用中斷的應(yīng)用 中斷能解決快速中斷能解決快速CPUCPU與中、慢速外設(shè)速度與中、慢速外設(shè)速度不匹配的矛盾,以不匹配的矛盾,以提高主機(jī)的工作效率提高主機(jī)的工作效率; 中斷在實(shí)現(xiàn)中斷在實(shí)現(xiàn)分時(shí)操作、

8、實(shí)時(shí)處理、故障處分時(shí)操作、實(shí)時(shí)處理、故障處理、多機(jī)連接理、多機(jī)連接以及以及人機(jī)聯(lián)系人機(jī)聯(lián)系等方面均有廣泛的等方面均有廣泛的應(yīng)用。應(yīng)用。二、二、 單個(gè)中斷源的中斷單個(gè)中斷源的中斷 單單個(gè)中斷源的中斷過程包括:個(gè)中斷源的中斷過程包括:中斷請(qǐng)求中斷請(qǐng)求、中斷響應(yīng)中斷響應(yīng)、中斷中斷處理處理和和中斷返回中斷返回等環(huán)節(jié)。等環(huán)節(jié)。 ( (一一) ) 中斷源向中斷源向CPUCPU發(fā)中斷請(qǐng)求信號(hào)的條件發(fā)中斷請(qǐng)求信號(hào)的條件 中斷源是通過其中斷源是通過其接口電路接口電路向向CPUCPU發(fā)中斷請(qǐng)求信號(hào)的發(fā)中斷請(qǐng)求信號(hào)的, ,該信號(hào)該信號(hào)能否發(fā)給能否發(fā)給CPUCPU,應(yīng)滿足下列,應(yīng)滿足下列兩個(gè)條件兩個(gè)條件: 1. 1.

9、 設(shè)置中斷請(qǐng)求觸發(fā)器設(shè)置中斷請(qǐng)求觸發(fā)器 在每個(gè)中斷源的接口電路中設(shè)置一個(gè)在每個(gè)中斷源的接口電路中設(shè)置一個(gè)中斷請(qǐng)求觸發(fā)器中斷請(qǐng)求觸發(fā)器, ,由由它產(chǎn)生中斷請(qǐng)求,并一直保持到它產(chǎn)生中斷請(qǐng)求,并一直保持到CPUCPU接受并響應(yīng)該中斷后接受并響應(yīng)該中斷后, ,才能才能清除它。如清除它。如圖圖6.156.15所示。所示。 2 2設(shè)置中斷屏蔽觸發(fā)器設(shè)置中斷屏蔽觸發(fā)器 通過通過中斷屏蔽觸發(fā)器,中斷屏蔽觸發(fā)器,CPUCPU可控制中斷源的可控制中斷源的中斷請(qǐng)求是否中斷請(qǐng)求是否允許發(fā)向允許發(fā)向CPUCPU。如如圖圖6.156.15所示。所示。( (二二) CPU) CPU響應(yīng)中斷的條件響應(yīng)中斷的條件 當(dāng)中斷源向當(dāng)

10、中斷源向CPUCPU發(fā)出發(fā)出INTRINTR信號(hào)后,信號(hào)后,CPUCPU若要響應(yīng)它,還若要響應(yīng)它,還應(yīng)滿足下列條件。應(yīng)滿足下列條件。 1 1CPUCPU開放中斷開放中斷 CPUCPU采樣到采樣到INTRINTR信號(hào)后是否響應(yīng)它信號(hào)后是否響應(yīng)它, ,由由CPUCPU內(nèi)部的中斷內(nèi)部的中斷允許觸發(fā)器允許觸發(fā)器( (如如IFF)IFF)的狀態(tài)決定的狀態(tài)決定, ,如如圖圖6.166.16所示所示. . 中斷允許觸發(fā)器中斷允許觸發(fā)器IFFIFF的狀態(tài)可以由專門的開中斷與關(guān)的狀態(tài)可以由專門的開中斷與關(guān)中斷指令來設(shè)置:中斷指令來設(shè)置: 開中斷:開中斷:STI (IFF=1);STI (IFF=1); 關(guān)中斷:

11、關(guān)中斷:CLI (IFF=0)CLI (IFF=0)。 此外,當(dāng)此外,當(dāng)CPUCPU復(fù)位或響應(yīng)中斷后,也能使復(fù)位或響應(yīng)中斷后,也能使CPUCPU關(guān)中斷。關(guān)中斷。2 2 CPUCPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷在現(xiàn)行指令結(jié)束后響應(yīng)中斷 在在CPU開中斷時(shí),若有開中斷時(shí),若有中斷請(qǐng)求信號(hào)發(fā)至中斷請(qǐng)求信號(hào)發(fā)至CPU,CPU,它也它也并不立即響應(yīng)。并不立即響應(yīng)。 只有當(dāng)只有當(dāng)現(xiàn)行指令運(yùn)行到現(xiàn)行指令運(yùn)行到最后一個(gè)機(jī)器周期的最后一最后一個(gè)機(jī)器周期的最后一個(gè)個(gè)T狀態(tài)狀態(tài)時(shí)時(shí), , CPU才采樣才采樣INTR信號(hào);若有此信號(hào),則信號(hào);若有此信號(hào),則把與門的允許中斷輸出端把與門的允許中斷輸出端置置1 1,于是,于是

12、,CPU進(jìn)入中斷響進(jìn)入中斷響應(yīng)周期。應(yīng)周期。( (三三) CPU) CPU響應(yīng)中斷及處理過程響應(yīng)中斷及處理過程 當(dāng)滿足上述條件后,當(dāng)滿足上述條件后,CPUCPU就響應(yīng)中斷,轉(zhuǎn)入中斷周期,完成下就響應(yīng)中斷,轉(zhuǎn)入中斷周期,完成下列幾步操作:列幾步操作: 1 1關(guān)中斷關(guān)中斷 CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,在發(fā)出中斷響應(yīng)信號(hào)在發(fā)出中斷響應(yīng)信號(hào)( (INTAINTA) )的同時(shí)的同時(shí), ,內(nèi)部自動(dòng)內(nèi)部自動(dòng)地地( (由硬件由硬件) )實(shí)現(xiàn)實(shí)現(xiàn)關(guān)中斷關(guān)中斷, ,以免在處理當(dāng)前中斷時(shí)又被新的中斷源中以免在處理當(dāng)前中斷時(shí)又被新的中斷源中斷斷, ,以至破壞當(dāng)前中斷服務(wù)的現(xiàn)場(chǎng)。以至破壞當(dāng)前中斷服務(wù)的現(xiàn)場(chǎng)。

13、2 2保護(hù)斷點(diǎn)保護(hù)斷點(diǎn) CPUCPU響應(yīng)中斷后,立即封鎖響應(yīng)中斷后,立即封鎖PC+1PC+1( (此即此即斷點(diǎn)地址斷點(diǎn)地址),),且把此且把此PCPC值值壓棧保護(hù)壓棧保護(hù),以備中斷處理完畢后,以備中斷處理完畢后,CPUCPU能返回?cái)帱c(diǎn)處繼續(xù)運(yùn)行主能返回?cái)帱c(diǎn)處繼續(xù)運(yùn)行主程序。程序。3 3保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) 在在CPUCPU處理中斷服務(wù)程序時(shí),有可能用到各寄存器處理中斷服務(wù)程序時(shí),有可能用到各寄存器, ,從從而改變它們?cè)谶\(yùn)主程序中所暫存的中間結(jié)果,即破壞而改變它們?cè)谶\(yùn)主程序中所暫存的中間結(jié)果,即破壞了原主程序中的現(xiàn)場(chǎng)信息。了原主程序中的現(xiàn)場(chǎng)信息。 為使中斷服務(wù)程序不影響主程序的正常運(yùn)行,要把主為

14、使中斷服務(wù)程序不影響主程序的正常運(yùn)行,要把主程序運(yùn)行到程序運(yùn)行到斷點(diǎn)處斷點(diǎn)處時(shí)的時(shí)的有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)壓棧保護(hù)壓棧保護(hù)起來。起來。4 4給出中斷入口給出中斷入口( (地址地址) ),轉(zhuǎn)入中斷服務(wù)程序,轉(zhuǎn)入中斷服務(wù)程序8086/80888086/8088由中斷源提供由中斷源提供中斷類型號(hào)中斷類型號(hào), ,并根據(jù)中斷類并根據(jù)中斷類型號(hào)在型號(hào)在中斷向量表中斷向量表中取得中取得中斷服務(wù)程序的入口地址中斷服務(wù)程序的入口地址。在在中斷服務(wù)程序完成后中斷服務(wù)程序完成后,還要執(zhí)行,還要執(zhí)行下述的下述的5 5、6 6兩步操作。兩步操作。 5 5恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) 把保存在堆

15、棧中的各有關(guān)寄把保存在堆棧中的各有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)彈出恢復(fù)。存器的內(nèi)容和標(biāo)志位的狀態(tài)彈出恢復(fù)。 該操作是在中斷服務(wù)程序中該操作是在中斷服務(wù)程序中用用POPPOP指令完成的。指令完成的。 6 6開中斷與返回開中斷與返回 在中斷服務(wù)程序的最后在中斷服務(wù)程序的最后, ,要開中要開中斷(以便斷(以便CPUCPU能響應(yīng)新的中斷請(qǐng)求能響應(yīng)新的中斷請(qǐng)求) )和安排一條返回指令,將堆棧內(nèi)保和安排一條返回指令,將堆棧內(nèi)保存的斷點(diǎn)存的斷點(diǎn)PCPC值彈出值彈出, ,送回至送回至PC,CPUPC,CPU就恢復(fù)到斷點(diǎn)處繼續(xù)運(yùn)行。就恢復(fù)到斷點(diǎn)處繼續(xù)運(yùn)行。 三、三、 向量中斷向量中斷 所謂向量中斷所謂向量中斷(

16、Vectored Interrupt)(Vectored Interrupt),是指通過,是指通過中斷向量中斷向量來找來找中斷入口地址中斷入口地址進(jìn)而進(jìn)而轉(zhuǎn)向中斷服務(wù)程序轉(zhuǎn)向中斷服務(wù)程序的一種方法;的一種方法; 中斷向量中斷向量則是用來提供中斷入口地址的一個(gè)則是用來提供中斷入口地址的一個(gè)地址指針地址指針。例如例如8086/8088CPU8086/8088CPU的中斷系統(tǒng)的中斷系統(tǒng)就是采用這種向量中斷。其就是采用這種向量中斷。其詳細(xì)過程,將在下一節(jié)討論。詳細(xì)過程,將在下一節(jié)討論。 四、中斷優(yōu)先權(quán)四、中斷優(yōu)先權(quán) 實(shí)際系統(tǒng)中,通常具有多個(gè)中斷源實(shí)際系統(tǒng)中,通常具有多個(gè)中斷源, ,而而CPUCPU的可

17、屏蔽中斷請(qǐng)求的可屏蔽中斷請(qǐng)求線往往只有一條。線往往只有一條。 如何解決如何解決多個(gè)中斷源同時(shí)請(qǐng)求多個(gè)中斷源同時(shí)請(qǐng)求中斷而中斷而只有一根中斷請(qǐng)求線只有一根中斷請(qǐng)求線的的矛盾呢矛盾呢? ? 1 1)要求)要求CPUCPU按多個(gè)中斷源的優(yōu)先權(quán)按多個(gè)中斷源的優(yōu)先權(quán)由高至低依次響應(yīng)由高至低依次響應(yīng)中斷申請(qǐng)。中斷申請(qǐng)。 2) 2) 當(dāng)當(dāng)CPUCPU正在處理中斷時(shí),還要正在處理中斷時(shí),還要能響應(yīng)更高級(jí)的中斷申請(qǐng)能響應(yīng)更高級(jí)的中斷申請(qǐng),而屏,而屏蔽掉同級(jí)或低級(jí)的中斷申請(qǐng)。蔽掉同級(jí)或低級(jí)的中斷申請(qǐng)。 CPUCPU可以通過可以通過硬件排隊(duì)電路硬件排隊(duì)電路或或軟件查詢技術(shù)軟件查詢技術(shù)兩種方法來實(shí)現(xiàn)兩種方法來實(shí)現(xiàn)按中

18、斷優(yōu)先權(quán)對(duì)多個(gè)中斷源的管理按中斷優(yōu)先權(quán)對(duì)多個(gè)中斷源的管理; ; 也有專門協(xié)助也有專門協(xié)助CPU CPU 按中斷優(yōu)先權(quán)處理多個(gè)中斷源的按中斷優(yōu)先權(quán)處理多個(gè)中斷源的中斷控中斷控制芯片制芯片,如后面第,如后面第7 7章中將要介紹的章中將要介紹的8259A8259A芯片芯片。6.4 8086/80886.4 8086/8088的中斷系統(tǒng)和中斷處理的中斷系統(tǒng)和中斷處理 本節(jié)將主要闡述本節(jié)將主要闡述8086/80888086/8088的中斷系統(tǒng)的中斷系統(tǒng)及其及其中斷處理中斷處理的的全過程。全過程。 一、一、8086/80888086/8088的中斷系統(tǒng)的中斷系統(tǒng) 8086/80888086/8088中斷采

19、用中斷采用中斷向量結(jié)構(gòu)中斷向量結(jié)構(gòu),每個(gè)中斷都有一個(gè),每個(gè)中斷都有一個(gè)特定的特定的中斷類型碼中斷類型碼(共(共256256種種類型的中斷)。這些中斷可類型的中斷)。這些中斷可以來自以來自外部外部,即由,即由硬件硬件產(chǎn)生產(chǎn)生, ,也可以來自也可以來自內(nèi)部?jī)?nèi)部,即由,即由軟件軟件(中斷指令)產(chǎn)生,或者滿足某些(中斷指令)產(chǎn)生,或者滿足某些特定條件特定條件( (陷阱陷阱) )后引發(fā)后引發(fā)CPUCPU中斷。中斷。 ( (一一) ) 外部中斷外部中斷 8086/8088 CPU8086/8088 CPU有兩條引腳供外部中斷源請(qǐng)求中斷有兩條引腳供外部中斷源請(qǐng)求中斷: :一條是一條是高高電平有效電平有效的的

20、可屏蔽中斷可屏蔽中斷INTRINTR; ;另一條是另一條是上升沿有效上升沿有效的的非屏蔽中斷非屏蔽中斷NMINMI。 . .可屏蔽中斷可屏蔽中斷 可屏蔽中斷是由用戶定義的外部硬件中斷??善帘沃袛嗍怯捎脩舳x的外部硬件中斷。CPUCPU是否響應(yīng)此中是否響應(yīng)此中斷請(qǐng)求,要取決于標(biāo)志寄存器中斷請(qǐng)求,要取決于標(biāo)志寄存器中IFIF的狀態(tài)。若的狀態(tài)。若IF=0IF=0,則,則CPUCPU處于處于關(guān)中斷關(guān)中斷狀態(tài)狀態(tài), , 不響應(yīng)不響應(yīng)INTR;INTR;若若IF=1IF=1,則,則CPUCPU處于處于開中斷開中斷狀態(tài),狀態(tài),響應(yīng)響應(yīng)INTRINTR,并通過,并通過INTAINTA引腳向產(chǎn)生引腳向產(chǎn)生INT

21、RINTR的設(shè)備接口的設(shè)備接口( (中斷源中斷源) )發(fā)回發(fā)回響應(yīng)響應(yīng)信號(hào)信號(hào), ,啟動(dòng)中斷過程。啟動(dòng)中斷過程。 CPU CPU在發(fā)在發(fā)第第2 2個(gè)中斷響應(yīng)信號(hào)個(gè)中斷響應(yīng)信號(hào)INTAINTA時(shí)時(shí), ,將使發(fā)將使發(fā)出中斷請(qǐng)求信號(hào)的接口把出中斷請(qǐng)求信號(hào)的接口把1 1字節(jié)的字節(jié)的中斷類型碼中斷類型碼通過通過數(shù)據(jù)總線傳送給數(shù)據(jù)總線傳送給CPUCPU。 中斷允許標(biāo)志中斷允許標(biāo)志IFIF位的狀態(tài)可用指令位的狀態(tài)可用指令STISTI使其使其置位,即置位,即開中斷開中斷; ;也可用也可用CLICLI指令使其復(fù)位,即指令使其復(fù)位,即關(guān)關(guān)中斷中斷。系統(tǒng)復(fù)位后或任一中斷被響應(yīng)后,系統(tǒng)復(fù)位后或任一中斷被響應(yīng)后,IF=

22、0,IF=0,所以所以在執(zhí)行程序的過程中要用在執(zhí)行程序的過程中要用STISTI指令開中斷指令開中斷, ,以便以便CPUCPU有可能響應(yīng)新的可屏蔽中斷請(qǐng)求。有可能響應(yīng)新的可屏蔽中斷請(qǐng)求。 . . 非屏蔽中斷非屏蔽中斷 8086/80888086/8088要求要求NMINMI上的請(qǐng)求脈沖的有效寬度上的請(qǐng)求脈沖的有效寬度(高電平(高電平的持續(xù)時(shí)間)大于兩個(gè)時(shí)鐘周期。一旦的持續(xù)時(shí)間)大于兩個(gè)時(shí)鐘周期。一旦此中斷請(qǐng)求信號(hào)產(chǎn)生,不管標(biāo)志位此中斷請(qǐng)求信號(hào)產(chǎn)生,不管標(biāo)志位IFIF的狀態(tài)如何,的狀態(tài)如何,即使在即使在關(guān)中斷(關(guān)中斷(IF=0IF=0)的情況下,的情況下,CPUCPU也能響應(yīng)也能響應(yīng)它。它。非屏蔽

23、中斷源非屏蔽中斷源有有3 3種:種:1 1)系統(tǒng)板上)系統(tǒng)板上RAMRAM的奇偶校驗(yàn)錯(cuò)的奇偶校驗(yàn)錯(cuò)2 2)擴(kuò)展槽中的)擴(kuò)展槽中的I/OI/O通道錯(cuò)通道錯(cuò)3 3)協(xié)處理器)協(xié)處理器80878087的中斷請(qǐng)求的中斷請(qǐng)求由于由于NMINMI比比INTRINTR的中斷請(qǐng)求的的中斷請(qǐng)求的級(jí)別高級(jí)別高,因此,因此, ,若在指令執(zhí)行過程中若在指令執(zhí)行過程中,INTR,INTR和和NMINMI引腳上同時(shí)都有引腳上同時(shí)都有中斷請(qǐng)求信號(hào)中斷請(qǐng)求信號(hào) ,則,則CPUCPU將首先響應(yīng)將首先響應(yīng)NMINMI引腳上的中引腳上的中斷請(qǐng)求。斷請(qǐng)求。IntelIntel公司在設(shè)計(jì)公司在設(shè)計(jì)8086/80888086/8088芯

24、片時(shí),已將芯片時(shí),已將NMINMI的中斷類型號(hào)的中斷類型號(hào)預(yù)先定義為預(yù)先定義為類型類型2 2, ,所以所以,CPU,CPU響應(yīng)非響應(yīng)非屏蔽中斷時(shí)屏蔽中斷時(shí), ,不要求外部向不要求外部向CPUCPU提供中斷類型提供中斷類型號(hào)號(hào),CPU,CPU在總線上也不發(fā)在總線上也不發(fā)INTAINTA信號(hào)。信號(hào)。 (二)內(nèi)部中斷(二)內(nèi)部中斷 . .除法出錯(cuò)中斷除法出錯(cuò)中斷類型類型0 0(優(yōu)先級(jí)最高)(優(yōu)先級(jí)最高) 執(zhí)行除法指令時(shí),若除數(shù)為執(zhí)行除法指令時(shí),若除數(shù)為0 0或商數(shù)超過范圍或商數(shù)超過范圍, ,則立即產(chǎn)生類則立即產(chǎn)生類型為型為0 0的內(nèi)部中斷,的內(nèi)部中斷,CPUCPU轉(zhuǎn)向除法出錯(cuò)的中斷服務(wù)程序。轉(zhuǎn)向除法

25、出錯(cuò)的中斷服務(wù)程序。 . .溢出中斷溢出中斷類型類型4 4若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位置若上一條指令執(zhí)行的結(jié)果使溢出標(biāo)志位置1 1(OF=1OF=1), ,則在則在執(zhí)行溢出中斷(執(zhí)行溢出中斷(INTOINTO)指令指令時(shí),將引起時(shí),將引起類型類型4 4的內(nèi)部中斷的內(nèi)部中斷,CPU,CPU就可以轉(zhuǎn)入對(duì)溢出錯(cuò)誤進(jìn)行處理的中斷服務(wù)程序。就可以轉(zhuǎn)入對(duì)溢出錯(cuò)誤進(jìn)行處理的中斷服務(wù)程序。若若OF=0OF=0 時(shí),則時(shí),則INTOINTO指令執(zhí)行指令執(zhí)行空操作空操作。INTOINTO指令常常緊跟在指令常常緊跟在算術(shù)運(yùn)算指令之后,以便在該指令執(zhí)行產(chǎn)生溢出時(shí)由算術(shù)運(yùn)算指令之后,以便在該指令執(zhí)行產(chǎn)生溢出時(shí)由I

26、NTOINTO指令進(jìn)指令進(jìn)行特殊的處理。行特殊的處理。 . . 單步中斷單步中斷類型類型1 1 標(biāo)志位標(biāo)志位TFTF被置位(被置位(TF=1TF=1)時(shí),)時(shí),8086/80888086/8088處于單處于單步工作方式,即步工作方式,即CPUCPU每執(zhí)行完一條指令后就自動(dòng)地產(chǎn)生一每執(zhí)行完一條指令后就自動(dòng)地產(chǎn)生一個(gè)個(gè)類型類型1 1的內(nèi)部中斷的內(nèi)部中斷,程序控制將,程序控制將轉(zhuǎn)入單步中斷服務(wù)程序轉(zhuǎn)入單步中斷服務(wù)程序。CPUCPU響應(yīng)單步中斷后將自動(dòng)把狀態(tài)標(biāo)志壓入堆棧響應(yīng)單步中斷后將自動(dòng)把狀態(tài)標(biāo)志壓入堆棧, ,然后然后清除清除TFTF和和IFIF標(biāo)志位。標(biāo)志位。單步中斷服務(wù)程序結(jié)束時(shí),再通過執(zhí)行單步

27、中斷服務(wù)程序結(jié)束時(shí),再通過執(zhí)行IRETIRET中斷返回中斷返回指令指令, ,將將CSCS與與IPIP的內(nèi)容出棧并恢復(fù)標(biāo)志寄存器的內(nèi)容的內(nèi)容出棧并恢復(fù)標(biāo)志寄存器的內(nèi)容, ,使程序返回到斷點(diǎn)處。使程序返回到斷點(diǎn)處。 由于在中斷時(shí)由于在中斷時(shí)TFTF位被保護(hù)起來了,位被保護(hù)起來了,中斷返回時(shí)中斷返回時(shí)TFTF位又位又被重新恢復(fù)(被重新恢復(fù)(TF=1TF=1), ,所以所以CPUCPU在中斷返回以后仍然處于單在中斷返回以后仍然處于單步工作方式。步工作方式。 . . 斷點(diǎn)中斷斷點(diǎn)中斷類型類型3 3 8086/80888086/8088指令系統(tǒng)中有一條設(shè)置程序斷點(diǎn)指令系統(tǒng)中有一條設(shè)置程序斷點(diǎn)的單字節(jié)中斷指

28、令(的單字節(jié)中斷指令(INT 3INT 3),),執(zhí)行該指令以后就執(zhí)行該指令以后就會(huì)產(chǎn)生一個(gè)中斷類型為會(huì)產(chǎn)生一個(gè)中斷類型為3 3的內(nèi)部中斷的內(nèi)部中斷,CPU,CPU將轉(zhuǎn)向?qū)⑥D(zhuǎn)向執(zhí)行一個(gè)斷點(diǎn)中斷服務(wù)程序執(zhí)行一個(gè)斷點(diǎn)中斷服務(wù)程序, ,以便進(jìn)行一些特殊以便進(jìn)行一些特殊的處理的處理. . 斷點(diǎn)中斷指令主要用于斷點(diǎn)中斷指令主要用于軟件調(diào)試軟件調(diào)試中中, ,程序員程序員可用它在程序中設(shè)置一個(gè)程序斷點(diǎn)??捎盟诔绦蛑性O(shè)置一個(gè)程序斷點(diǎn)。 . . 用戶定義的軟件中斷用戶定義的軟件中斷類型類型n n 在在8086/80888086/8088的內(nèi)部中斷中的內(nèi)部中斷中, ,有一個(gè)可由用戶定義的有一個(gè)可由用戶定義的雙字

29、節(jié)的雙字節(jié)的中斷指令中斷指令I(lǐng)NT nINT n,其第,其第1 1個(gè)字節(jié)為個(gè)字節(jié)為INTINT的操作碼的操作碼, ,第第2 2個(gè)字節(jié)個(gè)字節(jié)n n是它的是它的中斷類型碼中斷類型碼。中斷類型碼。中斷類型碼n n由程序員由程序員編程時(shí)給定。編程時(shí)給定。 ( (三三) ) 內(nèi)部中斷的特點(diǎn)內(nèi)部中斷的特點(diǎn) (1)(1)內(nèi)部中斷由一條內(nèi)部中斷由一條INT nINT n指令直接產(chǎn)生,其中斷指令直接產(chǎn)生,其中斷類型號(hào)類型號(hào)n n或者包括在指令中,或者已由系統(tǒng)預(yù)先定或者包括在指令中,或者已由系統(tǒng)預(yù)先定義。義。 (2)(2)除單步中斷除單步中斷以外,以外,所有內(nèi)部中斷都不能被屏所有內(nèi)部中斷都不能被屏蔽蔽。 (3)(

30、3)所有內(nèi)部中斷都所有內(nèi)部中斷都沒有中斷響應(yīng)總線周期沒有中斷響應(yīng)總線周期,這,這是因?yàn)閮?nèi)部中斷不必通過查詢外部來獲得中斷類型是因?yàn)閮?nèi)部中斷不必通過查詢外部來獲得中斷類型號(hào)。號(hào)。 (4)(4)硬、軟中斷的硬、軟中斷的優(yōu)先級(jí)排隊(duì)優(yōu)先級(jí)排隊(duì)如表如表6.26.2所示。所示。8086/80888086/8088中斷系統(tǒng)規(guī)定,除了單步中斷以外中斷系統(tǒng)規(guī)定,除了單步中斷以外, ,所有所有內(nèi)部中斷的優(yōu)先權(quán)內(nèi)部中斷的優(yōu)先權(quán)都比外部中斷的優(yōu)先權(quán)高都比外部中斷的優(yōu)先權(quán)高。 如果在執(zhí)行一個(gè)能引起內(nèi)部中斷指令的同時(shí)如果在執(zhí)行一個(gè)能引起內(nèi)部中斷指令的同時(shí), ,在在NMINMI或或INTRINTR引腳端也產(chǎn)生了外部中斷請(qǐng)求

31、引腳端也產(chǎn)生了外部中斷請(qǐng)求, ,則則 CPUCPU將首先處理內(nèi)部中將首先處理內(nèi)部中斷。斷。三、三、 中斷向量表中斷向量表 中斷向量表中斷向量表也稱也稱中斷入口地址表中斷入口地址表。中斷向量表放在存儲(chǔ)在中斷向量表放在存儲(chǔ)在00000H00000H到到003FFH003FFH之間,占之間,占1K1K字節(jié)字節(jié)。中斷向量表分成中斷向量表分成256256組,每組由組,每組由兩個(gè)字兩個(gè)字(即(即4 4個(gè)字節(jié))組成一個(gè)字節(jié))組成一個(gè)雙字長(zhǎng)的指針。個(gè)雙字長(zhǎng)的指針。雙字長(zhǎng)指針的雙字長(zhǎng)指針的高地址高地址存放的字是中斷服務(wù)程序入口地址所在存放的字是中斷服務(wù)程序入口地址所在的代碼段的的代碼段的1616位段地址(位段地

32、址(CSCS););低地址低地址字是中斷服務(wù)程序入口地址相對(duì)于段起始地址的字是中斷服務(wù)程序入口地址相對(duì)于段起始地址的偏移偏移值(值(IPIP)。CPUCPU通過通過CSCS和和IPIP的值得到一個(gè)的值得到一個(gè)2020位的地址(位的地址(1616位的位的CSCS段地址段地址左移左移4 4位,然后加上位,然后加上IPIP值)值), ,它就是它就是中斷服務(wù)程序的實(shí)際入口地址中斷服務(wù)程序的實(shí)際入口地址。 256256級(jí)中斷的級(jí)中斷的中斷向量表中斷向量表如圖如圖6.206.20所示。所示。 圖圖6.206.20的中斷向量表分為的中斷向量表分為3 3部分。部分。第第1 1部分部分 類型類型0 0類型類型4

33、 4 專用中斷專用中斷這這5 5種中斷的入口已由系統(tǒng)定義,不允許用戶修改。種中斷的入口已由系統(tǒng)定義,不允許用戶修改。第第2 2部分部分 類型類型5 5類型類型31 31 系統(tǒng)備用中斷系統(tǒng)備用中斷這是這是IntelIntel公司為軟、硬件開發(fā)保留的中斷類型公司為軟、硬件開發(fā)保留的中斷類型, ,一般不允許用戶作其他用途一般不允許用戶作其他用途, ,其中許多中斷已被系統(tǒng)開發(fā)其中許多中斷已被系統(tǒng)開發(fā)使用,例如類型使用,例如類型2121已用作系統(tǒng)功能調(diào)用的軟中斷。已用作系統(tǒng)功能調(diào)用的軟中斷。第第3 3部分部分 類型類型3232類型類型255 255 可供用戶使用可供用戶使用這些中斷可由用戶定義為這些中斷

34、可由用戶定義為軟中斷軟中斷, ,由由INT nINT n指令引入,指令引入,也可以是通過也可以是通過INTRINTR端直接引入端直接引入硬件可屏蔽中斷硬件可屏蔽中斷, ,使用時(shí)用使用時(shí)用戶要自行設(shè)置相應(yīng)的中斷入口地址。戶要自行設(shè)置相應(yīng)的中斷入口地址。 每個(gè)中斷向量具有一個(gè)相應(yīng)的中斷類型號(hào)。每個(gè)中斷向量具有一個(gè)相應(yīng)的中斷類型號(hào)。 中斷類型號(hào)乘中斷類型號(hào)乘4 4,將給出中斷向量表中的中斷向量入口第,將給出中斷向量表中的中斷向量入口第1 1字節(jié)的物理地址。字節(jié)的物理地址。例如例如,若中斷類型號(hào)為,若中斷類型號(hào)為8, 8, 則這個(gè)向量的第則這個(gè)向量的第1 1字節(jié)的地址為:字節(jié)的地址為: 類型號(hào)類型號(hào)8

35、 84 432=00100000B32=00100000B20H20H 若類型若類型8 8中,安排的中,安排的CS=CS=1000H1000H,IP=0200HIP=0200H,則它們,則它們形成的服務(wù)程序的入口地址形成的服務(wù)程序的入口地址為為1020010200。CPUCPU一旦響應(yīng)中斷類型一旦響應(yīng)中斷類型8,8,則將轉(zhuǎn)去執(zhí)行從地址則將轉(zhuǎn)去執(zhí)行從地址10200H10200H 開始的中斷服務(wù)程序。開始的中斷服務(wù)程序。如圖如圖6.246.24所示。所示。二、二、 8086/80888086/8088的中斷處理過程的中斷處理過程( (一一) 8086/8088 CPU) 8086/8088 CPU

36、中斷處理的基本過程中斷處理的基本過程 (3) (3) 在在一般情況一般情況下,都要待下,都要待當(dāng)前指令執(zhí)行完當(dāng)前指令執(zhí)行完后方可后方可響應(yīng)中斷響應(yīng)中斷申請(qǐng)。申請(qǐng)。但有但有少數(shù)情況少數(shù)情況是在是在下一條指令完成之后下一條指令完成之后才才響響應(yīng)中斷請(qǐng)求應(yīng)中斷請(qǐng)求。例如,例如,REPREP(重復(fù)前綴),(重復(fù)前綴),LOCKLOCK(封鎖前綴(封鎖前綴) )和和段超越前綴段超越前綴等指令都應(yīng)當(dāng)將前綴看作指令的一等指令都應(yīng)當(dāng)將前綴看作指令的一部分部分, ,在執(zhí)行前綴和指令間不允許中斷。段寄存在執(zhí)行前綴和指令間不允許中斷。段寄存器的傳送指令器的傳送指令MOVMOV和段寄存器的彈出指令和段寄存器的彈出指令

37、POPPOP也是也是一樣,在執(zhí)行下條指令之前都不能響應(yīng)中斷。一樣,在執(zhí)行下條指令之前都不能響應(yīng)中斷。(4) (4) 在在WAITWAIT指令指令和和重復(fù)數(shù)據(jù)串操作指令重復(fù)數(shù)據(jù)串操作指令執(zhí)行的過程中執(zhí)行的過程中間可以響應(yīng)中斷請(qǐng)求,但必須要等一個(gè)基本操作或一個(gè)等間可以響應(yīng)中斷請(qǐng)求,但必須要等一個(gè)基本操作或一個(gè)等待檢測(cè)周期完成后才能響應(yīng)中斷。待檢測(cè)周期完成后才能響應(yīng)中斷。(5) (5) 因?yàn)橐驗(yàn)镹MINMI引腳上的中斷請(qǐng)求是需要立即處理的引腳上的中斷請(qǐng)求是需要立即處理的, ,所所以在以在進(jìn)入執(zhí)行任何中斷(包括內(nèi)部中斷)服務(wù)程序之前進(jìn)入執(zhí)行任何中斷(包括內(nèi)部中斷)服務(wù)程序之前, ,都要安排都要安排測(cè)試

38、測(cè)試NMINMI引腳上是否有中斷請(qǐng)求引腳上是否有中斷請(qǐng)求,以保證它,以保證它實(shí)際實(shí)際上有最高的優(yōu)先權(quán)上有最高的優(yōu)先權(quán)。這時(shí)要為轉(zhuǎn)入執(zhí)行。這時(shí)要為轉(zhuǎn)入執(zhí)行NMINMI中斷服務(wù)程序中斷服務(wù)程序而再次保護(hù)現(xiàn)場(chǎng)、斷點(diǎn),并在執(zhí)行完而再次保護(hù)現(xiàn)場(chǎng)、斷點(diǎn),并在執(zhí)行完NMINMI中斷服務(wù)程序后中斷服務(wù)程序后返回到所中斷的服務(wù)程序返回到所中斷的服務(wù)程序, ,例如內(nèi)部中斷或例如內(nèi)部中斷或INTRINTR中斷的中中斷的中斷服務(wù)程序。斷服務(wù)程序。 (6) (6) 若若TEMP=1TEMP=1,則在中斷前,則在中斷前CPUCPU已處于單步工已處于單步工作方式,就和作方式,就和NMINMI一樣重新保護(hù)現(xiàn)場(chǎng)和斷點(diǎn),一樣重新

39、保護(hù)現(xiàn)場(chǎng)和斷點(diǎn),轉(zhuǎn)入單步中轉(zhuǎn)入單步中斷服務(wù)程序斷服務(wù)程序。若。若TEMP=0TEMP=0,也就是在中斷前,也就是在中斷前CPUCPU處于非單步處于非單步工作方式,則這時(shí)工作方式,則這時(shí)CPUCPU將轉(zhuǎn)去執(zhí)行最先引起中斷的中斷服將轉(zhuǎn)去執(zhí)行最先引起中斷的中斷服務(wù)程序。務(wù)程序。 (7) (7) 中斷處理程序結(jié)束中斷處理程序結(jié)束時(shí)時(shí), ,由中斷返回指令將堆棧中由中斷返回指令將堆棧中存放的存放的IPIP、CSCS以及以及FLAGFLAG值還原給指令指針值還原給指令指針I(yè)PIP、代碼段寄存、代碼段寄存器器CSCS以及標(biāo)志寄存器以及標(biāo)志寄存器。 當(dāng)當(dāng)多個(gè)中斷請(qǐng)求同時(shí)產(chǎn)生多個(gè)中斷請(qǐng)求同時(shí)產(chǎn)生時(shí),時(shí),8086

40、CPU8086 CPU將根據(jù)各中斷源優(yōu)先權(quán)的高低來處理,將根據(jù)各中斷源優(yōu)先權(quán)的高低來處理,首先首先響應(yīng)優(yōu)先權(quán)較高的中斷請(qǐng)求響應(yīng)優(yōu)先權(quán)較高的中斷請(qǐng)求,等具有較高優(yōu),等具有較高優(yōu)先權(quán)的中斷請(qǐng)求先權(quán)的中斷請(qǐng)求處理完以后處理完以后,再去,再去依次響應(yīng)依次響應(yīng)和處理其他中斷申請(qǐng)和處理其他中斷申請(qǐng)。四、四、 可屏蔽中斷的過程可屏蔽中斷的過程 ( (一一) INTR) INTR中斷的全過程中斷的全過程步驟如下:步驟如下: (1) CPU(1) CPU讀取讀取中斷類型號(hào)中斷類型號(hào)n n。 CPUCPU發(fā)出發(fā)出INTAINTA信號(hào),外部中斷接口電路把信號(hào),外部中斷接口電路把中斷中斷類型號(hào)通過數(shù)據(jù)總線送給類型號(hào)通過數(shù)據(jù)總線送給CPUCPU; (2) (2) 按先后順序把按先后順序把FLAGFLAG、CSCS和和IPIP的當(dāng)前內(nèi)容的當(dāng)前內(nèi)容壓入堆棧壓入堆棧; ; (3) (3) 清除清除IFIF和和TFTF標(biāo)志;標(biāo)志; (4) (4) 查中斷向量表查中斷向量表,把,把4 4n n2 2的字存儲(chǔ)單元的字

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論