2 c assembly protected-mode low-level
我有一个在受保护模式下在裸x86(没有操作系统)上运行的C程序.我需要将程序的执行延迟一段时间.目前,我这样做:
for(p=0; p<1000000; ++p) asm("pause");
Run Code Online (Sandbox Code Playgroud)
但这看起来非常错误(我确实得到了延迟,但显然,我对其持续时间没有真正的控制权:"暂停"的长度未定义).
现在,我并没有真正体验过这么低级别的东西,而且我一直在网上寻找解决方案,但到目前为止,我发现唯一一个涉及BIOS中断,这在pmode中不起作用(或者我被告知).
那么,在保护模式下如何延迟执行?
实现延迟的典型方法是使用系统定时器,也称为x86(可编程间隔定时器)上的PIT来产生中断.您可以设置系统定时器(硬件IRQ0)以在一定时间后产生中断,写入中断处理程序以设置某个寄存器或中断标志,并且当您需要延迟执行时,循环寄存器或标记,直到中断处理程序设置它.