我打算制作一个时钟。一个实际的时钟,不是 Windows 的时钟。但是,我希望现在能够编写大部分代码。我将使用 PIC16F628A 来驱动时钟,它有一个我可以访问的定时器(实际上,除了内置的时钟之外,它还有 3 个)。不过Windows好像没有这个功能。这使得制作时钟有点困难,因为我需要知道已经过去了多长时间,以便更新当前时间。所以我需要知道如何在 Windows 中获取脉冲(1Hz、1KHz,只要我知道它有多快就没关系)。
最佳答案
Windows 中有许多可用的计时器对象。对于您的目的来说,最容易使用的可能是多媒体计时器,但它已被弃用。它仍然可以工作,但 Microsoft 建议使用一种新的计时器类型。
我建议使用 threadpool timer如果您知道您的应用程序将在 Windows Vista、Server 2008 或更高版本下运行。如果您必须支持 Windows XP,请使用 Timer Queue timer .
这些 API 有很多内容,但一般使用非常简单。我在文章 Using the Windows Timer Queue API 中展示了如何使用它们(在 C# 中) 。代码主要是 API 调用,因此我认为您在理解和转换它时不会遇到困难。
LARGE_INTEGER只是一个 8 字节的内存块,分为高位部分和低位部分。在汇编中,您可以将其定义为:
MyLargeInt equ $
MyLargeIntLow dd 0
MyLargeIntHigh dd 0
如果您想学习 ASM,只需在 Google 中搜索 [x86 汇编语言教程]。这将为您提供大量有用的信息。
关于windows - 如何在 win32 汇编器(特别是 nasm)中获得脉冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592572/