5.2.1 中斷的基本概念
1.中斷的概念及中斷源分類
在CPU執(zhí)行程序過程中,由于某種事件發(fā)生,強迫CPU暫時停止正在執(zhí)行的程序而轉(zhuǎn)向?qū)Πl(fā)生的事件進行處理,事件處理結(jié)束后又能回到原中止的程序,
接著中止前的狀態(tài)繼續(xù)執(zhí)行原來的程序,這一過程稱為中斷。外部中斷源產(chǎn)生引起中斷的事件。
INTR通常稱為可屏蔽中斷輸入信號,高電平有效——表示外部中斷源提出中斷請求。 NMI稱為非屏蔽中斷請求輸入信號,上升沿有效。
2. 中斷響應的一般過程
(1)中斷請求
(2)中斷承認
CPU在每條指令執(zhí)行的最后一個時鐘周期檢測中斷請求輸入端有無請求發(fā)生,而后決定是否對它做出響應。CPU承認一個中斷請求,必須滿足以下4個條件:
①一條指令執(zhí)行結(jié)束。
③沒有發(fā)生復位(RESET)、保持(HOLD)和非屏蔽中斷請求(NMI)。
④開中斷指令(STI)、中斷返回指令(IRET)執(zhí)行完,還需再執(zhí)行一條指令才能響應INTR請求。
(3) 斷點保護
(4)中斷源識別
有兩種常用的確定中斷源的方法:
①軟件查詢。
②中斷矢量法。


(5) 中斷服務
中斷服務程序分為兩種情況。如圖5.9所示,第一種是不允許被中斷的中斷服務程序。第二種是可以被中斷的中斷服務程序,其流程圖如圖5.10所示。
(6) 斷點恢復
(7) 中斷返回


3. 中斷優(yōu)先級及中斷嵌套
中斷優(yōu)先級控制應當解決這樣兩種可能出現(xiàn)的情況:
①當不同優(yōu)先級的多個中斷源同時提出中斷請求時,CPU首先響應最高優(yōu)先級的中斷源。
②當CPU正在對某一中斷源服務時,比它優(yōu)先級更高的中斷源提出中斷請求時,CPU能夠中斷正在執(zhí)行的中斷服務程序而去對優(yōu)先級更高的中斷源進行服務。

5.2.2 8086(8088)的中斷系統(tǒng) 8086(88)具有功能很強的中斷系統(tǒng),可以處理256個不同方式的中斷。
1. 內(nèi)部中斷源
8086(88)的內(nèi)部中斷主要有5種。
(1) 除法錯中斷
(2) 單步中斷
(3) 斷點中斷
(4) 溢出中斷
(5)用戶自定義的軟件中斷
2. 外部中斷
8086(88)有兩個信號輸入端供外部中斷源提出中斷請求,下面分別予以說明。
(1) 非屏蔽中斷NMI
(2) 可屏蔽中斷請求INTR

綜上所述,我們用圖5.13表示8086(88)CPU響應中斷的處理過程。
對圖5.13作如下說明:
①在8086(88)CPU中,內(nèi)部中斷的除法錯、溢出、斷點及用戶自定義軟件中斷的優(yōu)先級最高,其次是NMI。
②從圖5.13可以看到,各中斷的處理過程大致是相同的。
③在中斷響應過程中,獲取中斷向量碼的方式是各不相同的;但獲得中斷向量碼之后的過程則是一樣的。
④特別應提醒讀者注意的是,圖5.13的整個過程,從發(fā)現(xiàn)有中斷直到轉(zhuǎn)向中斷服務程序這一復雜的過程,是由CPU硬件自動完成的。
3. 中斷向量表
在8086(88)內(nèi)存的開始1K字節(jié)建立了一個中斷向量表,如圖5.14所示。從中斷向量表中我們可以看到,利用該表,將不同的中斷源與其相對應的中斷服務
程序入口聯(lián)系在一起。知道了中斷源,利用中斷向量表可以自動地轉(zhuǎn)向相應的中斷服務程序。

