中斷分類與來源
- 外部中斷 (硬件中斷):I/O 設備請求。可屏蔽 (IF=1 響應) / 不可屏蔽 (NMI)。
- 內部中斷:CPU 內部事件。除法錯誤、
INTO 溢出、INT n 軟中斷、單步 (TF=1)。均不可屏蔽。
中斷優先級
高 → 低:內部中斷 > 不可屏蔽 > 可屏蔽 > 單步。
中斷處理流程 (5 步)
- 中斷請求
- 優先級判定
- 中斷響應 (保護現場:CS、IP、FLAGS;清 IF、TF)
- 中斷處理
- 中斷返回 (
IRET 恢復 CS、IP、FLAGS)
編寫中斷處理程序規範
- 數據/代碼合段,無獨立數據段、棧段(借用調用者棧)
- 入口保護現場 (壓寄存器),允許嵌套時
STI 開中斷,退出前 CLI 關中斷
- 用
IRET 返回
實例:自定義 60H 中斷顯示字符串
完整代碼演示:備份原向量、設置新向量、調用、恢復向量。中斷處理程序保護現場、設置 DS、調用 DOS 9 號功能顯示、恢復現場 IRET。
BIOS 與 DOS 中斷調用
- BIOS:ROM 中,0H-9H 硬中斷,其餘軟中斷調用。
- DOS:建立在 BIOS 上,核心
INT 21H,AH 選功能號。
常用 DOS 功能速查
- 鍵盤:1/6/7/8 號功能(帶/不帶回顯、是否檢測 Ctrl+Break)
- 顯示:2/6/9 號功能(單字符/字符串)
綜合實例:生成 10 個隨機數
利用 INT 1AH 獲取時間計數器,除以 5 取餘生成 0-51 隨機數存入緩衝區。
小結
中斷是系統響應外部/內部事件的核心機制,掌握向量表、優先級、現場保護、DOS/BIOS 功能調用是系統編程基石。