微處理器 - 8086 中斷



中斷是程式執行過程中建立臨時暫停的方法,允許外圍裝置訪問微處理器。微處理器對該中斷的響應是ISR(中斷服務例程),這是一個簡短的程式,用於指示微處理器如何處理中斷。

下圖顯示了 8086 微處理器中的中斷型別:

Interrupts

硬體中斷

硬體中斷是由任何外圍裝置透過向微處理器指定的引腳傳送訊號引起的。

8086 具有兩個硬體中斷引腳,即 NMI 和 INTR。NMI 是不可遮蔽中斷,INTR 是可遮蔽中斷,優先順序較低。另一個相關的中斷引腳是 INTA,稱為中斷確認。

NMI

它是一個單一的不可遮蔽中斷引腳 (NMI),優先順序高於可遮蔽中斷請求引腳 (INTR),它是 2 型中斷。

當此中斷被啟用時,將發生以下操作:

  • 完成正在執行的當前指令。

  • 將標誌暫存器值壓入堆疊。

  • 將返回地址的 CS(程式碼段)值和 IP(指令指標)值壓入堆疊。

  • IP 從字位置 00008H 的內容載入。

  • CS 從下一個字位置 0000AH 的內容載入。

  • 中斷標誌和陷阱標誌重置為 0。

INTR

INTR 是可遮蔽中斷,因為只有在使用設定中斷標誌指令啟用中斷時,才會中斷微處理器。不應使用清除中斷標誌指令啟用它。

INTR 中斷由 I/O 埠啟用。如果中斷已啟用且 NMI 已停用,則微處理器首先完成當前執行,並在 INTA 引腳上傳送兩次“0”。第一個“0”表示 INTA 通知外部裝置準備好,在第二個“0”期間,微處理器從可程式設計中斷控制器接收 8 位資料,例如 X。

微處理器將執行以下操作:

  • 首先完成當前指令。

  • 啟用 INTA 輸出並接收中斷型別 X。

  • 將標誌暫存器值、返回地址的 CS 值和返回地址的 IP 值壓入堆疊。

  • IP 值從字位置 X × 4 的內容載入。

  • CS 從下一個字位置的內容載入。

  • 中斷標誌和陷阱標誌重置為 0。

軟體中斷

在程式的所需位置插入一些指令以建立中斷。這些中斷指令可用於測試各種中斷處理程式的工作情況。它包括:

INT - 帶型別編號的中斷指令

它是 2 位元組指令。第一個位元組提供操作碼,第二個位元組提供中斷型別編號。此組下有 256 箇中斷型別。

其執行包括以下步驟:

  • 將標誌暫存器值壓入堆疊。

  • 將返回地址的 CS 值和返回地址的 IP 值壓入堆疊。

  • IP 從字位置“型別編號”× 4 的內容載入。

  • CS 從下一個字位置的內容載入。

  • 中斷標誌和陷阱標誌重置為 0。

0 型中斷的起始地址為 000000H,1 型中斷的起始地址為 00004H,2 型中斷的起始地址為 00008H,依此類推。前五個指標是專用的中斷指標,即:

  • 0 型中斷表示除以零的情況。

  • 1 型中斷表示程式除錯期間的單步執行。

  • 2 型中斷表示不可遮蔽 NMI 中斷。

  • 3 型中斷表示斷點中斷。

  • 4 型中斷表示溢位中斷。

5 型到 31 型中斷保留用於其他高階微處理器,32 型到 255 型中斷可用於硬體和軟體中斷。

INT 3 - 斷點中斷指令

它是一個 1 位元組指令,操作碼為 CCH。這些指令被插入到程式中,以便當處理器到達那裡時,它會停止程式的正常執行並遵循斷點過程。

其執行包括以下步驟:

  • 將標誌暫存器值壓入堆疊。

  • 將返回地址的 CS 值和返回地址的 IP 值壓入堆疊。

  • IP 從字位置 3×4 = 0000CH 的內容載入。

  • CS 從下一個字位置的內容載入。

  • 中斷標誌和陷阱標誌重置為 0。

INTO - 溢位中斷指令

它是一個 1 位元組指令,其助記符為INTO。此指令的操作碼為 CEH。顧名思義,它是一個條件中斷指令,即僅當溢位標誌設定為 1 時才有效,並跳轉到中斷型別編號為 4 的中斷處理程式。如果溢位標誌被複位,則執行繼續到下一條指令。

其執行包括以下步驟:

  • 將標誌暫存器值壓入堆疊。

  • 將返回地址的 CS 值和返回地址的 IP 值壓入堆疊。

  • IP 從字位置 4×4 = 00010H 的內容載入。

  • CS 從下一個字位置的內容載入。

  • 中斷標誌和陷阱標誌重置為 0。

廣告