IRQ编号冲突

3 x86 assembly interrupt bios interrupt-handling

来自:http: //software.intel.com/en-us/articles/introduction-to-pc-architecture/

例外号10h对应于"浮点错误",但软件中断10h也对应于"视频支持"BIOS中断(均为实模式).

我错过了什么?

Art*_*ius 7

你没有遗漏任何东西.

8088处理器(原始IBM PC中使用的处理器)仅定义了例外0,1,2,3和4.

所以IBM使用0x8到0xF用于硬件中断处理程序,0x10及以上用于BIOS例程.出于某种原因,IBM忽略了英特尔非常清楚地保留了数字0x5到0x1F以用于未来处理器异常的事实.

随着时间的推移,需要更多例外,英特尔继续分配它们.大多数情况下,遗留软件无论如何都不会触发这些异常,而较新的操作系统(以受保护模式运行的操作系统)可以分配不同的数字,以免与处理器异常冲突.

旧软件中添加了大量黑客,可以在不破坏太多兼容性的情况下使用更新的处理器功能.虽然我不确定,但我怀疑可能更新的BIOS可能试图检测INT10是由软件中断还是由INT10处理程序中的协处理器触发的.

仅供参考,来自386程序员手册:

协处理器错误导致中断16.任何具有协处理器的80386系统必须使用中断向量16来处理协处理器错误异常.如果8086/8088系统使用另一个向量进行8087中断,则两个向量都应指向协处理器错误异常处理程序.