2 xuewang1 XueWang1 于 2016.09.15 14:35 提问

汇编初学,简单C语言翻译为汇编语言

main()
{
int i, n, f; //对于输入的n,该如何在数据段分配呢?
// int i 我是这么写的: i,dd,2 ;请问这里如何获取 i 的地址呢

input(n);   _//这句不知道如何实现_
i = 2;
f = 1;
while (i <= n)
{
    f = f * i;   _//计算 f * i 后,在寄存器EAX中,但是如何存入变量 f 呢_
    i = i + 1;
}
print(f);   //输入、输出需要调用函数,但是不明白如何做

}

以上是C代码,用的masm32,求问翻译成汇编是什么样的?一些问题已经注释。
给出汇编程序也好,简单的解释一下也好,只求弄懂~
先在此感谢

2个回答

caozhy
caozhy   Ds   Rxr 2016.09.15 23:49

直接在vc++里调试程序,然后切换到反汇编(disassembly)面板,可以看vc++编译器生成的机器码对应的汇编。

XueWang1
XueWang1 反汇编如何处理呢,不会用,而且这个也要求手动翻译
接近 2 年之前 回复
zdi1997
zdi1997   2016.09.19 13:06

函数里的局部变量是好像是用堆栈保存的并不是直接 i dd 2

XueWang1
XueWang1 主函数也必须放在堆栈里吗?这个我就这么写的,而且已经成功输出了。但是不知道还有这个要求……
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
一段汇编代码翻译成c语言的练习
题目是这样的:有一个函数原型为void decode1(int *xp,int *yp,int * zp);函数的编译成汇编代码后如下:1    movl 8(%ebp),%edi2    movl 12(%ebp),%ebx3    movl 16(%ebb),%esi4    movl  (%edi),%eax5    movl  (%ebx),%edx6    movl  (%esi),%ecx7    movl  %eax,(%ebx)8    movl  %edx,(%esi)9    movl
非常简单的汇编翻译器
上周一直在做一个学校的比赛,题目就是写一个翻译器把C代码翻译为汇编代码。 我设计思路是把C代码读入后,按“;”分割为语句然后识别关键词来分别变量和变量的赋值。最后发现我整个都在做对字符串的处理。也发现了自己很多原来忽略的地方。 函数关系图 思路图 因为学校要求只提供一个源文件所以我所有代码都写一起了比较丑陋。而且其中越写脑洞越大很多代码都是无用的- -。真正完成题目估计300行即可。//
linux下C语言编译为汇编代码
linux下将C语言编译为汇编代码,需用-S参数,如下代码 void fun(int a,int b) { /*这个函数什么也不做*/ } int main(void) { fun(100,200); return 0; } 编译命令为: $ gcc -S s1.c 编译后的结果为: 1 .file
根据c语言程序转换成汇编程序
gcc编译器可以将c语言程序转换为对应的汇编程序,只要在编译时候添加-S选项即可: gcc -S main.c    这时候会默认生成main.s汇编程序文件。
C语言源文件到汇编语言的编译
这是我们经常写的最简单的程序: #include int main() { printf("Hello,world!\n");     return 0; } 在我们使用gcc指令来编译C语言源文件的时候,在命令行输入下面命令: [root@localhost kangkang]# gcc -o hello hello.c   //#编译C代码生成目标文件为hello。
经验 初学51单片机用汇编语言还是C语言
       慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。新手学习51单片机用C语言,因为使用C语言入门的话,上手速度快,只要乐趣找到了,就会觉得单片机很有意思,才有继续学习的动力。入门之后,继续深造的话,那么汇编是要学习!Keil软件优秀,值得推荐。注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变...
C学习笔记(一) C语言和汇编语言的区别
C学习笔记(一) C语言和汇编语言的区别   C语言和汇编语言的区别: 汇编:效率高,对硬件的可操控性更强,体积小,不易维护,可移植性很差  C:效率比较低,硬件可操控性比较差,目标代码体积大,容易维护,可移植性很好     汇编语言运行效率高的原因:(转载) 1.  汇编语言实质上是机器语言的助记符。 CPU只能运行它所支持的指令集,而这些指令集当中的每条指令都是一些二进制
高级语言为什么不直接编译成机器码,而编译成汇编代码?
高级语言为什么不直接编译成机器码,而编译成汇编代码?
c语言编译汇编过程
先写一个程序: /*game.c*/ #include #include #include #define II 199 #define LL 2000 typedef struct { int a; float b; }double_data; int main() { printf("Hello world\n"); printf("II is %d
实践!C语言是怎么变成汇编的
在大学计算机组成原理一课中学习各种汇编语言跟C语言的关系,同时在单片机接口技术中也学习了C51的汇编语言,在一些MCU调试中也看到了反汇编的内容。但是从来没亲自实践一下C语言是怎么变成汇编的过程 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”