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