我在英特尔开发人员手册中读到“int 0x10”表示浮点错误,但我在 BIOS 服务中读到的某处“int 0x10”表示视频显示服务,这是否矛盾?
问问题
217 次
1 回答
1
在 X86 架构中,中断处理程序在中断描述符表 (IDT) 中定义。
在读模式下,IDT 由 256 个四字节实模式指针组成。系统启动时,BIOS 会初始化这个 IDT,为实模式程序提供一些基本服务(例如 DOS 代码/OS 启动代码)。处理程序都在 BIOS 中定义。
稍后,操作系统启动代码可能会将处理器切换到保护模式并加载其新的 IDT。这次 IDT 是存储在内存中的 8 字节描述符数组。从这一点开始,操作系统开始处理中断而不是 BIOS。
所以没有矛盾,因为第一个 int 0x10 用于在实模式下调用 BIOS 服务,然后将其处理传递给 OS 以在保护模式下处理异常。
于 2013-06-05T09:27:59.797 回答