0

我运行这段代码,它是从一个只接受整数 num1 和 num2 的输入并将它们传递给 sum.asm 的 C++ 程序调用的。我得到错误: A2022:指令操作数在 sum.asm 第 5 行 MSB3721 中的大小必须相同:命令 "mI64.exe/c/nologo /Zi/Fo "x64\Debug\sum.obj" /W3 /errorReport: prompt /Ta" ......\OneDrive\Documents\sum.asm"" exited with code 1. in masm.targets line 70

我尝试更改 mov rax, eax 为, movq rax, [eax] 因为我看到这就像我的另一个问题的答案之一,但它给了我另一个错误,说它不是正确的语法

主.cpp:

#include <iostream>

extern "C" int sum (int num1, int num2);

int main() {
int num1, num2, answer;

std::cout << "Enter num1:" << std::endl;
std::cin >> num1;
std::cout << "Enter num2:" << std::endl;
std::cin >> num2;

answer = sum(num1, num2);

std::cout << num1 << "+" << num2 << "=" << answer << std::endl;

return 0;
}

总和.asm:

_sum PROC
mov eax, ecx
add eax, edx
mov rax, eax
ret
_sum ENDP
END

This is just supposed to add the 2 numbers passed in from the main c++ project and then return the sum.
4

1 回答 1

0

我想到了。我刚刚将行:更改 mov rax, eax 为: lea rax, [eax] 我只是为项目的目标文件获得了一个未解析的外部符号。有谁知道如何解决这个问题,因为 MASM 部分现在正在工作?

于 2019-07-23T21:18:10.767 回答