gpt4 book ai didi

windows - 与时间相关的中断在 Windows 中的汇编程序中不起作用?

转载 作者:可可西里 更新时间:2023-11-01 10:21:05 25 4
gpt4 key购买 nike

我想用汇编语言创建一个延迟几秒钟的小程序。

我使用的是 Windows XP SP3,打开 DOS 窗口,然后运行 ​​debug.exe

我在那里输入了这个简短的汇编程序:

MOV CX,3D

MOV DX,0900

MOV AH,86

INT 15

中断 15h 中的功能 86h,执行延迟,延迟的持续时间以 CX、DX 为单位,以微秒为单位。

所以如果我想延迟 4 秒,那么它是 4,000,000microseconds = 3D0900h,这就是我在 CX,DX 中输入的内容。

运行这个短程序,不幸的是没有执行任何延迟,它立即退出。

然后我尝试了另一个中断函数:

函数号 0,在中断 1Ah 中,将 PC 的时钟计数返回到 CX,DX。每个刻度为 1/18.2 秒。

然后我输入并运行了这个短程序:

MOV AH,0

INT 1A

但不幸的是,运行后CX和DX都等于0000h。

2 个与时间相关的中断在 Windows 中不起作用是否有原因?似乎其他中断确实有效..

有什么我可以做的让它们工作,这样我就可以实现我想写的小延迟程序吗?

谢谢

最佳答案

Omer,我在 CodeReview 上找到了一个很好的解决延迟问题的方法。
它直接使用地址为 0040h:006Ch 的 BIOS 计时器滴答变量,而不是通过 int 1Ah 上的函数 00h 询问它的值。

请看一下 https://codereview.stackexchange.com/questions/101035/a-low-tech-approach-to-measuring-game-speed

关于windows - 与时间相关的中断在 Windows 中的汇编程序中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com