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