拈花小仙 发表于 2014-4-5 12:45:54

内联汇编是纯汇编吗?

本帖最后由 拈花小仙 于 2014-4-5 16:08 编辑

       我学汇编只学了十几天,看了看王爽的前11章,内联汇编没有伪指令吗?我想学跨平台的nasm,学了这个能看懂VC的反汇编代码吗?能写VC的内联汇编吗?nasm和masm有什么区别,只是伪指令不同吗?其它的汇编语法都相同吗?

青玄 发表于 2014-4-5 12:45:55

内联汇编是指将汇编代码嵌入到其它语言中进行编译。

如C++:

int a = 0;
而纯汇编是面向机器的程序设计语言。
在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。
而内联汇编是没有伪指令的;
学了8086汇编以后再了解一下win32汇编,就应该能看懂反汇编了,只要你学好的话,到时候应该写内联汇编;
nasm是跨平台的开源工具,功能相比MASM很薄弱。所以在Windows平台下面不太好用。Unix/Linux平台下面倒是很有些用户群了。MASM可以编写Windows程序,支持宏,一直随着Visual Studio的更新而更新,支持最新的64位操作系统,用起来也比较方便,但是学习资料很少。它主要用来对VC++写的程序进行局部调优。它只是伪指令不同,其它的汇编语法基本是相同的,建议你还是学masm;因为它比较好学一点!

__asm{ mov eax,a }

wiliam 发表于 2014-4-5 13:52:19

我写了个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]
查看完整版本: 内联汇编是纯汇编吗?