2013-02-16 71 views
0

如何在x86中使用int 8 [在win xp中使用masm]来系统在秒内[暂停]不执行任何操作? 或其他任何int或代码?16位程序集系统如何暂停几秒?

+0

什么操作系统?调用您的OS Sleep()API,可能会传递DWORD 16000。 – 2013-02-16 13:24:09

+0

如何在win xp中使用此api? – 2013-02-16 13:36:49

+1

@MartinJames:他将无法在16位系统中做到这一点。 – Seki 2013-02-16 15:58:03

回答

2

有在DOS程序两种常用方法:

  • 计数的4字节计数器中的地址40H的变化:6CH。计数器每55毫秒增加一次。
  • 为int8(IRQ0,定时器中断)安装您自己的中断处理程序并计数中断。从你的ISR你应该打电话给原来的,所以系统的其余部分按预期工作。

后一种选择在Windows下可能更可靠。

+0

我不知道如何实现第二种方式!多次比较也会对CPU使用率产生影响? – 2013-02-17 06:05:03

+0

因此,了解中断。显然,每个执行的指令都使用CPU。 – 2013-02-17 06:12:39

+0

在第一种实现方式中CPU正常使用率为50%? – 2013-02-17 06:35:55