鱼C论坛

 找回密码
 立即注册
查看: 1562|回复: 2

内联汇编是纯汇编吗?

[复制链接]
发表于 2014-4-5 12:45:54 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 拈花小仙 于 2014-4-5 16:08 编辑

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

最佳答案

查看完整内容

内联汇编是指将汇编代码嵌入到其它语言中进行编译。 如C++: int a = 0; 而纯汇编是面向机器的程序设计语言。 在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。 而内联汇编是没有伪指令的; 学了8086汇编以后再了解一下win32汇编,就应该能看懂反汇编了,只要你学好的话,到时候应该写内联汇编; nasm是跨平台的开源工具,功能相比MASM ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 }

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 [c],EAX
POP EBX
POP EAX
}
printf("%d\n",c);
system("pause");
return 0;
}

评分

参与人数 1鱼币 +2 收起 理由
拈花小仙 + 2 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-27 07:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表