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