找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2392|回复: 6
打印 上一主题 下一主题
收起左侧

C语言和汇编语言在单片机开发中,各有什么优缺点?

[复制链接]
跳转到指定楼层
楼主
ID:645244 发表于 2019-11-19 18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手,求教谢谢大佬们

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:263427 发表于 2019-11-19 20:04 | 只看该作者
您好,两个语言的区别如下:
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

在实际开发中,现在基本都是用c语言,支持比较好。其次汇编比较难,新手入门比较困难。我的建议是先用c语言,等到后期了可以了解一下汇编,因为做启动代码的时候还的用。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:263427 发表于 2019-11-19 21:47 | 只看该作者
您好,下面这个是我从论坛里面找出来的精华帖。你可以参考参考。

C与汇编:

C:经编译后,成汇编。
汇编:是自己“完成”了C的工作。

C:是从通用化出发的,考虑了单片机的特点,极大地减少了人为的错误与不合理。
汇编:因人为异,有许多技巧是C无法做到的,所以汇编更灵活,不过这建立在精通的基础上。汇编稍有不小心就会出错,要命的是:不易察觉。

C:由于通用,C只能按部就班,因此程序长,重复多,运行时间多。
汇编:因灵活程序方式,可以节省内存,节省运行时间。
通常,汇编程序会比C少用内存及时间在30%以上。但大多数情况下,内存现在不是问题了,时间也不会太紧。所以节省内存与时间的意义不大,但也有特例。

说明一下:
C是用堆栈传递参数的,但每次参数要弹出压入,所以传递时有多花一点时间。汇编传递参数直接到达目标,快多了。
C一个子程序一个包。而汇编的一个子程序可以切入跳转另一个子程序中,以节省内存。

特别的一个实例:时间内存要求高的项目(前提:用51单片机):
16*64的LED点阵显示 + 14个LED数码管显示 + 中文汉字显示处理 + 无线收发 + 生产记录(计划、产能、次品、待产)+ 年月日精确时间(普通晶振,日差小于一秒)。
单就解决显示的扫描闪动(驱动显示1136个LED段,不得不分8次扫描,1136个点时刻会变,要占的内存多,显示处理时间多),程序运行需要时间(汉字解码+无线通讯+时钟+扫键……)。
解决扫描显示的闪眼与程序任务多,在时间上的矛盾尤其特出,必须精心策化。这时用C来策化就捉襟见肘了,因为C本来就耗时。

C的优势:
1、用汇编需用很强的优化寄存器及内存的能力,用C的好处是,不需要你去考虑这些复杂的问题,使得编程简单。
2、 C出错的机率远小于汇编,汇编稍有不小心就会出错,要命的是:不易察觉。
3、 C有团体合作的优势, 这是 C的特点,便于交流。如果是汇编,很难与他人交流。
4、 对于运算程序, C已有前辈们做好了运算库,很难想像一般人能用汇编去:开方、三角函数(当然,也可以让C先编译,再做成汇编的库)。
5、 C 有庞大的公用程序库(子程序),这对于程序量大的程序更有优势。汇编的程序库多为个人积累,很难得到。

其实C只有一个优点!看一下单片机程序结构就明白了:
单片机程序通常结构:1硬件初始化、2软件参数初始化(含内存安排)、3主程序(事件处理)、4中断程序。
汇编:以上一切由你处理,除非你已获得了很多相关的汇编数据库。
C:在你未写程序之前已为你做了什么?
1、硬件初始化,C仅能做很少的部分。(注:这就是为什么在做硬件时你总是要一行行慢慢写的原因,与汇编比几乎没有优势)
2、软件参数初始化(含内存安排),C完成其中的大部分,你定义一下就OK了,不用就烦放在哪里,也不会错,错了报警重来。(注:比汇编操心少啊)
3、主程序(事件处理),C有大量的库函数可以调用,可以减少你大部分工作量。(注:比汇编操心少啊)
4、中断程序。调用库的机会不多(注:本人不建议在中断中完成事件处理,而建议尽最大可能只在中断中做一些事件标志!而让事件在主程序中依标志进行处理,因为中断有优先权,处理事件往往需要的时间多,会耽误其它事件的处理,如这时按键就会伪“失灵”)。

可见 C的这个优点是,C能帮你完成程序中的很大一部分工作。(其实是你调用了前辈们已做好的工作,这此工作是:编译器所做的、程序库所做的)

道理很简单:一件事能用工具设备完成的尽量用,无法用时用人工。C就是写单片机程序的一个极好的“工具设备”。

用C的风险在哪里?
一个程序什么都OK了,就缺一些库文件!找又找不到。
如果你会汇编,就可以自己做这个找不到的这个库。

总之C适合大多数的人,汇编仅适用很少的一部分人,但用汇编写程序的人,一定是高手,否则他驾驭不了单片机。
做汇编需要彻底地了解单片机,做C无需要了解到很底层。而要精通单片机,汇编又是最佳手段。

个人建议:所有学单片机的同学学C,C是在大势所趋,也适合绝大多数人。特别是团体作战,未来不是单打独斗的年代!
也建议那些想精通单片机的同学,学好汇编,汇编天马行空,不受库存文件、头文件限制,不受C的规矩。当然不能放弃C。

一但学好了汇编,你再打开你的C编译后的汇编看看,这时就知道缺点在那里,就能提高自己C语言的水平。也能轻松掌握C当中绕人的难点。
回复

使用道具 举报

地板
ID:637250 发表于 2019-11-19 22:59 | 只看该作者
C语言的优点:适用范围广,可移植性强,开发周期短。
缺点:比汇编语言的执行效率低
汇编的优点:执行效率高,能够对CPU中的寄存器直接操作,直接作用于单片机的硬件环境,控制直接,精准,所以要精确控制,时序特别严格的要用汇编语言。
缺点:过分依赖硬件,适用范围窄,不同的机器对应不同的汇编指令,开发周期短,可移植性差,开发周期长。
C语言简单易懂,汇编有c的基础好学一些,个人认为小白先学c语言
回复

使用道具 举报

5#
ID:525068 发表于 2019-11-22 00:24 | 只看该作者
C语言入门简单易上手,比汇编容易
回复

使用道具 举报

6#
ID:625113 发表于 2019-11-23 11:02 来自手机 | 只看该作者
汇编语言执行效率会高一点,但是相对C语言会难学一点
回复

使用道具 举报

7#
ID:398709 发表于 2019-11-23 15:57 | 只看该作者
简单来说就是C语言更容易看,汇编运行效率更高
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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