Assembly 执行任务延迟

Assembly 执行任务延迟,assembly,delay,dos,tasm,dosbox,Assembly,Delay,Dos,Tasm,Dosbox,谁能给我一些建议,我如何实现简单易用的ASM延迟? Nop是不好的方式,因为它依赖于CPU。 Int 15h函数86h也很糟糕,因为它正在阻止其他中断(如09h)。钩住中断8(系统计时器中断),您将得到18.2 Hz的中断。@Michael,嗯,Int 8的最小延迟可以是55ms,或者我可以生成小于55ms的延迟?您可以写入端口0x40和0x43以更改计时器预标量,这会改变频率(参见示例)。关于在Kris Heidenstrom的DOS下PC系列上计时的所有内容:以及使用定时器中断(默认值为18

谁能给我一些建议,我如何实现简单易用的ASM延迟? Nop是不好的方式,因为它依赖于CPU。
Int 15h函数86h也很糟糕,因为它正在阻止其他中断(如09h)。

钩住中断8(系统计时器中断),您将得到18.2 Hz的中断。@Michael,嗯,Int 8的最小延迟可以是55ms,或者我可以生成小于55ms的延迟?您可以写入端口0x40和0x43以更改计时器预标量,这会改变频率(参见示例)。关于在Kris Heidenstrom的DOS下PC系列上计时的所有内容:以及使用定时器中断(默认值为18.2)和我们自己的临时ISR来进行测量,切换所选寄存器的值,我们使用该值作为一个标志来表示一秒钟完成,我们可以让我们的主例程执行一个循环,其中包含混合指令(非常简单的形式为64个nop),另外还可以使用一个计数器来计算我们在一秒钟内完成了多少次循环,因此我们可以使用该计数器的倍数为不同的快速CPU执行延迟。(将计时器int切换回其以前的矢量地址。)