首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

匯編基礎:中斷機制詳解與 DOS/BIOS 中斷調用實例

     編輯:組合語言

中斷分類與來源

  • 外部中斷 (硬件中斷):I/O 設備請求。可屏蔽 (IF=1 響應) / 不可屏蔽 (NMI)。
  • 內部中斷:CPU 內部事件。除法錯誤、INTO 溢出、INT n 軟中斷、單步 (TF=1)。均不可屏蔽。

中斷優先級

高 → 低:內部中斷 > 不可屏蔽 > 可屏蔽 > 單步。

中斷處理流程 (5 步)

  1. 中斷請求
  2. 優先級判定
  3. 中斷響應 (保護現場:CS、IP、FLAGS;清 IF、TF)
  4. 中斷處理
  5. 中斷返回 (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 功能調用是系統編程基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved