微型計(jì)算機(jī)原理及應(yīng)用06_第1頁
微型計(jì)算機(jī)原理及應(yīng)用06_第2頁
微型計(jì)算機(jī)原理及應(yīng)用06_第3頁
微型計(jì)算機(jī)原理及應(yīng)用06_第4頁
微型計(jì)算機(jī)原理及應(yīng)用06_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1中南大學(xué)中國水利水電出版社2第第6章章 中斷系統(tǒng)中斷系統(tǒng)6.1 中斷概述中斷概述6.1.1 基本概念基本概念1中斷與中斷源中斷與中斷源中斷是一個(gè)中斷是一個(gè)“過程過程”。這個(gè)過程,由微處理器內(nèi)外部硬件。這個(gè)過程,由微處理器內(nèi)外部硬件或軟中斷指令引起,即由它們發(fā)出中斷請(qǐng)求,或軟中斷指令引起,即由它們發(fā)出中斷請(qǐng)求,CPU接到中接到中斷請(qǐng)求后暫時(shí)終止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的斷請(qǐng)求后暫時(shí)終止現(xiàn)行程序的執(zhí)行,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的那個(gè)外設(shè)或事件的中斷處理子程序,待中斷服務(wù)子程序處那個(gè)外設(shè)或事件的中斷處理子程序,待中斷服務(wù)子程序處理完畢后,再返回到暫停處繼續(xù)執(zhí)行原來的程序,也就是理完畢后,再返回到暫

2、停處繼續(xù)執(zhí)行原來的程序,也就是說,中斷就是說,中斷就是CPU在執(zhí)行當(dāng)前程序的過程中,由于意外的在執(zhí)行當(dāng)前程序的過程中,由于意外的事件輸入另一段程序的運(yùn)行。事件輸入另一段程序的運(yùn)行。 3引起中斷的事件稱為中斷源。中斷源有多種,可以是外部引起中斷的事件稱為中斷源。中斷源有多種,可以是外部的,也可以是的,也可以是CPU內(nèi)部的。例如一般的輸入輸出設(shè)備、數(shù)內(nèi)部的。例如一般的輸入輸出設(shè)備、數(shù)據(jù)通道中斷源(如磁盤磁帶等)、實(shí)時(shí)時(shí)鐘、故障源(如據(jù)通道中斷源(如磁盤磁帶等)、實(shí)時(shí)時(shí)鐘、故障源(如電源掉電等)、軟件中斷(如在調(diào)試程序時(shí)設(shè)置斷點(diǎn)等)電源掉電等)、軟件中斷(如在調(diào)試程序時(shí)設(shè)置斷點(diǎn)等)、CPU內(nèi)部運(yùn)算產(chǎn)

3、生的某些錯(cuò)誤(如運(yùn)算溢出)。內(nèi)部運(yùn)算產(chǎn)生的某些錯(cuò)誤(如運(yùn)算溢出)。2中斷系統(tǒng)中斷系統(tǒng)能實(shí)現(xiàn)中斷過程的軟硬件系統(tǒng)叫中斷系統(tǒng)。中斷系統(tǒng)應(yīng)具能實(shí)現(xiàn)中斷過程的軟硬件系統(tǒng)叫中斷系統(tǒng)。中斷系統(tǒng)應(yīng)具有以下功能:有以下功能:(1)能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)和中斷返回。)能實(shí)現(xiàn)中斷響應(yīng)、中斷服務(wù)和中斷返回。 (2)能實(shí)現(xiàn)中斷優(yōu)先權(quán)排隊(duì)。)能實(shí)現(xiàn)中斷優(yōu)先權(quán)排隊(duì)。 (3)能實(shí)現(xiàn)中斷嵌套。)能實(shí)現(xiàn)中斷嵌套。 CPU響應(yīng)中斷的過程與執(zhí)行調(diào)用子程序指令的過程很相似響應(yīng)中斷的過程與執(zhí)行調(diào)用子程序指令的過程很相似,但除了軟件中斷外,中斷是隨機(jī)發(fā)生的。,但除了軟件中斷外,中斷是隨機(jī)發(fā)生的。 46.1.2 中斷處理過程中斷處理過程

4、各種微型計(jì)算機(jī)的中斷系統(tǒng)都不一樣,然而其實(shí)現(xiàn)中斷的各種微型計(jì)算機(jī)的中斷系統(tǒng)都不一樣,然而其實(shí)現(xiàn)中斷的過程是相同的。一個(gè)完整的中斷處理過程包括過程是相同的。一個(gè)完整的中斷處理過程包括4個(gè)階段:中個(gè)階段:中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)(處理)和中斷返回,如圖斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)(處理)和中斷返回,如圖6-1所示。所示。執(zhí)行指令指令結(jié)束?中斷請(qǐng)求?返回開中斷恢復(fù)現(xiàn)場(chǎng)中斷服務(wù)保護(hù)現(xiàn)場(chǎng)關(guān)中斷響應(yīng)中斷取下一條指令否是是否51中斷請(qǐng)求中斷請(qǐng)求外部設(shè)備需要外部設(shè)備需要CPU為其服務(wù)時(shí),首先向?yàn)槠浞?wù)時(shí),首先向CPU發(fā)發(fā)“中斷請(qǐng)求中斷請(qǐng)求”信號(hào)。發(fā)出中斷請(qǐng)求信號(hào)必須滿足以下條件:信號(hào)。發(fā)出中斷請(qǐng)求信號(hào)必須滿

5、足以下條件:(1)請(qǐng)求中斷的外設(shè)應(yīng)通過接口電路在)請(qǐng)求中斷的外設(shè)應(yīng)通過接口電路在CPU的中斷請(qǐng)求輸?shù)闹袛嗾?qǐng)求輸入引腳上輸入一個(gè)符合規(guī)定的請(qǐng)求信號(hào),該信號(hào)可以是電平入引腳上輸入一個(gè)符合規(guī)定的請(qǐng)求信號(hào),該信號(hào)可以是電平或邊沿信號(hào)?;蜻呇匦盘?hào)。(2)外設(shè)處于就緒狀態(tài),如輸出設(shè)備準(zhǔn)備好接收)外設(shè)處于就緒狀態(tài),如輸出設(shè)備準(zhǔn)備好接收CPU的數(shù)的數(shù)據(jù)時(shí)才能向據(jù)時(shí)才能向CPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。(3)該中斷源未被屏蔽。通常每個(gè)中斷源設(shè)置有一個(gè)中斷)該中斷源未被屏蔽。通常每個(gè)中斷源設(shè)置有一個(gè)中斷允許觸發(fā)器,用來開放或禁止該設(shè)備的中斷請(qǐng)求,中斷允許允許觸發(fā)器,用來開放或禁止該設(shè)備的中斷請(qǐng)求,中斷允許觸發(fā)器

6、被置位時(shí),表示允許發(fā)出中斷申請(qǐng)。中斷允許觸發(fā)器觸發(fā)器被置位時(shí),表示允許發(fā)出中斷申請(qǐng)。中斷允許觸發(fā)器的置位或復(fù)位狀態(tài)由軟件設(shè)置(管理)。的置位或復(fù)位狀態(tài)由軟件設(shè)置(管理)。62中斷響應(yīng)中斷響應(yīng)由于中斷源的中斷請(qǐng)求是隨機(jī)的。由于中斷源的中斷請(qǐng)求是隨機(jī)的。CPU在現(xiàn)行指令周期結(jié)束在現(xiàn)行指令周期結(jié)束時(shí)去檢測(cè)時(shí)去檢測(cè)“中斷請(qǐng)求中斷請(qǐng)求”輸入線(如輸入線(如8086CPU的的INTR引腳)引腳),CPU檢測(cè)到有中斷請(qǐng)求時(shí),如果中斷響應(yīng)條件滿足(如中檢測(cè)到有中斷請(qǐng)求時(shí),如果中斷響應(yīng)條件滿足(如中斷允許標(biāo)志斷允許標(biāo)志IF=1),則),則CPU在當(dāng)前指令執(zhí)行結(jié)束時(shí)便響應(yīng)中在當(dāng)前指令執(zhí)行結(jié)束時(shí)便響應(yīng)中斷進(jìn)入中斷響

7、應(yīng)周期,在中斷響應(yīng)周期內(nèi)斷進(jìn)入中斷響應(yīng)周期,在中斷響應(yīng)周期內(nèi)CPU通過內(nèi)部硬件通過內(nèi)部硬件自動(dòng)完成三件事:自動(dòng)完成三件事:(1)關(guān)中斷。使中斷響應(yīng)周期不被其他中斷所終止。)關(guān)中斷。使中斷響應(yīng)周期不被其他中斷所終止。(2)保護(hù)斷點(diǎn)和標(biāo)志寄存器內(nèi)容,即將當(dāng)前正在執(zhí)行程序)保護(hù)斷點(diǎn)和標(biāo)志寄存器內(nèi)容,即將當(dāng)前正在執(zhí)行程序的段地址(的段地址(CS)和偏移地址()和偏移地址(IP)即斷點(diǎn)地址壓入堆棧,將)即斷點(diǎn)地址壓入堆棧,將標(biāo)志寄存器(標(biāo)志寄存器(FR)的內(nèi)容壓入堆棧。)的內(nèi)容壓入堆棧。(3)形成中斷服務(wù)程序的入口地址。將入口地址送入)形成中斷服務(wù)程序的入口地址。將入口地址送入CS和和IP后,開始執(zhí)行中

8、斷服務(wù)程序。后,開始執(zhí)行中斷服務(wù)程序。73中斷處理中斷處理CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序要順序完成以下幾步工響應(yīng)中斷,執(zhí)行中斷服務(wù)程序要順序完成以下幾步工作:作:(1)保護(hù)現(xiàn)場(chǎng)。)保護(hù)現(xiàn)場(chǎng)。 (2)開中斷。)開中斷。 (3)查找中斷源轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。)查找中斷源轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。 (4)關(guān)閉中斷。)關(guān)閉中斷。 (5)恢復(fù)現(xiàn)場(chǎng)。)恢復(fù)現(xiàn)場(chǎng)。 (6)開中斷。)開中斷。 4中斷返回中斷返回中斷服務(wù)程序的最后一條指令必須是中斷服務(wù)程序的最后一條指令必須是“中斷返回中斷返回”指令,指令,CPU執(zhí)行中斷返回指令時(shí),自動(dòng)將保存在現(xiàn)行堆棧中的標(biāo)執(zhí)行中斷返回指令時(shí),自動(dòng)將保存在現(xiàn)行堆棧中的標(biāo)志寄

9、存器的內(nèi)容和斷點(diǎn)地址彈出,使程序回到中斷前的地志寄存器的內(nèi)容和斷點(diǎn)地址彈出,使程序回到中斷前的地址繼續(xù)執(zhí)行,即址繼續(xù)執(zhí)行,即CPU從中斷服務(wù)程序返回而繼續(xù)執(zhí)行被終從中斷服務(wù)程序返回而繼續(xù)執(zhí)行被終止的主程序。止的主程序。86.1.3 中斷識(shí)別和中斷優(yōu)先級(jí)中斷識(shí)別和中斷優(yōu)先級(jí)實(shí)際系統(tǒng)中,常常會(huì)出現(xiàn)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求,實(shí)際系統(tǒng)中,常常會(huì)出現(xiàn)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求,或者在尚未處理完一個(gè)中斷時(shí)又有一個(gè)新的中斷請(qǐng)求提出或者在尚未處理完一個(gè)中斷時(shí)又有一個(gè)新的中斷請(qǐng)求提出。然而。然而CPU每次只能響應(yīng)一個(gè)中斷源的請(qǐng)求,所以每次只能響應(yīng)一個(gè)中斷源的請(qǐng)求,所以CPU必必須確定首先為哪一個(gè)中斷源服務(wù)及服

10、務(wù)次序。須確定首先為哪一個(gè)中斷源服務(wù)及服務(wù)次序。 1中斷優(yōu)先級(jí)排隊(duì)中斷優(yōu)先級(jí)排隊(duì)微型計(jì)算機(jī)系統(tǒng)中,對(duì)多個(gè)中斷源進(jìn)行識(shí)別和優(yōu)先級(jí)排隊(duì)微型計(jì)算機(jī)系統(tǒng)中,對(duì)多個(gè)中斷源進(jìn)行識(shí)別和優(yōu)先級(jí)排隊(duì)的目的是要尋找出優(yōu)先級(jí)最高的中斷源,并形成該中斷源的目的是要尋找出優(yōu)先級(jí)最高的中斷源,并形成該中斷源的中斷服務(wù)程序的入口地址,以便的中斷服務(wù)程序的入口地址,以便CPU將控制轉(zhuǎn)移到該中將控制轉(zhuǎn)移到該中斷服務(wù)程序。斷服務(wù)程序。系統(tǒng)中系統(tǒng)中CPU識(shí)別中斷源和比較其優(yōu)先級(jí)是同時(shí)解決的,稱識(shí)別中斷源和比較其優(yōu)先級(jí)是同時(shí)解決的,稱為中斷優(yōu)先級(jí)排隊(duì)。為中斷優(yōu)先級(jí)排隊(duì)。9CPU實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)的方法有兩種:查詢中斷和矢量中實(shí)現(xiàn)中斷

11、優(yōu)先級(jí)排隊(duì)的方法有兩種:查詢中斷和矢量中斷。斷。(1)查詢中斷。查詢中斷(或叫程序查詢方式)就是在)查詢中斷。查詢中斷(或叫程序查詢方式)就是在CPU響應(yīng)中斷后,通過簡(jiǎn)單硬件接口電路中斷識(shí)別程序查詢響應(yīng)中斷后,通過簡(jiǎn)單硬件接口電路中斷識(shí)別程序查詢連接到系統(tǒng)上的每個(gè)設(shè)備。確定哪些外設(shè)提出中斷請(qǐng)求,是連接到系統(tǒng)上的每個(gè)設(shè)備。確定哪些外設(shè)提出中斷請(qǐng)求,是按事先確定的優(yōu)先級(jí)別確定查詢的先后順序,最先被查詢的按事先確定的優(yōu)先級(jí)別確定查詢的先后順序,最先被查詢的優(yōu)先級(jí)別最高。查詢過程如圖優(yōu)先級(jí)別最高。查詢過程如圖6-2所示。所示。 10硬盤軟盤打印機(jī)電源故障恢復(fù)現(xiàn)場(chǎng)中斷返回IR0請(qǐng)求?IR7請(qǐng)求?IR1請(qǐng)

12、求?中斷服務(wù)程序入口保護(hù)現(xiàn)場(chǎng)讀中斷請(qǐng)求0#中斷服務(wù)程序1#中斷服務(wù)程序7#中斷服務(wù)程序11(2)矢量中斷。矢量中斷就是)矢量中斷。矢量中斷就是CPU響應(yīng)中斷后,要求中斷響應(yīng)中斷后,要求中斷源提供一個(gè)地址信息,該地址信息稱為中斷向量(或叫中源提供一個(gè)地址信息,該地址信息稱為中斷向量(或叫中斷矢量),這種中斷稱為矢量(向量)中斷。所以,中斷斷矢量),這種中斷稱為矢量(向量)中斷。所以,中斷向量就是中斷服務(wù)程序的入口地址。當(dāng)向量就是中斷服務(wù)程序的入口地址。當(dāng)CPU識(shí)別出某個(gè)外識(shí)別出某個(gè)外設(shè)請(qǐng)求中斷并予以響應(yīng)時(shí),控制邏輯就將該設(shè)請(qǐng)求中斷并予以響應(yīng)時(shí),控制邏輯就將該I/O設(shè)備的中斷設(shè)備的中斷服務(wù)程序的入

13、口地址送服務(wù)程序的入口地址送CPU,轉(zhuǎn)入中斷服務(wù)程序。,轉(zhuǎn)入中斷服務(wù)程序。根據(jù)形成入口地址的機(jī)制的不同,向量中斷又分為:簡(jiǎn)單根據(jù)形成入口地址的機(jī)制的不同,向量中斷又分為:簡(jiǎn)單硬件查詢法硬件查詢法菊花鏈法和中斷控制專用硬件方法。菊花鏈法和中斷控制專用硬件方法。1)簡(jiǎn)單硬件查詢方式)簡(jiǎn)單硬件查詢方式菊花鏈法。菊花鏈法。 12菊花鏈邏輯電路菊花鏈邏輯電路菊花鏈邏輯電路接口1接口3接口2數(shù)據(jù)總線CPU以及總線控制邏輯 INTAINTR132)中斷控制專用硬件方式。是向量中斷的典型方法,該方)中斷控制專用硬件方式。是向量中斷的典型方法,該方法使用一個(gè)專門的中斷優(yōu)先級(jí)控制器來解決中斷優(yōu)先級(jí)的法使用一個(gè)專門

14、的中斷優(yōu)先級(jí)控制器來解決中斷優(yōu)先級(jí)的排隊(duì)管理。排隊(duì)管理。 總線控制階段中斷類型寄存器,由中斷請(qǐng)求決定中斷服務(wù)寄存器優(yōu)先級(jí)管理邏輯中斷請(qǐng)求寄存器中斷屏蔽寄存器IR0IR1IR78086/8088CPU控制總線INTRINTA142中斷的多級(jí)嵌套中斷的多級(jí)嵌套CPU總是首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。當(dāng)總是首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。當(dāng)CPU正在執(zhí)正在執(zhí)行優(yōu)先級(jí)別較低的中斷服務(wù)程序時(shí),允許響應(yīng)優(yōu)先級(jí)別高行優(yōu)先級(jí)別較低的中斷服務(wù)程序時(shí),允許響應(yīng)優(yōu)先級(jí)別高的中斷源的中斷請(qǐng)求,終止正在處理的中斷,這就是中斷的中斷源的中斷請(qǐng)求,終止正在處理的中斷,這就是中斷嵌套或稱多重中斷。此時(shí),嵌套或稱多重中斷。此時(shí),

15、CPU暫停正在執(zhí)行著的級(jí)別較暫停正在執(zhí)行著的級(jí)別較低的中斷服務(wù)程序,為優(yōu)先級(jí)別高的中斷源服務(wù),待優(yōu)先低的中斷服務(wù)程序,為優(yōu)先級(jí)別高的中斷源服務(wù),待優(yōu)先權(quán)高的中斷服務(wù)結(jié)束后,再返回到剛才被中斷的那一級(jí),權(quán)高的中斷服務(wù)結(jié)束后,再返回到剛才被中斷的那一級(jí),繼續(xù)為它進(jìn)行中斷服務(wù),直至處理結(jié)束返回主程序,如圖繼續(xù)為它進(jìn)行中斷服務(wù),直至處理結(jié)束返回主程序,如圖6-5所示。所示。編寫具有中斷嵌套的中斷服務(wù)程序時(shí)需要注意:編寫具有中斷嵌套的中斷服務(wù)程序時(shí)需要注意:(1)要有屏蔽本級(jí)和低級(jí)中斷請(qǐng)求的環(huán)節(jié),防止低級(jí)中斷)要有屏蔽本級(jí)和低級(jí)中斷請(qǐng)求的環(huán)節(jié),防止低級(jí)中斷的干擾。的干擾。(2)執(zhí)行中斷服務(wù)程序之前,要開

16、放中斷,允許優(yōu)先級(jí)比)執(zhí)行中斷服務(wù)程序之前,要開放中斷,允許優(yōu)先級(jí)比它高的中斷源進(jìn)行中斷,實(shí)現(xiàn)中斷嵌套。它高的中斷源進(jìn)行中斷,實(shí)現(xiàn)中斷嵌套。(3)中斷服務(wù)程序結(jié)束后,為使恢復(fù)現(xiàn)場(chǎng)的過程不受任何)中斷服務(wù)程序結(jié)束后,為使恢復(fù)現(xiàn)場(chǎng)的過程不受任何中斷請(qǐng)求的干擾,必須執(zhí)行中斷請(qǐng)求的干擾,必須執(zhí)行CLI指令,中斷關(guān)閉,才能恢指令,中斷關(guān)閉,才能恢復(fù)現(xiàn)場(chǎng)。復(fù)現(xiàn)場(chǎng)。15INT 1#INT 2#INT 3#1#中斷服務(wù)程序2#中斷服務(wù)程序3#中斷服務(wù)程序主程序返回返回返回166.2 8086/8088的中斷系統(tǒng)的中斷系統(tǒng)8086/8088微機(jī)系統(tǒng)具有一個(gè)功能強(qiáng)大的中斷系統(tǒng),可以處理微機(jī)系統(tǒng)具有一個(gè)功能強(qiáng)大的中

17、斷系統(tǒng),可以處理多達(dá)多達(dá)256種不同類型的中斷。對(duì)應(yīng)的中斷類型碼為種不同類型的中斷。對(duì)應(yīng)的中斷類型碼為0255。6.2.1 8086/8088的中斷分類的中斷分類按產(chǎn)生中斷的方法來分,按產(chǎn)生中斷的方法來分,8086/8088的中斷可以分為兩大類:的中斷可以分為兩大類:一類是硬件中斷,另一類是軟件中斷,如圖一類是硬件中斷,另一類是軟件中斷,如圖6-6所示。所示。17非屏蔽中斷請(qǐng)求中斷邏輯INT n指令級(jí)管單步中斷除法出錯(cuò)中斷8086/8088CPU8259AINTR可屏蔽中斷請(qǐng)求186.2.2 中斷向量和中斷向量表中斷向量和中斷向量表中斷向量是中斷服務(wù)程序的入口地址,每一個(gè)中斷服務(wù)程中斷向量是中

18、斷服務(wù)程序的入口地址,每一個(gè)中斷服務(wù)程序都有一個(gè)惟一確定的入口地址,即中斷向量。把系統(tǒng)中序都有一個(gè)惟一確定的入口地址,即中斷向量。把系統(tǒng)中的全部中斷向量集中存放到存儲(chǔ)器的某一區(qū)域內(nèi),這個(gè)存的全部中斷向量集中存放到存儲(chǔ)器的某一區(qū)域內(nèi),這個(gè)存放中斷向量的存儲(chǔ)區(qū)就叫中斷向量表,即中斷服務(wù)程序入放中斷向量的存儲(chǔ)區(qū)就叫中斷向量表,即中斷服務(wù)程序入口地址表。口地址表。8086/8088的中斷系統(tǒng)可以處理的中斷系統(tǒng)可以處理256種不同的中斷,每個(gè)中斷種不同的中斷,每個(gè)中斷對(duì)應(yīng)一個(gè)類型碼。對(duì)應(yīng)一個(gè)類型碼。8086/8088中斷系統(tǒng)中的中斷向量表是位中斷系統(tǒng)中的中斷向量表是位于于0段的段的03FFFH的存貯區(qū)內(nèi)

19、,每個(gè)中斷向量占四個(gè)單元的存貯區(qū)內(nèi),每個(gè)中斷向量占四個(gè)單元,其中前兩個(gè)單元存放中斷處理子程序的入口地址的偏移,其中前兩個(gè)單元存放中斷處理子程序的入口地址的偏移量(量(IP),低位在前,高位在后;后兩個(gè)單元存放中斷處),低位在前,高位在后;后兩個(gè)單元存放中斷處理子程序入口地址的段地址(理子程序入口地址的段地址(CS),也是低位在前,高位),也是低位在前,高位在后,整個(gè)中斷向量的排列是按中斷類型號(hào)進(jìn)行的。在后,整個(gè)中斷向量的排列是按中斷類型號(hào)進(jìn)行的。8086/8088系統(tǒng)在存儲(chǔ)器的最低端地址從系統(tǒng)在存儲(chǔ)器的最低端地址從0段段0單元開始的,單元開始的,共共1KB單元作為中斷向量表,如圖單元作為中斷向

20、量表,如圖6-7所示。所示。19CSIPCSIPCSIPCSIPCSIPCSIPCSIP類型255類型32類型5類型4類型3類型2類型1類型0類型31供用戶定義的中斷(共224個(gè))保留的中斷(共27個(gè))專用的中斷(共5個(gè)) 0000:03FFH0000:007FH0000:007EH0000:0014H0000:0013H0000:0010H0000:000FH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H0000:000CH0000:000BH溢出中斷斷點(diǎn)中斷除數(shù)為0中斷單步中斷非屏蔽中斷208086/8088系統(tǒng)中的系統(tǒng)中的256個(gè)中斷

21、分為以下三大類:個(gè)中斷分為以下三大類:(1)專用中斷。它們對(duì)應(yīng)于類型)專用中斷。它們對(duì)應(yīng)于類型04,它們有明確的定,它們有明確的定義和處理功能,分別對(duì)應(yīng)于除法出錯(cuò)、單步中斷、不可屏義和處理功能,分別對(duì)應(yīng)于除法出錯(cuò)、單步中斷、不可屏蔽中斷、斷點(diǎn)中斷和溢出中斷,用戶不能修改。蔽中斷、斷點(diǎn)中斷和溢出中斷,用戶不能修改。(2)從類型)從類型531共共27個(gè)中斷是系統(tǒng)保留的中斷,提供給個(gè)中斷是系統(tǒng)保留的中斷,提供給系統(tǒng)使用,這些中斷中,有的沒有使用,但是為了保持系系統(tǒng)使用,這些中斷中,有的沒有使用,但是為了保持系統(tǒng)之間的兼容性以及與將來統(tǒng)之間的兼容性以及與將來Intel系統(tǒng)的兼容,用戶不能對(duì)系統(tǒng)的兼容,

22、用戶不能對(duì)這些中斷進(jìn)行自行定義。這些中斷進(jìn)行自行定義。(3)從類型)從類型32255共共224個(gè)中斷,這類中斷原則上是可個(gè)中斷,這類中斷原則上是可以由用戶定義的??啥x為由以由用戶定義的。可定義為由INT n指令引入軟中斷,可指令引入軟中斷,可以是通過以是通過INTR引腳直接引入,或者通過中斷控制器引腳直接引入,或者通過中斷控制器8259A引入可屏蔽中斷,使用時(shí)用戶要裝入相應(yīng)的入口地址。但引入可屏蔽中斷,使用時(shí)用戶要裝入相應(yīng)的入口地址。但是,這類中斷類型號(hào)中,有的系統(tǒng)已分配有固定的用處,是,這類中斷類型號(hào)中,有的系統(tǒng)已分配有固定的用處,比如類型號(hào)為比如類型號(hào)為21H的中斷已定義為操作系統(tǒng)的中斷

23、已定義為操作系統(tǒng)MS-DOS的系的系統(tǒng)調(diào)用。統(tǒng)調(diào)用。216.2.3 硬件中斷硬件中斷硬件中斷也叫外部中斷,由硬件中斷也叫外部中斷,由I/O設(shè)備或外部電路產(chǎn)生。設(shè)備或外部電路產(chǎn)生。8086/8088CPU中的硬件中斷分為兩種:非屏蔽中斷中的硬件中斷分為兩種:非屏蔽中斷NMI和和可屏蔽中斷可屏蔽中斷INTR,分別從,分別從CPU的的NMI和和INTR引腳引入。引腳引入。1非屏蔽中斷非屏蔽中斷NMI從從NMI引腳引入的中斷為非屏蔽中斷,它不受中斷允許標(biāo)引腳引入的中斷為非屏蔽中斷,它不受中斷允許標(biāo)志的影響。非屏蔽中斷的類型碼為志的影響。非屏蔽中斷的類型碼為2,因此非屏蔽中斷處理,因此非屏蔽中斷處理子程

24、序的入口地址存放在開始的子程序的入口地址存放在開始的4個(gè)單元中。個(gè)單元中。2可屏蔽中斷可屏蔽中斷一般外部設(shè)備請(qǐng)求的中斷都是從一般外部設(shè)備請(qǐng)求的中斷都是從CPU的的INTR端引入的可屏端引入的可屏蔽中斷。當(dāng)蔽中斷。當(dāng)CPU接收到一個(gè)可屏蔽中斷請(qǐng)求時(shí),如果中斷接收到一個(gè)可屏蔽中斷請(qǐng)求時(shí),如果中斷允許標(biāo)志允許標(biāo)志IF為為1,那么,那么CPU就會(huì)在執(zhí)行完當(dāng)前指令后響應(yīng)這就會(huì)在執(zhí)行完當(dāng)前指令后響應(yīng)這一中斷請(qǐng)求。至于一中斷請(qǐng)求。至于IF的設(shè)置和清除,則可以通過指令或調(diào)的設(shè)置和清除,則可以通過指令或調(diào)試工具來實(shí)現(xiàn)。試工具來實(shí)現(xiàn)。223硬件中斷的響應(yīng)和時(shí)序硬件中斷的響應(yīng)和時(shí)序CPU響應(yīng)外設(shè)中斷并轉(zhuǎn)入中斷服務(wù)程

25、序的過程中要依次完成以下操作響應(yīng)外設(shè)中斷并轉(zhuǎn)入中斷服務(wù)程序的過程中要依次完成以下操作:(1)執(zhí)行第一個(gè)中斷響應(yīng)總線周期,發(fā)負(fù)脈沖,通知外部設(shè)備接口)執(zhí)行第一個(gè)中斷響應(yīng)總線周期,發(fā)負(fù)脈沖,通知外部設(shè)備接口中斷請(qǐng)求已被響應(yīng),同時(shí)封鎖總線,禁止其他總線主模塊發(fā)總線請(qǐng)求中斷請(qǐng)求已被響應(yīng),同時(shí)封鎖總線,禁止其他總線主模塊發(fā)總線請(qǐng)求。(2)執(zhí)行第二個(gè)中斷響應(yīng)總線周期,從數(shù)據(jù)總線上讀取中斷類型碼)執(zhí)行第二個(gè)中斷響應(yīng)總線周期,從數(shù)據(jù)總線上讀取中斷類型碼存入內(nèi)部暫存器。存入內(nèi)部暫存器。(3)將標(biāo)志寄存器的內(nèi)容壓入堆棧。)將標(biāo)志寄存器的內(nèi)容壓入堆棧。(4)將)將IF和和TF清零。清除清零。清除IF是為了在中斷響應(yīng)

26、過程中禁止其他外部是為了在中斷響應(yīng)過程中禁止其他外部中斷,以免中斷響應(yīng)過程被中斷請(qǐng)求打擾;清除中斷,以免中斷響應(yīng)過程被中斷請(qǐng)求打擾;清除TF是為了避免是為了避免CPU以單步方式執(zhí)行中斷服務(wù)子程序。以單步方式執(zhí)行中斷服務(wù)子程序。(5)保護(hù)斷點(diǎn)。即將當(dāng)前指令的下一條指令的段地址)保護(hù)斷點(diǎn)。即將當(dāng)前指令的下一條指令的段地址CS值和段內(nèi)偏值和段內(nèi)偏移地址移地址IP值壓入棧,使中斷處理完畢后正確地返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行主值壓入棧,使中斷處理完畢后正確地返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行主程序。程序。(6)轉(zhuǎn)入中斷處理子程序。根據(jù)()轉(zhuǎn)入中斷處理子程序。根據(jù)(2)得到的類型碼,從中斷向量表)得到的類型碼,從中斷向量表中找到中

27、斷向量并轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。中找到中斷向量并轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。(7)中斷返回。中斷服務(wù)程序結(jié)束時(shí),)中斷返回。中斷服務(wù)程序結(jié)束時(shí),CPU依次從堆棧中彈出依次從堆棧中彈出IP、CS和和FR的內(nèi)容,然后按照的內(nèi)容,然后按照IP和和CS值返回主程序的斷點(diǎn)處繼續(xù)執(zhí)行原值返回主程序的斷點(diǎn)處繼續(xù)執(zhí)行原來的程序,返回?cái)帱c(diǎn)的一系列操作是由來的程序,返回?cái)帱c(diǎn)的一系列操作是由IRET中斷返回指令實(shí)現(xiàn)的。中斷返回指令實(shí)現(xiàn)的。23標(biāo)志入棧令TEMP=TF清除IF、TF執(zhí)行中斷服務(wù)程序調(diào)用中斷服務(wù)程序CS、IP入棧有NMI嗎?TEMP=1?彈出CS和IP彈出標(biāo)志IF=1?結(jié)束當(dāng)前指令是內(nèi)部中斷?是NMI中

28、斷?是INTR中斷?TF=1?執(zhí)行下一條指令中斷響應(yīng)讀類型碼n是否是是是是有24254中斷服務(wù)子程序中斷服務(wù)子程序不同的中斷源,其中斷服務(wù)子程序的功能不同,但所有的中斷不同的中斷源,其中斷服務(wù)子程序的功能不同,但所有的中斷服務(wù)子程序都有著相同的結(jié)構(gòu)模式。服務(wù)子程序都有著相同的結(jié)構(gòu)模式。(1)中斷服務(wù)程序的一開始要用壓棧指令保護(hù)現(xiàn)場(chǎng),即保護(hù))中斷服務(wù)程序的一開始要用壓棧指令保護(hù)現(xiàn)場(chǎng),即保護(hù)CPU內(nèi)有關(guān)寄存器的值以及中斷服務(wù)程序中要使用的寄存器內(nèi)有關(guān)寄存器的值以及中斷服務(wù)程序中要使用的寄存器值。值。(2)用)用STI指令開中斷,以便在中斷處理過程中允許優(yōu)先級(jí)指令開中斷,以便在中斷處理過程中允許優(yōu)先

29、級(jí)更高的中斷進(jìn)入實(shí)現(xiàn)嵌套。更高的中斷進(jìn)入實(shí)現(xiàn)嵌套。(3)執(zhí)行中斷處理程序,進(jìn)行具體的中斷服務(wù),這是中斷服)執(zhí)行中斷處理程序,進(jìn)行具體的中斷服務(wù),這是中斷服務(wù)程序的主要部分。務(wù)程序的主要部分。(4)中斷處理模塊執(zhí)行完后,用)中斷處理模塊執(zhí)行完后,用CLI指令關(guān)中斷,恢復(fù)現(xiàn)場(chǎng)指令關(guān)中斷,恢復(fù)現(xiàn)場(chǎng)過程中禁止其他中斷。過程中禁止其他中斷。(5)通過一系列的出棧指令)通過一系列的出棧指令POP將保護(hù)現(xiàn)場(chǎng)時(shí)壓入堆棧的內(nèi)將保護(hù)現(xiàn)場(chǎng)時(shí)壓入堆棧的內(nèi)容以相反的次序彈出,即恢復(fù)現(xiàn)場(chǎng)。容以相反的次序彈出,即恢復(fù)現(xiàn)場(chǎng)。(6)開放中斷。)開放中斷。(7)中斷返回指令返回主程序。執(zhí)行中斷返回指令,使堆棧)中斷返回指令返回主

30、程序。執(zhí)行中斷返回指令,使堆棧中保存的斷點(diǎn)值和標(biāo)志值分別裝入中保存的斷點(diǎn)值和標(biāo)志值分別裝入IP、CS和標(biāo)志寄存器。和標(biāo)志寄存器。 266.2.4 軟件中斷軟件中斷8086/8088系統(tǒng)中,提供了直接調(diào)用中斷處理子程序的軟件手系統(tǒng)中,提供了直接調(diào)用中斷處理子程序的軟件手段,這就是中斷指令段,這就是中斷指令I(lǐng)NT n。通過中斷指令使。通過中斷指令使CPU執(zhí)行中斷執(zhí)行中斷處理子程序的方法叫軟件中斷。軟件中斷是由處理子程序的方法叫軟件中斷。軟件中斷是由CPU內(nèi)部所引內(nèi)部所引起的,也叫內(nèi)部中斷。軟件中斷可以由中斷指令起的,也叫內(nèi)部中斷。軟件中斷可以由中斷指令I(lǐng)NT n引起引起,由,由CPU的某些運(yùn)算錯(cuò)誤

31、(如除法出錯(cuò)等)引起或由調(diào)試程的某些運(yùn)算錯(cuò)誤(如除法出錯(cuò)等)引起或由調(diào)試程序序DEBUG設(shè)置的中斷。設(shè)置的中斷。CPU執(zhí)行程序過程中,會(huì)發(fā)現(xiàn)運(yùn)算中出現(xiàn)的一些錯(cuò)誤,這時(shí)執(zhí)行程序過程中,會(huì)發(fā)現(xiàn)運(yùn)算中出現(xiàn)的一些錯(cuò)誤,這時(shí)就會(huì)中斷程序的執(zhí)行,自動(dòng)啟動(dòng)內(nèi)部邏輯轉(zhuǎn)去執(zhí)行所需要的就會(huì)中斷程序的執(zhí)行,自動(dòng)啟動(dòng)內(nèi)部邏輯轉(zhuǎn)去執(zhí)行所需要的中斷服務(wù)程序處理這些錯(cuò)誤。中斷服務(wù)程序處理這些錯(cuò)誤。(1)類型)類型0中斷(除法出錯(cuò)中斷)。除法過程中,若除數(shù)為中斷(除法出錯(cuò)中斷)。除法過程中,若除數(shù)為0或商超過了寄存器所能表示的范圍,這時(shí)就會(huì)產(chǎn)生一個(gè)類型或商超過了寄存器所能表示的范圍,這時(shí)就會(huì)產(chǎn)生一個(gè)類型為為0的中斷,轉(zhuǎn)入類型

32、的中斷,轉(zhuǎn)入類型0的中斷服務(wù)程序。的中斷服務(wù)程序。27(2)類型)類型1中斷(單步中斷)。在中斷(單步中斷)。在CPU執(zhí)行一條指令前,執(zhí)行一條指令前,如果檢測(cè)到標(biāo)志寄存器中的單步標(biāo)志如果檢測(cè)到標(biāo)志寄存器中的單步標(biāo)志IF=1,則,則8086/8088就就處于單步工作方式,即每執(zhí)行完一條指令后都自動(dòng)產(chǎn)生一處于單步工作方式,即每執(zhí)行完一條指令后都自動(dòng)產(chǎn)生一個(gè)個(gè)1型中斷,執(zhí)行一次單步中斷處理程序,此程序用來顯示型中斷,執(zhí)行一次單步中斷處理程序,此程序用來顯示一些內(nèi)部寄存器的值以及一些附帶信息。因此,單步中斷一些內(nèi)部寄存器的值以及一些附帶信息。因此,單步中斷一般用于程序的調(diào)試。一般用于程序的調(diào)試。(3)

33、類型)類型3中斷(斷點(diǎn)中斷)。斷點(diǎn)中斷是專供在程序中中斷(斷點(diǎn)中斷)。斷點(diǎn)中斷是專供在程序中設(shè)置斷點(diǎn)用的,可以很方便地插入到程序的任何地方,插設(shè)置斷點(diǎn)用的,可以很方便地插入到程序的任何地方,插入類型入類型3中斷的地方便是斷點(diǎn)。在斷點(diǎn)處,停止正常的執(zhí)行中斷的地方便是斷點(diǎn)。在斷點(diǎn)處,停止正常的執(zhí)行過程,以便進(jìn)行某種特殊的處理。也用于程序的調(diào)試。過程,以便進(jìn)行某種特殊的處理。也用于程序的調(diào)試。(4)類型)類型4中斷(運(yùn)算溢出中斷)。中斷(運(yùn)算溢出中斷)。CPU檢測(cè)溢出標(biāo)志檢測(cè)溢出標(biāo)志OF=1時(shí),就執(zhí)行一條時(shí),就執(zhí)行一條INTO指令,之后立即產(chǎn)生一個(gè)類型指令,之后立即產(chǎn)生一個(gè)類型4中斷,此時(shí)中斷處理程

34、序給出錯(cuò)誤標(biāo)志。中斷,此時(shí)中斷處理程序給出錯(cuò)誤標(biāo)志。由中斷指令由中斷指令I(lǐng)NT n引起中斷。引起中斷。CPU執(zhí)行一條執(zhí)行一條INT n指令后立指令后立即產(chǎn)生中斷,并且會(huì)調(diào)用系統(tǒng)中相應(yīng)的中斷處理程序來完即產(chǎn)生中斷,并且會(huì)調(diào)用系統(tǒng)中相應(yīng)的中斷處理程序來完成中斷功能。指令中的成中斷功能。指令中的n為中斷類型碼。為中斷類型碼。28軟件中斷具有以下特點(diǎn):軟件中斷具有以下特點(diǎn):(1)執(zhí)行一條指令進(jìn)入中斷處理子程序,并從指令本身獲)執(zhí)行一條指令進(jìn)入中斷處理子程序,并從指令本身獲得中斷類型碼。得中斷類型碼。(2)進(jìn)入中斷時(shí),不需要執(zhí)行中斷響應(yīng)總線周期,不需要)進(jìn)入中斷時(shí),不需要執(zhí)行中斷響應(yīng)總線周期,不需要發(fā)響

35、應(yīng)信號(hào),也不需要從數(shù)據(jù)總線上獲取中斷類型碼。發(fā)響應(yīng)信號(hào),也不需要從數(shù)據(jù)總線上獲取中斷類型碼。(3)除單步中斷外,內(nèi)部中斷不受中斷允許標(biāo)志)除單步中斷外,內(nèi)部中斷不受中斷允許標(biāo)志IF的影響的影響,即不論,即不論IF=1還是還是0,任何一個(gè)軟件中斷均可執(zhí)行。單步中,任何一個(gè)軟件中斷均可執(zhí)行。單步中斷需要斷需要IF=1時(shí)才能執(zhí)行。時(shí)才能執(zhí)行。(4)除單步中斷外,所有內(nèi)部中斷都比外部中斷的優(yōu)先級(jí))除單步中斷外,所有內(nèi)部中斷都比外部中斷的優(yōu)先級(jí)別高。別高。(5)正在執(zhí)行軟件中斷時(shí),如果有外部中斷請(qǐng)求,且是不)正在執(zhí)行軟件中斷時(shí),如果有外部中斷請(qǐng)求,且是不可屏蔽中斷請(qǐng)求,則會(huì)在執(zhí)行完當(dāng)前指令之后立即予以響

36、應(yīng)可屏蔽中斷請(qǐng)求,則會(huì)在執(zhí)行完當(dāng)前指令之后立即予以響應(yīng);如果來了可屏蔽中斷請(qǐng)求,且中斷是開放的(即;如果來了可屏蔽中斷請(qǐng)求,且中斷是開放的(即IF=1),),則也會(huì)在當(dāng)前指令執(zhí)行完后響應(yīng)可屏蔽中斷請(qǐng)求。則也會(huì)在當(dāng)前指令執(zhí)行完后響應(yīng)可屏蔽中斷請(qǐng)求。(6)軟件中斷沒有隨機(jī)性。軟件中斷是由安排在程序中的)軟件中斷沒有隨機(jī)性。軟件中斷是由安排在程序中的指令引起的,何時(shí)執(zhí)行此指令是可事先知道的,硬件中斷是指令引起的,何時(shí)執(zhí)行此指令是可事先知道的,硬件中斷是由外設(shè)發(fā)中斷請(qǐng)求信號(hào)引起的,外設(shè)何時(shí)發(fā)出請(qǐng)求是完全隨由外設(shè)發(fā)中斷請(qǐng)求信號(hào)引起的,外設(shè)何時(shí)發(fā)出請(qǐng)求是完全隨機(jī)的,無法預(yù)測(cè)。機(jī)的,無法預(yù)測(cè)。296.3 可

37、編程中斷控制器可編程中斷控制器8259A 可編程中斷控制器可編程中斷控制器8259A可用于管理可用于管理8級(jí)優(yōu)先權(quán)中斷,將級(jí)優(yōu)先權(quán)中斷,將9片片8259A級(jí)聯(lián)可構(gòu)成最多可達(dá)級(jí)聯(lián)可構(gòu)成最多可達(dá)64級(jí)優(yōu)先權(quán)的中斷管理系統(tǒng)。級(jí)優(yōu)先權(quán)的中斷管理系統(tǒng)。8259A具有多種工作方式,自動(dòng)提供中斷服務(wù)程序入口地址具有多種工作方式,自動(dòng)提供中斷服務(wù)程序入口地址。6.3.1 8259A的外部引腳和內(nèi)部結(jié)構(gòu)的外部引腳和內(nèi)部結(jié)構(gòu)18259A的外部引腳信號(hào)的外部引腳信號(hào) 301 282 273 264 255 246 237 228 219 2010 1911 1812 1713 1614 15D7D6D5D4D3D2

38、D1D0CAS0CAS1GND3128259A的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)8259A的內(nèi)部結(jié)構(gòu)如圖的內(nèi)部結(jié)構(gòu)如圖6-11所示。所示。8259A由以下幾部分組成由以下幾部分組成:(1)數(shù)據(jù)總線緩沖器。)數(shù)據(jù)總線緩沖器。 (2)讀)讀/寫控制電路。寫控制電路。 (3)級(jí)聯(lián)緩沖器)級(jí)聯(lián)緩沖器/比較器。比較器。 (4)中斷請(qǐng)求寄存器)中斷請(qǐng)求寄存器IRR。 (5)中斷屏蔽寄存器)中斷屏蔽寄存器IMR。 (6)中斷服務(wù)寄存器)中斷服務(wù)寄存器ISR。 (7)優(yōu)先級(jí)判別器)優(yōu)先級(jí)判別器PR。 (8)控制電路。)控制電路。 32控制電路中斷服務(wù)寄存器(ISR)優(yōu)先級(jí)判別器(PR)中斷請(qǐng)求寄存器(IRR)中斷屏蔽寄存器

39、(IMR)IR0IR1IR7內(nèi)部總線3338259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)348259A內(nèi)部由兩大部分組成。上半部分包括中斷請(qǐng)求寄存器內(nèi)部由兩大部分組成。上半部分包括中斷請(qǐng)求寄存器IRR、優(yōu)先級(jí)別器、優(yōu)先級(jí)別器PR和中斷服務(wù)寄存器和中斷服務(wù)寄存器ISR,它們構(gòu)成,它們構(gòu)成8259A的中斷處理部分,稱為處理部件。這部分的功能是接收和處的中斷處理部分,稱為處理部件。這部分的功能是接收和處理從理從IR1IR0引腳進(jìn)入的外部中斷,其工作過程體現(xiàn)了引腳進(jìn)入的外部中斷,其工作過程體現(xiàn)了8259A本身的工作原理。即接收中斷請(qǐng)求,進(jìn)行中斷判優(yōu),記本身的工作原理。即接收中斷請(qǐng)求,進(jìn)行中斷判優(yōu),記錄當(dāng)前正在處理的中

40、斷優(yōu)先級(jí),實(shí)現(xiàn)中斷嵌套,向錄當(dāng)前正在處理的中斷優(yōu)先級(jí),實(shí)現(xiàn)中斷嵌套,向CPU發(fā)出發(fā)出中斷申請(qǐng),當(dāng)中斷申請(qǐng),當(dāng)CPU響應(yīng)中斷時(shí),接收響應(yīng)中斷時(shí),接收CPU的兩個(gè)連續(xù)中斷響的兩個(gè)連續(xù)中斷響應(yīng)信號(hào),將控制轉(zhuǎn)移到中斷服務(wù)程序中去。應(yīng)信號(hào),將控制轉(zhuǎn)移到中斷服務(wù)程序中去。8259A的下半部有的下半部有7個(gè)個(gè)8位寄存器,是位寄存器,是8259A的控制部分,它們的控制部分,它們都是可編程、用指令對(duì)其內(nèi)容進(jìn)行設(shè)置的。都是可編程、用指令對(duì)其內(nèi)容進(jìn)行設(shè)置的。7個(gè)寄存器分為兩個(gè)寄存器分為兩組。組。ICW1ICW4為一組,稱為初始化命令寄存器,用來接為一組,稱為初始化命令寄存器,用來接收收CPU向向8259A發(fā)出的初始

41、化命令以決定發(fā)出的初始化命令以決定8259A的工作方式。的工作方式。初始化命令一般在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)由初始化程序發(fā)出設(shè)置初始化命令一般在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)由初始化程序發(fā)出設(shè)置,一旦設(shè)定,在系統(tǒng)工作過程中就不再改變。,一旦設(shè)定,在系統(tǒng)工作過程中就不再改變。OCW1OCW3為一組,稱為操作命令寄存器,用來存放為一組,稱為操作命令寄存器,用來存放CPU向向8259A發(fā)出的操作命令,操作命令由應(yīng)用程序設(shè)置,用以在工作過發(fā)出的操作命令,操作命令由應(yīng)用程序設(shè)置,用以在工作過程中對(duì)程中對(duì)8259A進(jìn)行動(dòng)態(tài)控制。操作命令可以多次被設(shè)置。進(jìn)行動(dòng)態(tài)控制。操作命令可以多次被設(shè)置。 356.3.2 8259A的工作方式

42、的工作方式1設(shè)置中斷優(yōu)先級(jí)的方式設(shè)置中斷優(yōu)先級(jí)的方式8259A對(duì)中斷優(yōu)先級(jí)的設(shè)置方式有全嵌套方式、特殊全嵌套對(duì)中斷優(yōu)先級(jí)的設(shè)置方式有全嵌套方式、特殊全嵌套方式、優(yōu)先級(jí)自動(dòng)循環(huán)方式和優(yōu)先級(jí)特殊循環(huán)方式方式、優(yōu)先級(jí)自動(dòng)循環(huán)方式和優(yōu)先級(jí)特殊循環(huán)方式4種。種。(1)全嵌套方式。)全嵌套方式。 (2)特殊全嵌套方式。)特殊全嵌套方式。 (3)優(yōu)先級(jí)自動(dòng)循環(huán)方式。)優(yōu)先級(jí)自動(dòng)循環(huán)方式。 (4)優(yōu)先級(jí)特殊循環(huán)方式。)優(yōu)先級(jí)特殊循環(huán)方式。 362結(jié)束中斷方式結(jié)束中斷方式 8259A的中斷結(jié)束方式分為兩類:自動(dòng)結(jié)束方式和非自的中斷結(jié)束方式分為兩類:自動(dòng)結(jié)束方式和非自動(dòng)結(jié)束方式。非自動(dòng)結(jié)束方式又分為兩種:一種叫普

43、通動(dòng)結(jié)束方式。非自動(dòng)結(jié)束方式又分為兩種:一種叫普通的中斷結(jié)束方式,另一種叫特殊的中斷結(jié)束方式。的中斷結(jié)束方式,另一種叫特殊的中斷結(jié)束方式。 (1)中斷自動(dòng)結(jié)束方式。)中斷自動(dòng)結(jié)束方式。 (2)一般的中斷結(jié)束方式(即一般)一般的中斷結(jié)束方式(即一般EOI方式)。方式)。 (3)特殊的中斷結(jié)束方式。)特殊的中斷結(jié)束方式。 373屏蔽中斷源的方式屏蔽中斷源的方式將將IF清零,可以禁止所有的可屏蔽中斷進(jìn)入清零,可以禁止所有的可屏蔽中斷進(jìn)入CPU,即屏蔽,即屏蔽掉所有的中斷源。但如果要屏蔽某個(gè)或某幾個(gè)中斷源,則掉所有的中斷源。但如果要屏蔽某個(gè)或某幾個(gè)中斷源,則要用要用8259A的中斷優(yōu)先級(jí)管理的屏蔽方式

44、來實(shí)現(xiàn)。的中斷優(yōu)先級(jí)管理的屏蔽方式來實(shí)現(xiàn)。8259A對(duì)中斷源的屏蔽方式有以下兩種:對(duì)中斷源的屏蔽方式有以下兩種:(1)普通屏蔽方式。)普通屏蔽方式。 (2)特殊屏蔽方式。)特殊屏蔽方式。 48259A與系統(tǒng)總線的連接方式與系統(tǒng)總線的連接方式8259A與系統(tǒng)總線的連接有緩沖和非緩沖兩種方式。與系統(tǒng)總線的連接有緩沖和非緩沖兩種方式。(1)緩沖方式。)緩沖方式。 (2)非緩沖方式。)非緩沖方式。 385引入中斷請(qǐng)求方式引入中斷請(qǐng)求方式中斷請(qǐng)求的引入方式也叫中斷觸發(fā)方式。外部設(shè)備可以采中斷請(qǐng)求的引入方式也叫中斷觸發(fā)方式。外部設(shè)備可以采用三種觸發(fā)方式向用三種觸發(fā)方式向8259A提出中斷請(qǐng)求:電平觸發(fā)方式

45、、邊提出中斷請(qǐng)求:電平觸發(fā)方式、邊沿觸發(fā)方式和中斷查詢方式。沿觸發(fā)方式和中斷查詢方式。(1)邊沿觸發(fā)方式。)邊沿觸發(fā)方式。 (2)電平觸發(fā)方式。)電平觸發(fā)方式。 (3)中斷查詢方式。)中斷查詢方式。 要實(shí)現(xiàn)查詢功能,要實(shí)現(xiàn)查詢功能,CPU執(zhí)行的查詢軟件中必須有查詢命令執(zhí)行的查詢軟件中必須有查詢命令,查詢命令是,查詢命令是CPU執(zhí)行的查詢軟件中向執(zhí)行的查詢軟件中向8259A發(fā)查詢命令發(fā)查詢命令OCW來完成的,其過程是:系統(tǒng)先關(guān)中斷,然后來完成的,其過程是:系統(tǒng)先關(guān)中斷,然后CPU用用OUT指令向指令向8259A的偶地址端口發(fā)查詢命令字的偶地址端口發(fā)查詢命令字OCW3,如果,如果在此之前某在此之前

46、某IR有中斷請(qǐng)求,則有中斷請(qǐng)求,則8259A將將ISR寄存器中的對(duì)應(yīng)寄存器中的對(duì)應(yīng)位置位置“1”,且立即組成查詢字。,且立即組成查詢字。 396.3.3 8259A的初始化命令字和操作命令字的初始化命令字和操作命令字8259A的各種工作方式都要通過軟件來設(shè)置,工作狀態(tài)的改的各種工作方式都要通過軟件來設(shè)置,工作狀態(tài)的改變動(dòng)態(tài)也需要通過軟件來實(shí)現(xiàn),也就是對(duì)變動(dòng)態(tài)也需要通過軟件來實(shí)現(xiàn),也就是對(duì)8259A的編程。的編程。 18259A的初始化命令的初始化命令初始化命令字初始化命令字ICW1ICW4用來設(shè)定用來設(shè)定8259A的初始化狀態(tài),的初始化狀態(tài),在初始化程序中向在初始化程序中向8259A發(fā)出,而且

47、整個(gè)工作過程中保持不發(fā)出,而且整個(gè)工作過程中保持不變。變。(1)ICW1:芯片控制初始化命令。:芯片控制初始化命令。ICW1應(yīng)寫入偶地址端應(yīng)寫入偶地址端口,即口,即A0為為0,其格式如圖,其格式如圖6-13所示。所示。 01LTIMADISNGLIC4A0D4D3D2D1D0D5D6D740(2)ICW2:設(shè)置中斷類型碼的初始化命令。:設(shè)置中斷類型碼的初始化命令。 1IR4IR3IR2IR1IR0IR5IR6IR7A0D4D3D2D1D0D5D6D7(3)ICW3:標(biāo)識(shí)主片:標(biāo)識(shí)主片/從片初始化命令字。從片初始化命令字。 100ID2ID1ID0000A0D4D3D2D1D0D5D6D741(

48、4)ICW4:方式控制初始化命令字。:方式控制初始化命令字。28259A的初始化流程的初始化流程在在8259A進(jìn)入正常運(yùn)行之前,必須將系統(tǒng)中的每一片進(jìn)入正常運(yùn)行之前,必須將系統(tǒng)中的每一片8259A進(jìn)行初始化。初始化就是將上述的初始化命令進(jìn)行初始化。初始化就是將上述的初始化命令字按固定的次序?qū)懭胱职垂潭ǖ拇涡驅(qū)懭?259A的指定端口。的指定端口。8259A的初始化流程如圖的初始化流程如圖6-17所示。所示。42用ICW4設(shè)置是否級(jí)聯(lián)中斷為請(qǐng)示信號(hào)格式后面是否用ICW4用ICW2設(shè)置類型碼是否為級(jí)聯(lián)方式?本片為主片嗎?設(shè)置ICW2,各位對(duì)應(yīng)IR0IR7的連接情況設(shè)置ICW2,高5位為0,低3位為標(biāo)

49、識(shí)位需要用ICW4?用ICW4設(shè)置是否為特殊全嵌套方式是否為緩沖方式是否為自動(dòng)結(jié)束中斷方式是否為8086/8088系統(tǒng)結(jié)束是是否否否是43例如某例如某8086/8088微機(jī)系統(tǒng)內(nèi)有一片微機(jī)系統(tǒng)內(nèi)有一片8259A,中斷請(qǐng)求信號(hào),中斷請(qǐng)求信號(hào)采用邊沿觸發(fā)方式,中斷類型碼基值為采用邊沿觸發(fā)方式,中斷類型碼基值為18H,中斷優(yōu)先級(jí),中斷優(yōu)先級(jí)管理采用全嵌套方式,即非特殊全嵌套,中斷結(jié)束方式采管理采用全嵌套方式,即非特殊全嵌套,中斷結(jié)束方式采用普通用普通EOI方式,系統(tǒng)中采用數(shù)據(jù)緩沖器,方式,系統(tǒng)中采用數(shù)據(jù)緩沖器,8259A的端口的端口地址為地址為3F80H和和3F81H,對(duì)該,對(duì)該8259A進(jìn)行初始化

50、,程序如進(jìn)行初始化,程序如下:下:MOV DX,3F80H ;設(shè)置設(shè)置8259A的偶地址端口的偶地址端口MOV AL,13H ;設(shè)置設(shè)置ICW1初始化命令字初始化命令字OUTDX,AL ;將將ICW1輸出到偶地址端口(輸出到偶地址端口(ICW1寄存器)寄存器)MOV DX,3F81H ;設(shè)置設(shè)置8259A的奇地址端口的奇地址端口MOV AL,18H ;ICW2,中斷類型號(hào)基值,中斷類型號(hào)基值OUTDX,AL ;將將ICW2送入奇地址端口送入奇地址端口MOV AL,0DH ;ICW4OUTDX,AL ;將將ICW4送入奇地址端口送入奇地址端口HLT4438259A的操作命令字的操作命令字8259

51、A有有3個(gè)操作命令:個(gè)操作命令:OCW1、OCW2、OCW3。操作命令。操作命令字在應(yīng)用程序中設(shè)置,沒有固定的順序,而且可以根據(jù)需要字在應(yīng)用程序中設(shè)置,沒有固定的順序,而且可以根據(jù)需要多次寫入,但對(duì)各操作命令字的寫入口地址有嚴(yán)格的規(guī)定,多次寫入,但對(duì)各操作命令字的寫入口地址有嚴(yán)格的規(guī)定,OCW1必須寫入奇地址端口,必須寫入奇地址端口,OCW2和和OCW3必須寫入偶地必須寫入偶地址端口。址端口。(1)OCW1:中斷屏蔽操作命令字。:中斷屏蔽操作命令字。OCW1用來實(shí)現(xiàn)對(duì)中用來實(shí)現(xiàn)對(duì)中斷源的屏蔽功能,其內(nèi)容直接置入斷源的屏蔽功能,其內(nèi)容直接置入IMR屏蔽寄存器。屏蔽寄存器。 1M4M3M2M1M0

52、M5M6M7A0D4D3D2D1D0D5D6D745(2)OCW2:優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式操作命令:優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式操作命令字。字。OCW2有兩個(gè)功能:設(shè)置中斷結(jié)束方式和設(shè)置優(yōu)先級(jí)有兩個(gè)功能:設(shè)置中斷結(jié)束方式和設(shè)置優(yōu)先級(jí)循環(huán)方式,要求寫入偶地址端口,其格式如圖循環(huán)方式,要求寫入偶地址端口,其格式如圖6-19所示。所示。100L2L1L0EOISLRA0D4D3D2D1D0D5D6D746(3)OCW3:特殊屏蔽方式和中斷查詢方式操作命令字:特殊屏蔽方式和中斷查詢方式操作命令字。OCW3有三個(gè)功能:設(shè)置和撤消特殊方式、設(shè)置中斷有三個(gè)功能:設(shè)置和撤消特殊方式、設(shè)置中斷查詢方式、設(shè)

53、置對(duì)查詢方式、設(shè)置對(duì)8259A內(nèi)部寄存器的讀出命令。內(nèi)部寄存器的讀出命令。OCW3的格式如圖的格式如圖6-20所示。所示。001PRRRISSMMESMM0A0D4D3D2D1D0D5D6D7OCW3的中斷查詢功能為:的中斷查詢功能為:P位為中斷查詢方式位,當(dāng)位為中斷查詢方式位,當(dāng)P=1時(shí),使時(shí),使8259A處于中斷查詢方式,當(dāng)處于中斷查詢方式,當(dāng)CPU向向8259A偶地址端偶地址端口寫入一個(gè)查詢命令后,再執(zhí)行一條輸入指令,口寫入一個(gè)查詢命令后,再執(zhí)行一條輸入指令,CPU就可就可讀入讀入8259A提供的查詢字,查詢字表明了當(dāng)前有無中斷請(qǐng)求提供的查詢字,查詢字表明了當(dāng)前有無中斷請(qǐng)求以及中斷請(qǐng)求中優(yōu)先級(jí)最高的是哪一個(gè)。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論