2013-02-16 69 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