windows - 如何在 win32 汇编器(特别是 nasm)中获得脉冲?

标签 windows assembly nasm

我打算制作一个时钟。一个实际的时钟,不是 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/

相关文章:

debugging - 当不存在符号信息时,如何使用 GDB 为 x86 程序集设置断点?

assembly - NASM x86_64 printf 第 7 个参数

c++ - QSerialPort 在具有特定设备的 Windows 上无法正常工作

c++ - 我可以在不锁定包含该文件的文件夹的情况下在 C++ 中读取 Windows 中的文件吗

windows - 如何让 Windows CMD ECHO 准确地回显一个字符?

assembly - 为什么表达式 `10 + 32` 不使用堆栈而 `10 + -32` 使用堆栈?

windows - 文件句柄上的 WaitForSingleObject?

c - 如何将 C 函数放入某个地址范围

c++ - 为什么数组访问和指针算术不等同于完全优化?

c - NASM 32 位 : printing content of register by printf