中斷與中斷控制_第1頁
中斷與中斷控制_第2頁
中斷與中斷控制_第3頁
中斷與中斷控制_第4頁
中斷與中斷控制_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、8.1 中斷的基本概念中斷的基本概念8.2 可編程中斷控制器可編程中斷控制器8259 8.3 中斷服務(wù)程序的編程中斷服務(wù)程序的編程8.4 保護(hù)模式的中斷處理保護(hù)模式的中斷處理第第8章章 中斷與中斷控制中斷與中斷控制8.1 中斷的基本概念中斷的基本概念所謂中斷(所謂中斷(Interrupt),是指計算機(jī)在運(yùn)行過程中,當(dāng)有某些緊急事件或外設(shè)請求發(fā)生時,迫使CPU暫時中斷現(xiàn)行程序的運(yùn)行而去處理緊急情況或外設(shè)請求,即去執(zhí)行其對應(yīng)的中斷服務(wù)程序;等到事件處理完畢,又返回原程序的中斷點(diǎn)處,繼續(xù)執(zhí)行被中斷的程序。這個過程和機(jī)制稱為中斷。 CPU與與I/O設(shè)備并行工作設(shè)備并行工作實(shí)現(xiàn)實(shí)時處理實(shí)現(xiàn)實(shí)時處理多道程

2、序或多重任務(wù)的運(yùn)行多道程序或多重任務(wù)的運(yùn)行故障處理故障處理中斷的中斷的用途用途 8.1 中斷的基本概念中斷的基本概念中斷最初是作為處理器與外部設(shè)備交換信息的一中斷最初是作為處理器與外部設(shè)備交換信息的一種控制方式提出的。由此,最初的中斷全部是對種控制方式提出的。由此,最初的中斷全部是對外部設(shè)備而言的,稱為外部設(shè)備而言的,稱為外部中斷外部中斷或或硬件中斷硬件中斷。隨著計算機(jī)技術(shù)的發(fā)展,中斷的范圍也隨之?dāng)U大隨著計算機(jī)技術(shù)的發(fā)展,中斷的范圍也隨之?dāng)U大,出現(xiàn)了內(nèi)部,出現(xiàn)了內(nèi)部軟件中斷軟件中斷的概念,它是為解決機(jī)器的概念,它是為解決機(jī)器內(nèi)部運(yùn)行時出現(xiàn)的異常以及為編程方便而提出的內(nèi)部運(yùn)行時出現(xiàn)的異常以及為編

3、程方便而提出的。外部中斷或硬件中斷通常稱為外部中斷或硬件中斷通常稱為中斷中斷(Interrupt),軟件中斷或異常中斷通常稱為,軟件中斷或異常中斷通常稱為異常異常(Exception)8.1 中斷的基本概念中斷的基本概念中斷與異常的區(qū)別中斷與異常的區(qū)別:F中斷是異步事件,可能隨時發(fā)生,與處理器中斷是異步事件,可能隨時發(fā)生,與處理器正在執(zhí)行的內(nèi)容無關(guān)。中斷主要由正在執(zhí)行的內(nèi)容無關(guān)。中斷主要由I/O設(shè)備產(chǎn)設(shè)備產(chǎn)生,可以被啟用或禁止。生,可以被啟用或禁止。F異常是同步事件,它是某一特定指令執(zhí)行的異常是同步事件,它是某一特定指令執(zhí)行的結(jié)果。在相同條件下,異常可以重現(xiàn)。例如,結(jié)果。在相同條件下,異常可以

4、重現(xiàn)。例如,內(nèi)存訪問錯誤、被零除等是典型的異常。內(nèi)存訪問錯誤、被零除等是典型的異常。F系統(tǒng)服務(wù)調(diào)用通常視作異常系統(tǒng)服務(wù)調(diào)用通常視作異常。8.1 中斷的基本概念中斷的基本概念不論哪種中斷都遵循同樣的中斷處理過程不論哪種中斷都遵循同樣的中斷處理過程中斷源中斷源中斷中斷請求請求 當(dāng)當(dāng) 前前 程程 序序中斷中斷服務(wù)服務(wù)程序程序程序斷點(diǎn)程序斷點(diǎn)中斷返回中斷返回中斷響應(yīng)中斷響應(yīng)處理器暫停執(zhí)行當(dāng)前程序,轉(zhuǎn)而執(zhí)行中斷服務(wù)程序,處理完畢后處理器暫停執(zhí)行當(dāng)前程序,轉(zhuǎn)而執(zhí)行中斷服務(wù)程序,處理完畢后再返回到斷點(diǎn)處繼續(xù)執(zhí)行原來的程序再返回到斷點(diǎn)處繼續(xù)執(zhí)行原來的程序F中斷的類型中斷的類型PC系列微機(jī)最多可以支持系列微機(jī)最

5、多可以支持256種中斷,它們被分為四種類型:種中斷,它們被分為四種類型:異常異常軟件中斷軟件中斷外部可屏蔽中斷外部可屏蔽中斷外部非屏蔽中斷外部非屏蔽中斷每個中斷和異常都指定了一個類型號,也稱為中斷號。對應(yīng)每每個中斷和異常都指定了一個類型號,也稱為中斷號。對應(yīng)每一種中斷應(yīng)當(dāng)有一個中斷服務(wù)程序(一種中斷應(yīng)當(dāng)有一個中斷服務(wù)程序(Interrupt Service ProgramISP)中斷類型號通過一個地址指針表與中斷服務(wù)程序的入口地址相中斷類型號通過一個地址指針表與中斷服務(wù)程序的入口地址相聯(lián),在實(shí)模式下,該表稱為中斷向量表,在保護(hù)模式下,該表聯(lián),在實(shí)模式下,該表稱為中斷向量表,在保護(hù)模式下,該表稱

6、為中斷描述符表。稱為中斷描述符表。1. 異常異常為處理器執(zhí)行某些操作而引起的中斷,包括除法錯誤異常、調(diào)為處理器執(zhí)行某些操作而引起的中斷,包括除法錯誤異常、調(diào)試異常、斷點(diǎn)中斷等試異常、斷點(diǎn)中斷等異常的例子:異常的例子:0型型除法錯誤異常除法錯誤異常1型型調(diào)試異常調(diào)試異常.F中斷的類型中斷的類型2.軟件中斷軟件中斷執(zhí)行執(zhí)行有定義的有定義的INT n指令而引發(fā)的中斷,稱為軟件中斷指令而引發(fā)的中斷,稱為軟件中斷有定義的有定義的 并非所有的中斷號都有對應(yīng)的中斷服務(wù)程序并非所有的中斷號都有對應(yīng)的中斷服務(wù)程序軟件中斷使用軟件中斷使用05H、10H0FFH中的若干個中斷號中的若干個中斷號軟件中斷進(jìn)一步分為軟件

7、中斷進(jìn)一步分為BIOS中斷和中斷和DOS中斷中斷F中斷的類型中斷的類型3.外部可屏蔽中斷外部可屏蔽中斷外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方法,通過處理器的法,通過處理器的INTR引腳產(chǎn)生引腳產(chǎn)生外部可屏蔽中斷受處理器內(nèi)部的中斷允許標(biāo)志位外部可屏蔽中斷受處理器內(nèi)部的中斷允許標(biāo)志位IF的控制的控制處理器以電平觸發(fā)方式接受處理器以電平觸發(fā)方式接受INTR請求,當(dāng)每條指令結(jié)束時,請求,當(dāng)每條指令結(jié)束時,若若INTR為高電平且為高電平且IF=1,則,則CPU響應(yīng)相應(yīng)響應(yīng)相應(yīng)I/O接口的中斷請接口的中斷請求。求。處理器只有一個處理器只

8、有一個INTR引腳可以接受外部可屏蔽中斷請求,為引腳可以接受外部可屏蔽中斷請求,為了管理眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器了管理眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器8259。PC系列機(jī)通過兩片系列機(jī)通過兩片8259級連可以響應(yīng)級連可以響應(yīng)15個外部中斷源個外部中斷源F中斷的類型中斷的類型4.外部非屏蔽中斷外部非屏蔽中斷為外部緊急請求提供服務(wù)的中斷,通過處理器的為外部緊急請求提供服務(wù)的中斷,通過處理器的NMI引腳產(chǎn)生引腳產(chǎn)生NMI輸入是上升沿觸發(fā)的,輸入是上升沿觸發(fā)的,只要只要NMI輸入端上出現(xiàn)由輸入端上出現(xiàn)由0到到1的跳的跳變,一個中斷服務(wù)請求就被鎖存在變,一個中斷服

9、務(wù)請求就被鎖存在Pentium中,與中,與IF標(biāo)志的狀標(biāo)志的狀態(tài)無關(guān)態(tài)無關(guān)NMI有一個專用的類型號有一個專用的類型號02H使用非屏蔽中斷的典型例子是電源故障中斷使用非屏蔽中斷的典型例子是電源故障中斷F中斷的類型中斷的類型F中斷的優(yōu)先級與中斷嵌套中斷的優(yōu)先級與中斷嵌套通常一個系統(tǒng)有多個中斷源,而通常一個系統(tǒng)有多個中斷源,而CPU同一時刻只能響應(yīng)一個中同一時刻只能響應(yīng)一個中斷源的請求,那么當(dāng)多個中斷源同時請求中斷服務(wù)時,應(yīng)該先斷源的請求,那么當(dāng)多個中斷源同時請求中斷服務(wù)時,應(yīng)該先響應(yīng)哪一個,有一個次序安排的問題。按中斷源的輕重緩急程響應(yīng)哪一個,有一個次序安排的問題。按中斷源的輕重緩急程度確定的優(yōu)先

10、級別,稱為度確定的優(yōu)先級別,稱為優(yōu)先級優(yōu)先級。內(nèi)部中斷和異常內(nèi)部中斷和異常軟件中斷軟件中斷外部非屏蔽中斷外部非屏蔽中斷外部可屏蔽中斷外部可屏蔽中斷優(yōu)先級遞增優(yōu)先級遞增F中斷的優(yōu)先級與中斷嵌套中斷的優(yōu)先級與中斷嵌套當(dāng)當(dāng)CPU正在響應(yīng)某一中斷源的請求,執(zhí)行為其服務(wù)的中斷服務(wù)正在響應(yīng)某一中斷源的請求,執(zhí)行為其服務(wù)的中斷服務(wù)程序時,如果有優(yōu)先級更高的中斷源發(fā)出請求,程序時,如果有優(yōu)先級更高的中斷源發(fā)出請求,CPU將中止正將中止正在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入為新的中斷源服務(wù),等新的中斷在執(zhí)行的中斷服務(wù)程序而轉(zhuǎn)入為新的中斷源服務(wù),等新的中斷服務(wù)程序執(zhí)行完后,再返回到被中止的中斷服務(wù)程序,這一過服務(wù)程序執(zhí)行完

11、后,再返回到被中止的中斷服務(wù)程序,這一過程稱為中斷嵌套。程稱為中斷嵌套。中斷嵌套可以有多級,具體級數(shù)原則上不限,只取決于堆棧深中斷嵌套可以有多級,具體級數(shù)原則上不限,只取決于堆棧深度度F中斷的優(yōu)先級與中斷嵌套中斷的優(yōu)先級與中斷嵌套1#中斷請求中斷請求響應(yīng)響應(yīng)返回返回1#中斷中斷服務(wù)程序服務(wù)程序2#中斷請求中斷請求響應(yīng)響應(yīng)返回返回2#中斷中斷服務(wù)程序服務(wù)程序3#中斷請求中斷請求響應(yīng)響應(yīng)返回返回3#中斷中斷服務(wù)程序服務(wù)程序原主程序原主程序中斷優(yōu)先級中斷優(yōu)先級3#2#1#F中斷向量表中斷向量表中斷向量表包含中斷向量表包含256個中斷向量。每個中斷向量占用兩個字(個中斷向量。每個中斷向量占用兩個字(4

12、個字節(jié)),高地址字為中斷服務(wù)程序所在代碼段的段基址,低個字節(jié)),高地址字為中斷服務(wù)程序所在代碼段的段基址,低地址字為代碼段中中斷服務(wù)程序第一條指令的偏移量地址字為代碼段中中斷服務(wù)程序第一條指令的偏移量。中斷向量表存放在內(nèi)存最低端的中斷向量表存放在內(nèi)存最低端的1K單元之中,物理地址單元之中,物理地址00000H003FFH00000H00004H003FCH0型中斷向量型中斷向量1型中斷向量型中斷向量255型中斷向型中斷向量量n型中斷向量型中斷向量4*n4n4n+2n型型ISP首指令的有效地址首指令的有效地址n型型ISP代碼段的段基址代碼段的段基址F中斷指令中斷指令STI開中斷指令開中斷指令將標(biāo)

13、志寄存器中的中斷標(biāo)志位將標(biāo)志寄存器中的中斷標(biāo)志位IF置置1,允許允許CPU響應(yīng)來自響應(yīng)來自INTR引腳的中斷請求引腳的中斷請求CLI關(guān)中斷指令關(guān)中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位將標(biāo)志寄存器中的中斷標(biāo)志位IF清清0,使,使CPU不響應(yīng)來自不響應(yīng)來自INTR引腳的中斷請求引腳的中斷請求F中斷指令中斷指令I(lǐng)NT n軟件中斷指令軟件中斷指令n為中斷號。調(diào)用為中斷號。調(diào)用n號中斷服務(wù)程序號中斷服務(wù)程序?qū)?biāo)志寄存器壓棧將標(biāo)志寄存器壓棧將將TF置置0,禁止單步操作,將,禁止單步操作,將IF置置0,使,使CPU處于關(guān)中斷狀態(tài)處于關(guān)中斷狀態(tài)斷點(diǎn)的斷點(diǎn)的CS、IP壓棧壓棧從中斷向量表取從中斷向量表取n號中斷向量

14、號中斷向量 IP、CS轉(zhuǎn)向轉(zhuǎn)向n號中斷服務(wù)程序號中斷服務(wù)程序F中斷指令中斷指令I(lǐng)RET中斷返回指令中斷返回指令中斷服務(wù)程序的出口指令,從棧頂彈出中斷服務(wù)程序的出口指令,從棧頂彈出6個字節(jié)依次寫入個字節(jié)依次寫入IP、CS和標(biāo)志寄存器和標(biāo)志寄存器在執(zhí)行在執(zhí)行IRET之前必須保證棧頂是斷點(diǎn)地址,否則執(zhí)行之前必須保證棧頂是斷點(diǎn)地址,否則執(zhí)行IRET指令指令將導(dǎo)致系統(tǒng)癱瘓將導(dǎo)致系統(tǒng)癱瘓8.2 可編程中斷控制器可編程中斷控制器8259A8259A是一種可編程中斷控制器是一種可編程中斷控制器,有如下功能:有如下功能:一片一片Intel 8259可管理可管理8個中斷請求,并把當(dāng)前優(yōu)先個中斷請求,并把當(dāng)前優(yōu)先級

15、最高的中斷請求送到級最高的中斷請求送到CPU的的INTR端。端。當(dāng)當(dāng)CPU響應(yīng)中斷時,為響應(yīng)中斷時,為CPU提供中斷類型碼。提供中斷類型碼。8個外部中斷的優(yōu)先級排列方式,可以通過對個外部中斷的優(yōu)先級排列方式,可以通過對8259編程進(jìn)行指定。編程進(jìn)行指定??梢酝ㄟ^編程屏蔽某些中斷請求可以通過編程屏蔽某些中斷請求允許允許9片片8259級聯(lián),構(gòu)成級聯(lián),構(gòu)成64級中斷系統(tǒng)。級中斷系統(tǒng)。在在PC/AT系列微機(jī)中,使用兩片系列微機(jī)中,使用兩片8259級聯(lián),構(gòu)成級聯(lián),構(gòu)成15級中斷級中斷F8259A的引腳信號的引腳信號28腳雙列直插式封裝腳雙列直插式封裝D7D0:數(shù)據(jù)線。用于與:數(shù)據(jù)線。用于與CPU之間傳送

16、命令、狀之間傳送命令、狀態(tài)、中斷類型碼。態(tài)、中斷類型碼。 :讀出信號。通知:讀出信號。通知8259把某個內(nèi)部寄存器的值把某個內(nèi)部寄存器的值送數(shù)據(jù)線送數(shù)據(jù)線D7D0。 :寫入信號。通知:寫入信號。通知8259把數(shù)據(jù)線把數(shù)據(jù)線D7D0上的值上的值寫入內(nèi)部某個寄存器。寫入內(nèi)部某個寄存器。IR7IR0:8級中斷請求輸入級中斷請求輸入。F8259A的引腳信號的引腳信號A0:選擇內(nèi)部寄存器的端口地址。:選擇內(nèi)部寄存器的端口地址。在標(biāo)準(zhǔn)在標(biāo)準(zhǔn)AT機(jī)中,使用兩片機(jī)中,使用兩片8259構(gòu)成主從式中斷系構(gòu)成主從式中斷系統(tǒng),統(tǒng),主主8259的端口地址:的端口地址: 20H,21H從從8259的端口地址:的端口地址:

17、 A0H,A1HINT: 把把IR7IR0上的最高優(yōu)先級請求傳送到上的最高優(yōu)先級請求傳送到CPU的的INTR引腳引腳 :接收:接收CPU的中斷響應(yīng)信號。的中斷響應(yīng)信號。CPU發(fā)出的中斷響發(fā)出的中斷響應(yīng)信號為兩個負(fù)脈沖。第一個負(fù)脈沖作為中斷應(yīng)答信應(yīng)信號為兩個負(fù)脈沖。第一個負(fù)脈沖作為中斷應(yīng)答信號,第二個負(fù)脈沖到來時,號,第二個負(fù)脈沖到來時,8259從數(shù)據(jù)線從數(shù)據(jù)線D7D0上發(fā)上發(fā)出中斷類型碼。出中斷類型碼。F8259A的引腳信號的引腳信號 :片選輸入端。:片選輸入端。CAS2CAS0:主:主8259與從與從8259間的級聯(lián)線。主間的級聯(lián)線。主8259的的CAS2CAS0為輸出,從為輸出,從8259

18、的的CAS2CAS0為輸入。為輸入。 :雙功能引腳:雙功能引腳8259數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用非緩沖數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用非緩沖方式(即直接相連,無數(shù)據(jù)總線驅(qū)動器)時,作為方式(即直接相連,無數(shù)據(jù)總線驅(qū)動器)時,作為輸入。主輸入。主8259接高電平,從接高電平,從8259接低電平。接低電平。8259數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用緩沖方數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用緩沖方式(即有數(shù)據(jù)總線驅(qū)動器)時,作為輸出,用于啟式(即有數(shù)據(jù)總線驅(qū)動器)時,作為輸出,用于啟動數(shù)據(jù)總線驅(qū)動器。動數(shù)據(jù)總線驅(qū)動器。F8259A的引腳信號的引腳信號F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)8259的

19、編程結(jié)構(gòu)由三組共的編程結(jié)構(gòu)由三組共10個寄存器構(gòu)成,每個寄個寄存器構(gòu)成,每個寄存器均為存器均為8位。位。F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第一組:第一組:IRR、PR、ISRIRR:中斷請求寄存器(:中斷請求寄存器(Interrupt Request Register)該寄存器的該寄存器的8位分別存放位分別存放IR7IR0輸入線上的中斷請輸入線上的中斷請求。當(dāng)某輸入線有請求時,求。當(dāng)某輸入線有請求時,IRR對應(yīng)位置對應(yīng)位置1。ISR:當(dāng)前中斷服務(wù)寄存器(:當(dāng)前中斷服務(wù)寄存器(In Service Register)該寄存器用于存放正在被服務(wù)的所有中斷級,包括尚該寄存器用于存放正在被服務(wù)的所有中斷

20、級,包括尚未服務(wù)完而中途被別的中斷打端了的中斷級。未服務(wù)完而中途被別的中斷打端了的中斷級。PR:優(yōu)先級裁決器(:優(yōu)先級裁決器(Priority Resolver)PR將將IR輸入線上中斷請求的優(yōu)先級與輸入線上中斷請求的優(yōu)先級與ISR中的優(yōu)先級中的優(yōu)先級比較,若該中斷的優(yōu)先級高于比較,若該中斷的優(yōu)先級高于ISR中的最高優(yōu)先級,則中的最高優(yōu)先級,則PR就使就使INT信號變?yōu)楦唠娖剑言撝袛嗨徒o信號變?yōu)楦唠娖?,把該中斷送給CPU,同,同時,在時,在ISR相應(yīng)位置相應(yīng)位置1,IRR相應(yīng)位清相應(yīng)位清0。否則,。否則,PR不不為該中斷提出申請。為該中斷提出申請。F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二

21、組:ICW1、ICW2、ICW3、ICW4用來存放初始化命令字(用來存放初始化命令字(Initialization Command Word)。)。ICW一般在系統(tǒng)啟動時由程序設(shè)置,一旦設(shè)定,一般在系統(tǒng)啟動時由程序設(shè)置,一旦設(shè)定,在系統(tǒng)工作過程中就不再改變。在系統(tǒng)工作過程中就不再改變。ICW1ICW4必須按順序設(shè)定。必須按順序設(shè)定。ICW1寫入寫入8259偶地址中(偶地址中(A0=0,在,在PC系列機(jī)系列機(jī)中為中為20H/A0H),),ICW2ICW4寫入寫入8259奇地址中(奇地址中(A0=1,在,在PC系列機(jī)系列機(jī)中為中為21H/A1H)。)。F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二組

22、:ICW1、ICW2、ICW3、ICW4ICW1:芯片控制初始化命令字:芯片控制初始化命令字D4=1:作為:作為ICW1的標(biāo)志。的標(biāo)志。D0(IC4):):=1指出初始化程序中需設(shè)置指出初始化程序中需設(shè)置ICW4。D1(SNGL):):=1,系統(tǒng)中只有一片,系統(tǒng)中只有一片8259 =0,系統(tǒng)中有多片,系統(tǒng)中有多片8259D3(LTIM):):=1,電平觸發(fā),電平觸發(fā) =0,邊沿觸發(fā),邊沿觸發(fā)F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二組:ICW1、ICW2、ICW3、ICW4ICW2:指定中斷類型碼。:指定中斷類型碼。中斷類型碼高中斷類型碼高5位由位由ICW2指定,低指定,低3位由位由IR0I

23、R7決定決定例如例如,ICW2=08H,則,則IR0IR7請求對應(yīng)的中斷類型碼分別請求對應(yīng)的中斷類型碼分別為:為:08H、09H、0AH、0BH、0CH、0DH、0EH、FH。ICW2=70H,則,則IR0IR7請求對應(yīng)的中斷類型碼分別為:請求對應(yīng)的中斷類型碼分別為:70H、71H、72H、73H、74H、75H、76H、77H。F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二組:ICW1、ICW2、ICW3、ICW4ICW3:指定本:指定本8259與其他與其他8259的連接關(guān)系。僅當(dāng)?shù)倪B接關(guān)系。僅當(dāng)ICW1中的中的SNGL=0,系統(tǒng)中有多片,系統(tǒng)中有多片8259級聯(lián)時,才設(shè)置級聯(lián)時,才設(shè)置主主8

24、259的的ICW3:指出主:指出主8259的哪些引腳上聯(lián)有從的哪些引腳上聯(lián)有從8259ICW3=10010001B,則主,則主8259的的IR7、IR4、IR0上連有從上連有從8259。F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二組:ICW1、ICW2、ICW3、ICW4從從8259的的ICW3:ID2ID0的編碼值,指出該從的編碼值,指出該從8259的的INT聯(lián)至主聯(lián)至主8259的哪個引腳的哪個引腳如從如從8259聯(lián)至聯(lián)至IR5,則,則ID2ID0=101。在多片在多片8259級聯(lián)的系統(tǒng)中,主級聯(lián)的系統(tǒng)中,主8259的的CAS2CAS0與所有從與所有從8259的的CAS2CAS0聯(lián)在一起,當(dāng)

25、第一個聯(lián)在一起,當(dāng)?shù)谝粋€ 到來時,主到來時,主8259的的CAS2CAS0輸出從輸出從8259的編碼的編碼ID2ID0。從。從8259收到該編碼后,收到該編碼后,與其自身的與其自身的ID2ID0比較,如果相等,則在第二個比較,如果相等,則在第二個 到來時,到來時,該片從該片從8259發(fā)出中斷類型碼。發(fā)出中斷類型碼。ICW4:方式控制初始化命令字,指定:方式控制初始化命令字,指定8259的中斷結(jié)束的中斷結(jié)束方式、中斷嵌套方式、與數(shù)據(jù)總線的連接方式方式、中斷嵌套方式、與數(shù)據(jù)總線的連接方式F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第二組:第二組:ICW1、ICW2、ICW3、ICW4SFNM:=1,特殊的全嵌

26、套方式(,特殊的全嵌套方式(Specific Full Nested Mode););=0,全,全嵌套方式嵌套方式全嵌套方式全嵌套方式:中斷請求按優(yōu)先級:中斷請求按優(yōu)先級07處理,處理,0級優(yōu)先級最高,級優(yōu)先級最高,7級最級最低,只有更高級的中斷請求才能進(jìn)行嵌套,同級中斷不予響應(yīng)低,只有更高級的中斷請求才能進(jìn)行嵌套,同級中斷不予響應(yīng)BUF: =1,緩沖方式(,緩沖方式(Buffered););=0,非緩沖方式,非緩沖方式,M/S:主片:主片/從片(從片(Master/Slave)若若BUF=1,M/S=1為主片,為主片,M/S=0為從片;若為從片;若BUF=0,M/S不起作用不起作用AEOI:

27、 =1,中斷自動結(jié)束方式(,中斷自動結(jié)束方式(Automatic End of Interrupt););=0,非,非自動結(jié)束方式自動結(jié)束方式中斷自動結(jié)束方式中斷自動結(jié)束方式:當(dāng)?shù)冢寒?dāng)?shù)?個個 脈沖結(jié)束時,脈沖結(jié)束時,ISR中的相應(yīng)位清中的相應(yīng)位清0初始化命令字(初始化命令字(ICW1ICW4)ICW1A EQU 20H ;主片端口地址;主片端口地址ICW2A EQU ICW1A+1ICW3A EQU ICW2AICW4A EQU ICW2A.MOV AL,11H ;ICW1,邊沿觸發(fā),多片,需設(shè)置,邊沿觸發(fā),多片,需設(shè)置ICW4OUT ICW1A,ALNOP ;I/O端口延時端口延時MOV

28、AL,08H ;ICW2,中斷類型碼,中斷類型碼OUT ICW2A,ALNOPMOV AL,04H ;ICW3,IR2接從片接從片OUT ICW3A,ALNOPMOV AL,01H ;ICW4,非緩沖,全嵌套優(yōu)先級方式,非自動結(jié)束,非緩沖,全嵌套優(yōu)先級方式,非自動結(jié)束OUT ICW4A,ALNOPBIOS中主片的初始化中主片的初始化F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3用于存放操作命令字(用于存放操作命令字(Operation Command Word)。操)。操作命令字由應(yīng)用程序使用,以便對中斷處理過程作動態(tài)控作命令字由應(yīng)

29、用程序使用,以便對中斷處理過程作動態(tài)控制。在系統(tǒng)運(yùn)行過程中,操作命令字可以被多次設(shè)置。制。在系統(tǒng)運(yùn)行過程中,操作命令字可以被多次設(shè)置。OCW1OCW3的設(shè)置次序無要求。的設(shè)置次序無要求。OCW1為奇地址(為奇地址(21H/A1H)OCW2OCW3為偶地址(為偶地址(20H/A0H)。)。OCW1: 中斷屏蔽命令字中斷屏蔽命令字IMR,當(dāng)其中某位置,當(dāng)其中某位置1時,時,對應(yīng)的中斷請求被屏蔽對應(yīng)的中斷請求被屏蔽。例:例:使主使主8259的的IR5屏蔽,程序?yàn)椋浩帘危绦驗(yàn)椋篛CW1 EQU 21H ;主;主8259 OCW1的地址的地址IN AL,OCW1 ;讀出;讀出IMROR AL,0010

30、0000B ;屏蔽;屏蔽IR5OUT OCW1,ALF8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3OCW2:設(shè)置中斷優(yōu)先級循環(huán)方式和中斷結(jié)束方式設(shè)置中斷優(yōu)先級循環(huán)方式和中斷結(jié)束方式F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3R=1:優(yōu)先級循環(huán)方式;優(yōu)先級循環(huán)方式;=0非循環(huán)方式非循環(huán)方式SL=1:L2L0有效有效; =0, L2L0無效無效EOI=1: 中斷結(jié)束命令中斷結(jié)束命令如果如果ICW4ICW4的的AEOIAEOI位為位為0 0,則必須在中斷服務(wù)程序的,則必須在中斷服務(wù)程序的IRETIRET指令之前寫一條指令之前寫一條OCW2

31、OCW2命令字,向命令字,向82598259發(fā)中斷結(jié)束發(fā)中斷結(jié)束命令,命令, 82598259得到得到EOIEOI命令后將命令后將ISRISR中的相應(yīng)位清中的相應(yīng)位清0 0OCW2:F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3R SL EOI的不同組合:的不同組合:001常規(guī)常規(guī)EOI:把:把ISR中優(yōu)先級最高的置中優(yōu)先級最高的置1位清位清0011特殊特殊EOI:根據(jù):根據(jù)L2L0的編碼將的編碼將ISR中指定位清中指定位清0101常規(guī)常規(guī)EOI,優(yōu)先級循環(huán),優(yōu)先級循環(huán)100自動自動EOI,優(yōu)先級循環(huán),優(yōu)先級循環(huán)111特殊特殊EOI,優(yōu)先級循環(huán),優(yōu)先級循環(huán) OCW

32、3:多功能操作命令字:多功能操作命令字F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3設(shè)置和撤消特殊屏蔽方式:設(shè)置和撤消特殊屏蔽方式:ESMM=1,SMM=1:設(shè)置;:設(shè)置;ESMM=1,SMM=0:撤消:撤消特殊屏蔽方式:當(dāng)一個中斷被響應(yīng)時,僅屏蔽同級中斷特殊屏蔽方式:當(dāng)一個中斷被響應(yīng)時,僅屏蔽同級中斷P=1,設(shè)置中斷查詢方式,設(shè)置中斷查詢方式外部設(shè)備的接口電路仍向外部設(shè)備的接口電路仍向8259發(fā)出中斷請求,但發(fā)出中斷請求,但8259不不使用使用INT信號向信號向CPU發(fā)出中斷請求。發(fā)出中斷請求。CPU使用查詢命令確使用查詢命令確定是否有中斷請求,以及請求源定是否

33、有中斷請求,以及請求源例:讀例:讀IRROCW3 EQU 20HIRR EQU OCW3ISR EQU OCW3MOV AL,0AH ;讀出命令,;讀出命令,P=0,RR=1,RIS=0,選,選IRROUT OCW3,ALIN AL,IRR ;在;在AL中讀得中讀得IRR的值的值P=0,RR=1:8259內(nèi)部寄存器讀出命令內(nèi)部寄存器讀出命令RIS=0:讀出:讀出IRR的值;的值; =1:讀出:讀出ISR的值;的值; OCW3F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3例:讀例:讀ISROCW3 EQU 20HIRR EQU OCW3ISR EQU OCW3MOV

34、 AL,0BH ;讀出命令,;讀出命令,P=0,RR=1,RIS=1,選,選ISROUT OCW3,ALIN AL,ISRP=0,RR=1:8259內(nèi)部寄存器讀出命令內(nèi)部寄存器讀出命令RIS=0:讀出:讀出IRR的值;的值; =1:讀出:讀出ISR的值;的值; OCW3F8259A的編程結(jié)構(gòu)的編程結(jié)構(gòu)第三組:第三組:OCW1、OCW2、OCW3F8259對外部中斷的處理過程對外部中斷的處理過程1、 IR線上出現(xiàn)請求,線上出現(xiàn)請求,IRR寄存器對應(yīng)位置寄存器對應(yīng)位置1。2、 若若OCW1(IMR)未使該請求屏蔽,該請求被送入)未使該請求屏蔽,該請求被送入PR比較。否則,不送入比較。否則,不送入P

35、R比較。比較。3、PR把新進(jìn)入的請求與把新進(jìn)入的請求與ISR中正在被處理的中斷進(jìn)行中正在被處理的中斷進(jìn)行比較。如果新進(jìn)入的請求優(yōu)先級較低,則比較。如果新進(jìn)入的請求優(yōu)先級較低,則8259不向不向CPU提出請求。如果新進(jìn)入的請求優(yōu)先級較高,則提出請求。如果新進(jìn)入的請求優(yōu)先級較高,則8259使使INT引腳輸出高電平,向引腳輸出高電平,向CPU提出請求。提出請求。4、如果、如果CPU內(nèi)部的標(biāo)志寄存器中的內(nèi)部的標(biāo)志寄存器中的IF為為0,CPU不響應(yīng)不響應(yīng)該請求。若該請求。若IF=1,CPU在執(zhí)行完當(dāng)前指令后,從在執(zhí)行完當(dāng)前指令后,從CPU的的 引腳引腳 上向上向8259發(fā)出兩個負(fù)脈沖。發(fā)出兩個負(fù)脈沖。5

36、、第一個、第一個 負(fù)脈沖到達(dá)負(fù)脈沖到達(dá)8259時,時,8259使使ISR中的相中的相應(yīng)位置應(yīng)位置1,使,使IRR中的相應(yīng)位清中的相應(yīng)位清0。6、第二個負(fù)脈沖到達(dá)、第二個負(fù)脈沖到達(dá)8259時,時,8259將中斷類型碼(將中斷類型碼(ICW2中的值)送到數(shù)據(jù)總線上。如果中的值)送到數(shù)據(jù)總線上。如果ICW4中設(shè)置了中設(shè)置了中斷自動結(jié)束方式,則將中斷自動結(jié)束方式,則將ISR的相應(yīng)位清的相應(yīng)位清0。7、以后的處理與軟件中斷相同。、以后的處理與軟件中斷相同。F8259對外部中斷的處理過程對外部中斷的處理過程F8259A應(yīng)用舉例應(yīng)用舉例PC/AT中,中,8259的使用情況為:的使用情況為:2片片8259級聯(lián)

37、,提供級聯(lián),提供15級向量中斷。從片的級向量中斷。從片的INT接接主片的主片的IR2。端口地址:主片端口地址:主片20H、21H,從片,從片A0H、A1H。主片和從片均采用邊沿觸發(fā)。主片和從片均采用邊沿觸發(fā)。采用全嵌套優(yōu)先級排列方式采用全嵌套優(yōu)先級排列方式采用非緩沖方式,主片采用非緩沖方式,主片 接接+5V,從片從片 接接地。地。主片的類型碼為主片的類型碼為08H0FH,從片的類型碼為,從片的類型碼為70H77H。F8259A應(yīng)用舉例應(yīng)用舉例F8259A應(yīng)用舉例應(yīng)用舉例ICW1A EQU 20H ;主片端口地址;主片端口地址ICW2A EQU ICW1A+1ICW3A EQU ICW2AICW

38、4A EQU ICW2AICW1B EQU 0A0H ;從片端口地址;從片端口地址ICW2B EQU ICW1B+1ICW3B EQU ICW2BICW4B EQU ICW2B;- 主片主片8259A-MOV AL,11H ;ICW1,邊沿觸發(fā),多片,需,邊沿觸發(fā),多片,需ICW4OUT ICW1A,ALNOP ;I/O端口延時端口延時MOV AL,08H ;ICW2,中斷類型碼,中斷類型碼OUT ICW2A,ALNOPMOV AL,04H ;ICW3,IR2接從片接從片OUT ICW3A,ALNOPMOV AL,01H ;ICW4,非緩沖,全嵌套,非自動結(jié)束,非緩沖,全嵌套,非自動結(jié)束OUT

39、 ICW4A,ALNOP;- 從片從片8259A-MOV AL,11H ;ICW1,邊沿觸發(fā),多片,需,邊沿觸發(fā),多片,需ICW4OUT ICW1B,ALNOPMOV AL,70H ;ICW2,中斷類型碼,中斷類型碼OUT ICW2B,ALNOPMOV AL,02H ;ICW3,INT接主片的接主片的IR2OUT ICW3B,ALNOPMOV AL,01H ;ICW4,非緩沖,全嵌套,非自動結(jié)束,非緩沖,全嵌套,非自動結(jié)束OUT ICW4B,ALNOPPC/AT機(jī)主、從機(jī)主、從8259的初始化程序的初始化程序F8259A應(yīng)用舉例應(yīng)用舉例8.3 中斷服務(wù)程序的編程中斷服務(wù)程序的編程F中斷服務(wù)程序

40、的編程原則中斷服務(wù)程序的編程原則1)中斷是異步發(fā)生的,進(jìn)入響應(yīng)時并不考慮當(dāng)前運(yùn)行狀態(tài)。因)中斷是異步發(fā)生的,進(jìn)入響應(yīng)時并不考慮當(dāng)前運(yùn)行狀態(tài)。因此中斷服務(wù)程序必須保護(hù)現(xiàn)場此中斷服務(wù)程序必須保護(hù)現(xiàn)場2)在進(jìn)入具體中斷處理之前要先初始化中斷向量,使其指向相)在進(jìn)入具體中斷處理之前要先初始化中斷向量,使其指向相應(yīng)的中斷服務(wù)程序,但在此之前要先關(guān)中斷,以防接管中斷過應(yīng)的中斷服務(wù)程序,但在此之前要先關(guān)中斷,以防接管中斷過程中發(fā)生中斷程中發(fā)生中斷3)在中斷服務(wù)程序入口處要立即開中斷,以允許較高優(yōu)先級的)在中斷服務(wù)程序入口處要立即開中斷,以允許較高優(yōu)先級的中斷產(chǎn)生中斷產(chǎn)生4)中斷服務(wù)程序的服務(wù)時間要盡量壓縮,

41、以免干擾同級或低級)中斷服務(wù)程序的服務(wù)時間要盡量壓縮,以免干擾同級或低級中斷設(shè)備的工作中斷設(shè)備的工作5)由于)由于PC機(jī)中機(jī)中8259采用正常結(jié)束中斷,因此在中斷服務(wù)程序采用正常結(jié)束中斷,因此在中斷服務(wù)程序執(zhí)行執(zhí)行IRET返回前應(yīng)向返回前應(yīng)向8259發(fā)結(jié)束中斷命令發(fā)結(jié)束中斷命令EOIMOV AL, 20H;使當(dāng)前使當(dāng)前ISR中的對應(yīng)位復(fù)位中的對應(yīng)位復(fù)位OUT 20H, ALIRET6)當(dāng)編制替代系統(tǒng)原有中斷服務(wù)程序時,應(yīng)保存好原中斷向量)當(dāng)編制替代系統(tǒng)原有中斷服務(wù)程序時,應(yīng)保存好原中斷向量的內(nèi)容。在應(yīng)用程序終止前恢復(fù)原有的中斷向量的內(nèi)容。在應(yīng)用程序終止前恢復(fù)原有的中斷向量7)中斷服務(wù)程序不要使

42、用)中斷服務(wù)程序不要使用DOS系統(tǒng)功能調(diào)用(系統(tǒng)功能調(diào)用(INT 21H),因),因?yàn)闉镈OS不允許重入不允許重入F中斷服務(wù)程序的編程原則中斷服務(wù)程序的編程原則8)若中斷服務(wù)程序只為某個應(yīng)用程序服務(wù),則中斷服務(wù)程序可以)若中斷服務(wù)程序只為某個應(yīng)用程序服務(wù),則中斷服務(wù)程序可以和主程序組裝成一個程序一起裝入內(nèi)存,隨主程序結(jié)束而一起退和主程序組裝成一個程序一起裝入內(nèi)存,隨主程序結(jié)束而一起退出內(nèi)存出內(nèi)存9)若中斷服務(wù)程序?yàn)槎鄠€應(yīng)用程序服務(wù),則中斷服務(wù)程序可以與)若中斷服務(wù)程序?yàn)槎鄠€應(yīng)用程序服務(wù),則中斷服務(wù)程序可以與一個初始化程序組裝成一個程序一起裝入內(nèi)存,通過初始化程序一個初始化程序組裝成一個程序一起

43、裝入內(nèi)存,通過初始化程序的執(zhí)行而將中斷服務(wù)程序駐留內(nèi)存的執(zhí)行而將中斷服務(wù)程序駐留內(nèi)存F中斷服務(wù)程序的編程原則中斷服務(wù)程序的編程原則F中斷向量表的操作中斷向量表的操作讀寫中斷向量表不能使用讀寫中斷向量表不能使用MOV指令,而應(yīng)調(diào)用相應(yīng)的指令,而應(yīng)調(diào)用相應(yīng)的DOS功能功能取中斷向量取中斷向量預(yù)置預(yù)置AH=35H, AL=中斷類型號中斷類型號執(zhí)行執(zhí)行INT 21H把類型號為把類型號為AL的中斷向量取出到的中斷向量取出到ES:BX中中設(shè)置中斷向量設(shè)置中斷向量預(yù)置預(yù)置AH=25H, AL=中斷類型號中斷類型號,DS:DX=中斷向量中斷向量執(zhí)行執(zhí)行INT 21H把把DS:DX指向的中斷向量放置到中斷向量表

44、中類型號為指向的中斷向量放置到中斷向量表中類型號為AL的中斷向量處的中斷向量處F中斷向量表的操作中斷向量表的操作例:填寫中斷向量表,實(shí)現(xiàn)用戶所定義的例:填寫中斷向量表,實(shí)現(xiàn)用戶所定義的60H中斷中斷.CLIPUSH DSMOV AX, SEG INT60MOV DS, AXMOV DX, OFFSET INT60MOV AH, 25HMOV AL, 60HINT 21HPOP DSSTI.INT60 PROC FARIRETINT60 ENDP中斷服務(wù)中斷服務(wù)程序程序F中斷向量表的操作中斷向量表的操作例:用用戶定義的例:用用戶定義的中斷服務(wù)程序置換系統(tǒng)原有的中斷服務(wù)程序中斷服務(wù)程序置換系統(tǒng)原有的中斷服務(wù)程序DATA SEGMENT OLD_INT_SEG DW ?OLD_INT_OFF DW ?DATA ENDS.MOV AL, XXMOV AH, 35HINT 21HMOV OLD_INT

溫馨提示

  • 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

提交評論