我正在使用 TASM 编译的 DosBox 模拟器(在 Windows7 上)上运行 Assembly x86 代码。到目前为止,在我的代码中,我只使用嵌套循环来延迟代码,但现在我正在以不同的循环速率运行我的代码,我发现这不是最好的解决方案。在网上搜索代码示例或中断如何创建计时器并使用它而不是嵌套循环是没有用的,我只在维基百科上看到了一些关于我不理解的称为 PIT 的模糊示例。
有人可以提供一个有效的代码示例来说明如何做到这一点吗?谢谢!
编辑
我尝试使用此代码使用 int 21h 中断进行延迟,但由于某种原因,它比预期的 20 1/100 秒慢得多。也许这可以修复?
redo: mov ah, 2ch
int 21h ;MILIS IN DL ;BUG HERE -> FIX TIMER
cmp dl, 79
jnc redo
mov milis, dl
loop1: mov ah, 2ch
int 21h
sub dl, milis
cmp dl, 20
jc loop1