中斷處理時需要進(jìn)行哪些工作,?
一般中斷處理的主要步驟分別是中斷請求,、中斷判優(yōu),、中斷響應(yīng),、中斷處理和中斷返回,。 在微機系統(tǒng)中,,對于外部中斷,,中斷請求信號是由外部設(shè)備產(chǎn)生,,并施加到CPU的NMI或INTR引腳上,,CPU通過不斷地檢測NMI和INTR引腳信號來識 別是否有中斷請求發(fā)生,。對于內(nèi)部中斷,中斷請求方式不需要外部施加信號激發(fā),,而是通過內(nèi)部中斷控制邏輯去調(diào)用,。無論是外部中斷還是內(nèi)部中斷,中斷處理過程 都要經(jīng)歷以下步驟: 請求中斷→響應(yīng)中斷→關(guān)閉中斷→保留斷點→中斷源識別→保護(hù)現(xiàn)場→中斷服務(wù)子程序→恢復(fù)現(xiàn)場→中斷返回,。 請求中斷 當(dāng)某一中斷源需要CPU為其進(jìn)行中斷服務(wù)時,,就輸出中斷請求信號,使中斷控制系統(tǒng)的中斷請求觸發(fā)器置位,,向CPU請求中斷,。系統(tǒng)要求中斷請求信號一直保持到CPU對其進(jìn)行中斷響應(yīng)為止。 中斷響應(yīng) CPU對系統(tǒng)內(nèi)部中斷源提出的中斷請求必須響應(yīng),,而且自動取得中斷服務(wù)子程序的入口地址,,執(zhí)行中斷 服務(wù)子程序。對于外部中斷,,CPU在執(zhí)行當(dāng)前指令的最后一個時鐘周期去查詢INTR引腳,,若查詢到中斷請求信號有效,同時在系統(tǒng)開中斷(即IF=1)的情 況下,,CPU向發(fā)出中斷請求的外設(shè)回送一個低電平有效的中斷應(yīng)答信號,,作為對中斷請求INTR的應(yīng)答,系統(tǒng)自動進(jìn)入中斷響應(yīng)周期,。 關(guān)閉中斷 CPU響應(yīng)中斷后,,輸出中斷響應(yīng)信號,自動將狀態(tài)標(biāo)志寄存器FR或EFR的內(nèi)容壓入堆棧保護(hù)起來,,然后將FR或EFR中的中斷標(biāo)志位IF與陷阱標(biāo)志位TF清零,,從而自動關(guān)閉外部硬件中斷。因為CPU剛進(jìn)入中斷時要保護(hù)現(xiàn)場,,主要涉及堆棧操作,,此時不能再響應(yīng)中斷,否則將造成系統(tǒng)混亂。 保護(hù)斷點 保護(hù)斷點就是將CS和IP/EIP的當(dāng)前內(nèi)容壓入堆棧保存,,以便中斷處理完畢后能返回被中斷的原程序繼續(xù)執(zhí)行,,這一過程也是由CPU自動完成。 中斷源識別 當(dāng)系統(tǒng)中有多個中斷源時,,一旦有中斷請求,,CPU必須確定是哪一個中斷源提出的中斷請求,并由中斷控制器給出中斷服務(wù)子程序的入口地址,,裝入CS與IP/EIP兩個寄存器,。CPU轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序開始執(zhí)行。 保護(hù)現(xiàn)場 主程序和中斷服務(wù)子程序都要使用CPU內(nèi)部寄存器等資源,,為使中斷處理程序不破壞主程序中寄存器的內(nèi)容,,應(yīng)先將斷點處各寄存器的內(nèi)容壓入堆棧保護(hù)起來,再進(jìn)入的中斷處理?,F(xiàn)場保護(hù)是由用戶使用PUSH指令來實現(xiàn)的,。 中斷服務(wù) 中斷服務(wù)是執(zhí)行中斷的主體部分,不同的中斷請求,,有各自不同的中斷服務(wù)內(nèi)容,,需要根據(jù)中斷源所要完成的功能,事先編寫相應(yīng)的中斷服務(wù)子程序存入內(nèi)存,,等待中斷請求響應(yīng)后調(diào)用執(zhí)行,。 恢復(fù)現(xiàn)場 當(dāng)中斷處理完畢后,用戶通過POP指令將保存在堆棧中的各個寄存器的內(nèi)容彈出,,即恢復(fù)主程序斷點處寄存器的原值,。 中斷返回 在中斷服務(wù)子程序的最后要安排一條中斷返回指令I(lǐng)RET,執(zhí)行該指令,,系統(tǒng)自動將堆棧內(nèi)保存的 IP/EIP和CS值彈出,,從而恢復(fù)主程序斷點處的地址值,同時還自動恢復(fù)標(biāo)志寄存器FR或EFR的內(nèi)容,,使CPU轉(zhuǎn)到被中斷的程序中繼續(xù)執(zhí)行,。
本網(wǎng)站文章僅供交流學(xué)習(xí) ,不作為商用, 版權(quán)歸屬原作者,,部分文章推送時未能及時與原作者取得聯(lián)系,,若來源標(biāo)注錯誤或侵犯到您的權(quán)益煩請告知,我們將立即刪除.