資源描述:
《中斷概述和中斷處理過程.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第23課中斷概述可屏蔽中斷處理過程教學(xué)目的:了解中斷的相關(guān)概念,掌握可屏蔽中斷的處理過程。教學(xué)重點(diǎn):中斷響應(yīng)過程、中斷向量和中斷服務(wù)過程。教學(xué)難點(diǎn):中斷向量。授課內(nèi)容:一、中斷概念1.中斷源2.中斷響應(yīng)3.中斷向量表4.中斷優(yōu)先級(jí)5.中斷屏蔽二、中斷分類8086/8088有一個(gè)強(qiáng)有力的中斷系統(tǒng),可以處理256種不同的中斷,256種中斷可以分為兩大類:外部中斷和內(nèi)部中斷。1.外部中斷也稱為硬件中斷,是由外部的硬件產(chǎn)生的。分成不可屏蔽中斷請(qǐng)求和可屏蔽中斷請(qǐng)求。2.內(nèi)部中斷又稱為軟件中斷。通常有三種情況引起:由中斷指令I(lǐng)NT引起的中斷;由C
2、PU的某些運(yùn)算錯(cuò)誤引起的中斷;由調(diào)試程序debug設(shè)置的中斷。三、CPU響應(yīng)中斷過程可屏蔽中斷處理的過程一般分成幾步:中斷請(qǐng)求;中斷響應(yīng);保護(hù)現(xiàn)場(chǎng);轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序;恢復(fù)現(xiàn)場(chǎng)和中斷返回。CPU響應(yīng)中斷要有三個(gè)條件:外設(shè)提出中斷申請(qǐng)本中斷位未被屏蔽中斷允許CPU在響應(yīng)外部中斷,并轉(zhuǎn)入相應(yīng)中斷服務(wù)子程序的過程中,自動(dòng)依次做以下工作:(1)從數(shù)據(jù)總線上讀取中斷類型號(hào),將其存入內(nèi)部暫存器。(2)將標(biāo)志寄存器PSW的值入棧。(3)將PSW中的中斷允許標(biāo)志IF和單步標(biāo)志TF清0,以屏蔽外部其它中斷請(qǐng)求,及避免CPU以單步方式執(zhí)行中斷處理子程
3、序。(4)保護(hù)斷點(diǎn)。(5)根據(jù)中斷類型號(hào)到中斷向量表中找到中斷向量,轉(zhuǎn)入相應(yīng)中斷服務(wù)子程序。(6)中斷處理程序結(jié)束以后,從堆棧中依次彈出IP、CS和PSW,然后返回主程序斷點(diǎn)處,繼續(xù)執(zhí)行原來的程序。四、中斷向量表尋找中斷源可以用查詢中斷及矢量中斷兩種方法。1.中斷向量表又稱中斷服務(wù)程序入口地址表。8086允許處理256種類型中斷,對(duì)應(yīng)類型號(hào)為0~FFH。2.中斷向量的設(shè)置供用戶使用的中斷類型號(hào),它可由用戶定義為軟中斷,由INTn指令引用;也可通過1NTR端直接接入,或通過中斷控制器8259A引入可屏蔽硬件中斷。有兩種方法可將中斷服務(wù)程
4、序的入口地址置入中斷類型號(hào)n所對(duì)應(yīng)的中斷向量表中。一種方法用指令來設(shè)置,另一種方法利用DOS功能調(diào)用來設(shè)置。設(shè)置中斷向量:預(yù)置AL=中斷類型號(hào)DS:DX=中斷服務(wù)程序入口地址AH=25H執(zhí)行:INT21H取中斷向量:預(yù)置AL=中斷類型號(hào)AH=35H執(zhí)行:INT21H返回:ES:BX=中斷服務(wù)程序人口地址3.中斷類型號(hào)的獲取(1)對(duì)于除法出錯(cuò),單步中斷,不可屏蔽中斷NMI,斷點(diǎn)中斷和溢出中斷,CPU分別自動(dòng)提供中斷類型號(hào)0~4。(2)對(duì)于用戶自己確定的軟件中斷INTn,類型號(hào)由n決定。(3)對(duì)外部可屏蔽中斷INTR,可用硬件電路設(shè)計(jì)產(chǎn)生
5、中斷類型號(hào)。(4)對(duì)外部可屏蔽中斷INTR,可以用可編程中斷控制器8259A獲得中斷類型號(hào)。4.中斷主程序的初始化(1)設(shè)置中斷向量。(2)設(shè)置8259A的中斷屏蔽寄存器的中斷屏蔽位。(3)設(shè)置CPU中斷允許位標(biāo)志IF(開中斷STI)。五、中斷服務(wù)子程序(1)程序開始必須保護(hù)中斷現(xiàn)場(chǎng),可通過一系列PUSH指令將CPU各寄存器的值入棧保護(hù)。(2)若允許中斷嵌套,則用STI指令來設(shè)置開中斷,使中斷允許標(biāo)志IF=1。(3)執(zhí)行中斷處理程序。(4)用CLI指令來設(shè)置關(guān)中斷,使中斷允許標(biāo)志IF=0,禁止其他中斷請(qǐng)求進(jìn)入。(5)給中斷命令寄存器送
6、中斷結(jié)束命令E0I,使當(dāng)前正在處理的中斷請(qǐng)求標(biāo)志位被清除,否則同級(jí)中斷或低級(jí)中斷的請(qǐng)求仍會(huì)被屏蔽掉.(6)恢復(fù)中斷時(shí)的現(xiàn)場(chǎng),通過一系列POP指令將CPU各寄存器的值恢復(fù)。(7)用中斷返回指令I(lǐng)RET返回主程序,此時(shí)堆棧中保存的斷點(diǎn)值和標(biāo)志值分別裝入IP、CS和PSW。六、中斷響應(yīng)時(shí)序七、作業(yè)7.1,7.4,7.9,7.10