資源描述:
《中斷及中斷處理過程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、3-1中斷及中斷處理過程所謂中斷是指某事件的發(fā)生引起CPU暫停當前程序的運行,轉(zhuǎn)入對所發(fā)生事件的處理,處理結(jié)束又回到原程序被打斷處接著執(zhí)行這樣一個過程。3-1中斷及中斷處理過程中斷源分類1、外中斷源2、內(nèi)部中斷源I/O設(shè)備數(shù)據(jù)通道實時鐘故障源CPU執(zhí)行指令產(chǎn)生的異常執(zhí)行INT軟件中斷指令1、外部中斷2、內(nèi)部中斷軟件中斷沒有隨機性,類似于普通子程序的調(diào)用硬件中斷具有隨機性分為可屏蔽中斷與不可屏蔽中斷兩種中斷分類3.1.2中斷處理過程中斷請求—→中斷優(yōu)先級判定—→中斷響應(yīng)—→中斷處理—→中斷返回1、中斷請求2、中斷優(yōu)先級判定多中斷
2、請求的優(yōu)先級判定實現(xiàn)多層中斷嵌套①信號形式應(yīng)滿足CPU要求。②中斷請求信號應(yīng)被有效地記錄,以便CPU能夠檢測到它。③一旦CPU對某中斷源的請求提供了服務(wù),則該中斷源的請求信號應(yīng)及時撤消。3.1.2中斷處理過程3、中斷響應(yīng)?獲得中斷類型號保護狀態(tài)標志屏蔽新的INTR中斷和單步中斷保存斷點信息?根據(jù)中斷類型,獲得中斷服務(wù)程序的入口地址?進入中斷服務(wù)程序CPU狀態(tài)字中IF=1,開中斷;IF=0,關(guān)中斷CPU復(fù)位,IF=0,TF=0;用STI開中斷,CLI關(guān)中斷CPU響應(yīng)中斷后,自動實現(xiàn)關(guān)中斷,若要實現(xiàn)中斷嵌套,在中斷服務(wù)程序中要用S
3、TI開中斷圖1微機系統(tǒng)中實現(xiàn)中斷的基本模型圖2有中斷產(chǎn)生的情況下CPU運行程序的軌跡3.1.2中斷處理過程4、中斷處理?保護現(xiàn)場開中斷中斷服務(wù)?關(guān)中斷?恢復(fù)現(xiàn)場中斷處理程序中,最后應(yīng)有IRET指令恢復(fù)斷點信息恢復(fù)標志寄存器FR4、中斷返回3.2中斷優(yōu)先權(quán)①軟件查詢。②硬件鏈式優(yōu)先級排隊電路。③硬件優(yōu)先級編碼比較電路。④利用可編程中斷控制器。3.2.1軟件查詢3.2.2硬件排優(yōu)2可編程中斷控制器中斷優(yōu)先權(quán)管理電路中斷請求鎖存器中斷類型寄存器中斷屏蔽寄存器當前中斷服務(wù)寄存器3.380X86中斷系統(tǒng)3.3.1中斷結(jié)構(gòu)8086(88)
4、中斷系統(tǒng)可以容納最多256個中斷源,所有中斷源統(tǒng)一編碼,每個中斷源用一個字節(jié)型編碼標識,它是CPU識別中斷源的標記。256個中斷源分為兩大類:(1)內(nèi)部中斷由CPU內(nèi)部事件及執(zhí)行軟中斷指令產(chǎn)生。已定義的內(nèi)部中斷有:①除法錯中斷,0型中斷。②單步中斷,1型中斷③斷點中斷,3型中斷,用于調(diào)試插入斷點。④溢出中斷,4型中斷,INTO指令。⑤指令中斷,INTn指令①中斷在處理過程中,CPU自動將標志FR入棧,然后清TF和IF②IF的值可以通過指令STI和指令CLI改變③沒有直接改變TF值的指令,需要編程PUSHFPOPAXORAX,0
5、100HPUSHAXPOPFOFDFIFTFSFZFAFPFCFFR:注意:(2)外部中斷3.3.1中斷結(jié)構(gòu)由外部中斷源產(chǎn)生對CPU的請求而引發(fā)的。8086(88)中斷系統(tǒng)將外部中斷源又分為兩種。①非屏蔽中斷。②可屏蔽中斷2型中斷。當NMI引腳出現(xiàn)上升沿觸發(fā),表示有非屏蔽中斷請求信號的有效高電平應(yīng)持續(xù)2個時鐘周期以上用來處理系統(tǒng)突發(fā)事件當INTR引腳出現(xiàn)高電平,表示有可屏蔽中斷請求只有在IF=1時,CPU才響應(yīng)此中斷CPU響應(yīng)后,會執(zhí)行兩個響應(yīng)周期,分別送兩個INTA負脈沖信號,以獲得該中斷源的中斷類型碼3.3.2中斷向量表中
6、斷向量:中斷服務(wù)程序的入口地址。8086(88)在內(nèi)存的最低1K字節(jié)建了一個中斷向量表,用以存放256個中斷類型的中斷向量(中斷服務(wù)程序的地址)存放方法:每個中斷向量占4個字節(jié),前2個字節(jié)是IP,后兩個字節(jié)是CS。按中斷向量碼的序號排列.圖7中斷向量表中斷向量地址指針中斷向量地址指針=4×中斷類型碼如:中斷類型碼為20H的中斷向量,存放在0000:0080H開始的四個單元中。1、絕對地址置入2、使用串指令置入3.3.3中斷向量表的建立中斷服務(wù)程序的入口地址該怎么置入中斷向量表中?INT-TBLSEGMENTAT0ORGn×4D
7、DINT-VCEINT-TBLENDSINT-VCEPROCFARIRET……CLIMOVAX,0MOVES,0;置向量表段地址MOVDI,n*4;置向量表偏移地址MOVAX,OFFSETINT-VCE;置中斷服務(wù)程序偏移地址CLD;清除方向標志STOSWMOVAX,SEGINT-VCE;置中斷服務(wù)程序段地址STOSWSTI3.3.3中斷向量表的建立3、使用DOS系統(tǒng)功能調(diào)用INT21H1)使用25H功能系統(tǒng)功能調(diào)用:a)把調(diào)用號放入AH中,設(shè)置入口參數(shù)b)執(zhí)行INT21H25H功能:根據(jù)中斷號更新中斷服務(wù)程序的入口地址a)A
8、L=中斷號b)DS:DX=中斷服務(wù)程序新的入口地址的段、偏移地址PUSHDSMOVDX,SEGINT60H;置中斷服務(wù)程序段地址MOVDS,DXMOVDX,OFFSETINT60H;置中斷服務(wù)程序偏移地址MOVAL,60HMOVAH,25HINT21HPOPDS35H功能:查