1

根据我对中断工作原理的基本了解,当调用软件或硬件中断时,CPU 会查看位于内存前 1024 字节的 IVT(在实模式下),获取中断处理程序地址并从该位置开始执行。此外,据我了解,您可以覆盖 IVT 中的值以指向可以处理中断的自定义子例程。

我无法理解的是 BIOS 功能是如何工作的。例如int 0x10,CPU如何知道中断对应的是BIOS功能,而不是映射到内存中的子程序(调用中断处理程序,其地址被存储4 * 0x10)?

4

1 回答 1

2

CPU不知道。BIOS 被映射到内存中。存储在 4 * 0x10 的地址是 BIOS 中 INT 10H 处理程序的地址。

启动时,BIOS 初始化中断表,使其指向 BIOS 例程。

如果需要,您可以保存存储在 4 * 0x10 的地址并将其替换为您自己的 INT 10H 处理程序的地址。顺便说一句,我不建议这样做……但这是可能的。这种事情在当时的 DOS 中断中很常见。BIOS 中断的情况要少一些,但有时会发生。

于 2013-03-12T18:57:50.950 回答