汇编 – IRQ编号冲突

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

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

我错过了什么?

最佳答案
你没有遗漏任何东西.

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

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

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

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

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

Coprocessor errors vector to interrupt 16. Any 80386 system with a coprocessor must use interrupt vector 16 for the coprocessor error exception. If an 8086/8088 system uses another vector for the 8087 interrupt, both vectors should point to the coprocessor-error exception handler.

转载注明原文:汇编 – IRQ编号冲突 - 代码日志