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

80386 異常類型完整對照表與詳細機制

     編輯:組合語言

21 種處理器識別異常一覽表

向量名稱類型錯誤碼相關指令/情境
0除法錯誤 (#DE)Fault無DIV/IDIV 除數為 0 或商溢位
1除錯異常 (#DB)Fault/Trap無任何指令,由 DR6 判斷原因
3單字節 INT3 (#BP)Trap無INT 3 斷點
4溢位 (#OF)Trap無INTO,OF=1 時觸發
5邊界檢查 (#BR)Fault無BOUND 超出範圍
6非法操作碼 (#UD)Fault無非法編碼、錯誤操作數、LOCK 濫用
7裝置不可用 (#NM)Fault無浮點指令或 WAIT,CR0.EM/TS=1
8雙重錯誤 (#DF)Abort有(0)連續段/頁錯誤,進入 Shutdown 需 NMI/重啟
9協處理器段超界Abort無浮點運算元跨段界限
0Ah無效 TSS (#TS)Fault有任務切換載入 TSS 時段錯誤(限長、LDT、堆疊段屬性等)
0Bh段不存在 (#NP)Fault有非 SS 段描述子 P=0
0Ch堆疊段錯誤 (#SS)Fault有堆疊溢位、特權變更存取內層堆疊越界、SS 描述子 P=0
0Dh一般保護 (#GP)Fault有寫唯讀段、載入系統描述子到 DS/ES、越界、CR0.PG=1/PE=0 等
0Eh頁面錯誤 (#PF)Fault有任何記憶體存取(詳見專文)
10h協處理器錯誤 (#MF)Fault無下一條浮點/WAIT 通知未屏蔽數值錯誤
11h-FFh軟中斷Trap無INT n

保護模式與實模式向量衝突處理

Intel 早於 8086 時代即保留 0-1Fh 向量供內部異常使用。保護模式下必須重新初始化 8259A PIC,將硬體中斷向量映射到 20h 以上,避免與異常向量衝突。

故障類異常深度解析

  • #TS 錯誤碼:Selector(13 bits) + TI + IDT + EXT。EXT=1 表示處理中斷/異常時再發生異常;IDT=1 表示讀 IDT 時出錯。
  • #NP:僅非 SS 段;處理常可載入缺頁段後 IRET 重試。
  • #SS:三種情境(堆疊溢位/特權切換內層堆疊越界/SS 描述子 P=0),以錯誤碼 Selector 的 P-bit 區分後兩者。
  • #GP:分「可模擬繼續」(錯誤碼=0,如應用程式執行特權指令)與「必須終止」(錯誤碼≠0,如寫代碼段、載入系統描述子到資料段)。

陷阱與中止類異常

  • #DB 陷阱:單步、資料/程式碼斷點觸發,屬 Trap,IRET 至下一條指令。
  • #BP (INT3):單字節斷點指令,CS:EIP 指向後續位元組。
  • #OF (INTO):OF=1 時陷阱,EIP 指向 INTO 之後。
  • #DF:連續兩次段/頁錯誤觸發;第三次進入 Shutdown,僅回應 NMI/Reset。
  • 協處理器段超界:屬 Abort,僅影響當前任務,非系統級中止。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved