1

我有一个在保护模式下在裸 x86(没有操作系统)上运行的 C 程序。我需要将程序的执行延迟一段时间。目前,我正在这样做:

for(p=0; p<1000000; ++p) asm("pause");

但这看起来非常非常错误(我确实得到了延迟,但显然,我无法真正控制其持续时间:“暂停”的长度未定义)。

现在,我对这么低级别的东西并没有真正的经验,我一直在网上寻找解决方案,但到目前为止,我发现的唯一一个涉及 BIOS 中断,它在 pmode 下不起作用(或者我被告知)。

那么,在保护模式下如何延迟执行?

4

1 回答 1

4

实现延迟的典型方法是使用系统定时器,在 x86 上也称为 PIT(可编程间隔定时器)来生成中断。您将设置系统计时器(硬件 IRQ0)以在一定时间后引发中断,编写中断处理程序以在中断时设置一些寄存器或标志,并且,当您需要延迟执行时,在寄存器或标志上循环直到中断处理程序设置它。

于 2011-07-12T21:31:23.100 回答