我有以下代码。
#include<iostream>
using namespace std;
int main() {
int result=0;
_asm {
mov eax,2
mov eax,result;
}
cout<<result<<endl;
return 0;
}
我知道汇编程序很好,但为什么程序不输出2到屏幕?
答案 0 :(得分:9)
这一行错了:
mov eax,result;
应该是
mov result,eax;
答案 1 :(得分:8)
我不知道汇编程序,但你正在做:
mov eax,2;
mov eax,result;
是不是将2移动到eax,然后导致eax, 你不想要
move eax, 2;
mov result, eax;
答案 2 :(得分:2)
在用C编写任何汇编代码之前,将代码写入C中的一个小函数中,并告诉编译器打印汇编列表。这将告诉您编译器如何生成汇编代码并为您提供一个示例。通常,汇编代码显示了如何传递参数和返回值。
根据我的经验,汇编代码最好用汇编语言编写在一个单独的模块中。我很少在C中使用汇编代码。我会让编译器为我生成汇编代码。有时,我变得痴迷并转换功能以针对特定处理器进行优化。例如,我重写memcpy
已优化以使用ARM处理器的特殊功能(在研究了编译器提供的低效版本之后)。
建议:
答案 3 :(得分:1)
#include<iostream>
using namespace std;
int main()
{
int result=0;
//the assembly code below do the same as: result = 2;
_asm
{
mov $2,%eax
mov %eax, result
}
cout << result << endl;
//main() returns 0 to tell the operating system that
//the program executed without problems.
return 0;
}
答案 4 :(得分:1)
正确的语法是
MOV Destination, Source