我在 MASM32 Assembly 中写了一个作业,我几乎完成了它,但我有 2 个问题我似乎无法回答。首先,当我编译时,我收到消息:
INVOKE 需要程序原型
&
无效的指令操作数
首先是由于这段代码:
.data?
Freq DWORD ?
Time1 DWORD ?
Time2 DWORD ?
.code
start:
invoke QueryPerformanceFrequency, addr Freq
invoke QueryPerformanceCounter, addr Time1
现在,我知道了
INVOKE 指令必须在被调用过程的 PROTO 语句之前。
但即使我发现了 PROTO 语句的语法:
label PROTO [distance] [langtype] [,[parameter]:tag]
我不明白我应该写什么才能使它工作,我什至不知道是什么导致了第二个错误或如何修复它......=/
编辑
我已经有了这些库,还有这些:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
我在 Windows Vista 下工作,以防万一也有帮助。
编辑 2
如果我在 .data 之后写 Freq :QWORD 我会收到以下错误消息:
使用假定为 ERROR 的寄存器
还有我应该在哪里添加
QueryPerformanceCounter PROTO :DWORD
据我所知,这没有出错,但我仍然不确定是否有任何更改(我将它放在 .data 之前和库之后)。