Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
根据我对中断工作原理的基本了解,当调用软件或硬件中断时,CPU 会查看位于内存前 1024 字节的 IVT(在实模式下),获取中断处理程序地址并从该位置开始执行。此外,据我了解,您可以覆盖 IVT 中的值以指向可以处理中断的自定义子例程。
我无法理解的是 BIOS 功能是如何工作的。例如int 0x10,CPU如何知道中断对应的是BIOS功能,而不是映射到内存中的子程序(调用中断处理程序,其地址被存储4 * 0x10)?
int 0x10
4 * 0x10
CPU不知道。BIOS 被映射到内存中。存储在 4 * 0x10 的地址是 BIOS 中 INT 10H 处理程序的地址。
启动时,BIOS 初始化中断表,使其指向 BIOS 例程。
如果需要,您可以保存存储在 4 * 0x10 的地址并将其替换为您自己的 INT 10H 处理程序的地址。顺便说一句,我不建议这样做……但这是可能的。这种事情在当时的 DOS 中断中很常见。BIOS 中断的情况要少一些,但有时会发生。