为什么要C和汇编混合编程?

大家都知道单片机(或者DSP、ARM)C语言编程时常加入一些汇编语言,请问为什么要这样呢?我想这肯定体现了C和汇编各自的特点,希望各位高手具体谈谈,谢谢!

依我的看法,上面两位说的都不对:
一楼:汇编语言是低级语言直接往硬件的寄存器里写入东西:
其实C语言和汇编语言都一样,都会编译成二进制文件机器语言烧录到单片机中,所以没有一楼所说的区别

二楼:在C中也不会有数据损失的,如果你定义好数据类型的话。

单片机中是将C编译成汇编,然后根据汇编编译成机器语言---可执行文件;
其实单片机中经常在C中嵌入汇编,主要是因为时间的关系,因为一条汇编语言执行的时间都是可以知道的,而C指令执行的时间是不可知的,因为C编译器不一样,编译后的汇编也是不一样的,如果用汇编就不会有这种情况。所以在一些精确延时的场合,要嵌入汇编
另外,C的可移植性较强,不同的单片机里,功能要求相同的可以直接拿去用
总之,汇编是程序员可以自己翻译成机器语言的,所以单片机的运行是可以完全掌握的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-24
单片机里能混合着用的吗?我只知道用C和用汇编去编同一个程序的区别只在于汇编跟细致,比C细致很多。但是工作量太大。C的好处就是工作量小,但是C在翻译到机器语言的过程中不够精细。原因是语言间转化的时候,数据的精确度会有很大的损失。举个例子:如果我有个数据是1.77777.C在转化的时候,可能只留下1.7这个数据。而汇编可以完全保留下来。当然这只是个例子。数只是我瞎举的。意思就是这样。所以在单片机中区分到底是用C还是汇编取决于你要做的工程的大小和所要达到的精确程度。我没参考资料,是上选修课的时候老师说的。不知道对你有没有用。
第2个回答  2008-09-26
C编程的可读性和移植行比较好

某些需要实时的地方或者空间紧张的地方用汇编
第3个回答  2008-09-23
汇编语言比c语言在操控硬件时,运行速度快!
因为汇编语言是低级语言直接往硬件的寄存器里写入东西