内联汇编是纯汇编吗?
本帖最后由 拈花小仙 于 2014-4-5 16:08 编辑我学汇编只学了十几天,看了看王爽的前11章,内联汇编没有伪指令吗?我想学跨平台的nasm,学了这个能看懂VC的反汇编代码吗?能写VC的内联汇编吗?nasm和masm有什么区别,只是伪指令不同吗?其它的汇编语法都相同吗? 内联汇编是指将汇编代码嵌入到其它语言中进行编译。
如C++:
int a = 0;
而纯汇编是面向机器的程序设计语言。
在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。
而内联汇编是没有伪指令的;
学了8086汇编以后再了解一下win32汇编,就应该能看懂反汇编了,只要你学好的话,到时候应该写内联汇编;
nasm是跨平台的开源工具,功能相比MASM很薄弱。所以在Windows平台下面不太好用。Unix/Linux平台下面倒是很有些用户群了。MASM可以编写Windows程序,支持宏,一直随着Visual Studio的更新而更新,支持最新的64位操作系统,用起来也比较方便,但是学习资料很少。它主要用来对VC++写的程序进行局部调优。它只是伪指令不同,其它的汇编语法基本是相同的,建议你还是学masm;因为它比较好学一点!
__asm{ mov eax,a }
我写了个c 内联汇编的例子吧 拿出来献丑了
#include<stdio.h>
#include<windows.h>
int main()
{
long a,b,c;
printf("请输入你想相加的数");
scanf("%d",&a);
printf("请输入你想相加的数");
scanf("%d",&b);
_asm{
PUSH EAX
PUSH EBX
MOV EAX,a
MOV EBX,b
ADD EAX,EBX
MOV ,EAX
POP EBX
POP EAX
}
printf("%d\n",c);
system("pause");
return 0;
}
页:
[1]