我有以下代码。
#include<iostream>
using namespace std;
int main() {
int result=0;
_asm {
mov eax,2
mov eax,result;
}
cout<<result<<endl;
return 0;
}
我很了解汇编,但为什么程序不将 2 输出到屏幕上?
我有以下代码。
#include<iostream>
using namespace std;
int main() {
int result=0;
_asm {
mov eax,2
mov eax,result;
}
cout<<result<<endl;
return 0;
}
我很了解汇编,但为什么程序不将 2 输出到屏幕上?
这一行是错误的:
mov eax,result;
应该
mov result,eax;
我不知道汇编,但你正在做:
mov eax,2;
mov eax,result;
这不是将 2 移到 eax,然后将结果移到 eax,你不想要吗?
move eax, 2;
mov result, eax;
?
在用 C 编写任何汇编代码之前,在 C 中的一个小函数中编写代码并告诉编译器打印一个汇编列表。这将告诉您编译器如何生成汇编代码并为您提供一个可以使用的示例。通常汇编代码显示参数和返回值是如何传递的。
以我的经验,汇编代码最好用汇编语言写在一个单独的模块中。我很少在 C 中使用汇编代码。我会让编译器为我生成它。有时,我会变得痴迷并转换功能以针对特定处理器进行优化。例如,我重写了memcpy
优化以使用 ARM 处理器的特殊功能(在研究了编译器提供的低效版本之后)。
建议:
正确的语法是
MOV Destination, Source