使用中断减慢程序(在c和汇编语言中)

使用中断减慢程序(在c和汇编语言中),c,assembly,interrupt,x86-16,dosbox,C,Assembly,Interrupt,X86 16,Dosbox,我想根据以下条件使用中断来降低程序的速度: 如果我按键盘上的向上箭头,速度会提高 如果我按下键盘上的向下箭头,速度会降低 我想通过使用中断来实现这一点:如果速度降低,我将屏蔽更多的中断,如果速度提高,我将取消屏蔽中断。 我知道如何访问键盘中断以及屏蔽和取消屏蔽中断。 我只是不知道如何达到程序的速度。 我正在用c和汇编语言编写代码。您可以做的一件事是拦截其中一个中断,例如BIOS时钟滴答声int08h或(更好的)MS-DOSint1Ch处理器在大约18赫兹的频率下调用。然后根据由某些键盘事件控

我想根据以下条件使用中断来降低程序的速度:

  • 如果我按键盘上的向上箭头,速度会提高
  • 如果我按下键盘上的向下箭头,速度会降低
我想通过使用中断来实现这一点:如果速度降低,我将屏蔽更多的中断,如果速度提高,我将取消屏蔽中断。
我知道如何访问键盘中断以及屏蔽和取消屏蔽中断。
我只是不知道如何达到程序的速度。
我正在用c和汇编语言编写代码。

您可以做的一件事是拦截其中一个中断,例如BIOS时钟滴答声
int08h
或(更好的)MS-DOS
int1Ch
处理器在大约18赫兹的频率下调用。然后根据由某些键盘事件控制的变量添加浪费时间的循环

确保在每次延迟之前重新启用中断

在程序结束时,您负责恢复原始中断向量


如果不调整仿真,程序的速度就不能超过其启动速度。

您是为什么体系结构和操作系统编程的?我不确定我是否理解您的意思,我是在dos boxdosbox中编程的。Dosbox意味着仿真。您正在询问如何配置dosbox以通过按键改变速度?您正在使用模拟器。速度调节是仿真器的重点,特别是dosbox。dosbox已经具有选择CPU速度的功能。虽然可以通过引起人为中断风暴来实现CPU减速,但只需配置仿真器就容易多了。可以使用Ctrl+F11和Ctrl+F12调整DOSbox的速度。