1

我在 tasm 有这个代码

mov ah,00h
int 21h

cmp ah,3Bh

考虑到它是一个基于 dos 的应用程序,它工作得很好(我们可以看到它使用了相当老的中断)。现在的问题是,win32/系统调用相当于从键盘获取扫描码是什么?基本上,当用户按下 F1 键(扫描码为 3Bh)时,它会在 AH 寄存器中注册。我们如何通过系统调用在 win32 程序集中实现这一点?(带有 extrn、kernel32 dll 等的那个)我正在使用 NASM

4

1 回答 1

1

对于控制台模式程序,32 位汇编代码最有可能的来源,它是ReadConsoleInput()。GUI 应用程序从 GetMessage() 返回的 WM_KEYDOWN 和 WM_CHAR 消息中获取击键。但当然,您永远不会在汇编中编写 GUI 应用程序,这没有任何意义。

从 C 运行时库调用 _getch() 可能是最简单的方法,它是一个返回 int 的简单函数。

于 2013-02-27T18:45:53.020 回答