标题:
C语言与汇编,学什么?
[打印本页]
作者:
yzwzfyz
时间:
2017-2-28 12:39
标题:
C语言与汇编,学什么?
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当中绕人的难点。
作者:
surubu
时间:
2017-3-1 08:21
我的很多朋友劝我学习 c,因为c资源多,移植容易.
作者:
SHIHUI
时间:
2017-3-1 15:51
初学用C好,要想真正领会单片机的秒处,还是弄懂汇编。
作者:
utzuzu
时间:
2017-3-1 17:02
高级语言存在的意义就是解放软件生产力。所付出的代价就是编译,还有一些效率上的损失(现在也可忽略)。为什么还要强调汇编,因为机器只认识汇编,钻到最下面就是汇编。
作者:
minmin123
时间:
2017-3-1 19:39
c吧,c 普遍
作者:
a910669446
时间:
2017-3-1 21:29
鉴于c的广泛还是学c,因为汇编现在不是很普及
作者:
18523297602
时间:
2017-3-1 23:11
建议学C,C简单易懂,精通C后再学汇编
作者:
A080104021008
时间:
2017-3-2 09:37
C语言是基础,汇编是手段!
作者:
crazy_third
时间:
2017-3-2 09:59
从C入手吧,汇编对芯片来说效率高,可苦了写代码的了。
作者:
sxp123123
时间:
2017-3-2 09:59
肯定先学c,毕竟c是主流。汇编只要看得懂就行
作者:
crazy_third
时间:
2017-3-2 10:00
建议C开始,汇编写起来效率太低。
作者:
sxp123123
时间:
2017-3-2 10:00
还是建议学c,汇编语言只要看得懂会简单的用就行了
作者:
shuangxi
时间:
2017-3-2 10:24
我的很多朋友劝我学习 c,因为c资源多,移植容易.
作者:
rapcat007
时间:
2017-3-2 13:34
看专业书和教程比较好 上手快
作者:
ddddddd7
时间:
2017-3-2 13:40
先学好C,后面再大概了解汇编指令就好,汇编就是一个辅助,用的不多。
作者:
ddddddd7
时间:
2017-3-2 13:42
先学好C,后面再大概了解下汇编就好。
作者:
feawerty
时间:
2017-3-2 14:48
新手建议从C学起
作者:
王杰
时间:
2017-3-3 13:28
肯定学习C语言啊,C语言用的广泛,易于移植
作者:
唐大糖
时间:
2017-3-3 13:45
学C吧 C简单 而且够用了
作者:
pdsyonghong
时间:
2017-3-5 11:28
对于90%以上的人C就可以了,做项目很少用汇编的,维护性差,一致性差。原来的成本问题及效率问题,现在基本差异不大了。
作者:
kxryzh
时间:
2017-3-5 13:58
都要学!c移植性好,汇编不可移植,在一些要求高性能的地方必须用汇编优化,用keil,iar都有反汇编工具的,自已写的c直接转为汇编!
作者:
kxryzh
时间:
2017-3-5 14:28
都要学,C移植可读性好,汇编不可移植,在一些需要高性能的场合操作系统内核要用汇编,用编绎器的反汇编工具可以方便的把你写的C转为汇编,方便学习!
作者:
3637320230
时间:
2017-3-6 09:18
xue C 吧,汇编基本没人用了
作者:
liuming8031
时间:
2017-3-6 09:52
这篇文章太好了,精辟。
作者:
wh1264068139
时间:
2017-3-6 10:33
学C语言好 ,一开始学C容易上手,汇编艰涩难懂
作者:
shangdanliula
时间:
2017-3-6 11:01
学习c吧 我就是学习的这个
作者:
samout
时间:
2017-3-6 17:06
还是学C语言吧 不过我学了C#
作者:
血洗无涯
时间:
2017-3-6 20:34
初学c比较实用,资源多,可移植性高
作者:
33的梦想
时间:
2017-3-6 21:22
C啊 汇编会有专门的人去做,这种语言了解就行了,我们可是要干大事的人a
作者:
yxiao12345
时间:
2017-3-6 21:33
之前先学的C,然后学的汇编。觉得起步边用边学,理论结合实际比较好
作者:
guidian
时间:
2017-3-6 22:00
买几本经典的C的书。网上可以百度到基础先打好
作者:
略略略啊实打
时间:
2017-3-8 10:01
建议学习c语言,现在毕竟简单方便
作者:
lijinqiu1987
时间:
2017-3-8 13:27
学c比较实用,资源多,可移植性高
作者:
sencezhang
时间:
2017-3-8 14:19
一般可以先学一些汇编基础,电子专业都会学到,再学c就不叫容易理解
作者:
xiaojincool
时间:
2017-3-8 14:25
先学习C吧,容易上手能够提高学习积极性,先学汇编的话,容易打击积极性
作者:
youyuchao
时间:
2017-3-8 15:18
先C后汇编51黑因你而精彩
作者:
liwanxi
时间:
2017-3-8 15:20
汇编可以点基础,然后去学C,如果没有学汇编,突然学C,对指针理解比较吃力。
作者:
zkf
时间:
2017-3-8 21:58
学习C比较好,效率高,可移植,与硬件无关。
作者:
zhaok2013
时间:
2017-3-9 15:24
先学C吧,C好理解(个人觉得)好入手,会用了在转向汇编
作者:
鱼蛋犯
时间:
2017-3-9 21:50
梳理得挺周全的 给力
作者:
492324317
时间:
2017-3-9 21:58
先学C,汇编我学过,是最底层,如果新手当然推荐C
作者:
137498823
时间:
2017-3-9 22:08
现在单片机一般都是用 C语言写的;很少有人用汇编语言;
作者:
137498823
时间:
2017-3-9 22:09
现在单片机一般都是用 C语言编写的;很少有人用汇编写;
作者:
137498823
时间:
2017-3-9 22:09
介意学 C语言; C语言功能强大;使用范围广 ;
作者:
1842793457
时间:
2017-3-9 23:00
用C比较好入门,但是好的程序离不开汇编语言的加入,比如——Nop()可以实现单片机的精确延时。简单说,汇编与C语言结合会使程序更加高效。
作者:
zkx1119
时间:
2017-3-9 23:11
c,高级语言鼻祖。对以后学其他高级语言有帮助!
作者:
fcb5522
时间:
2017-3-9 23:34
学c,汇编也要能看懂
作者:
wangxiaochen
时间:
2017-3-10 08:05
我建议汇编和c都要学
作者:
侠之大者008
时间:
2017-3-10 09:36
C,应用前景大
作者:
石苔碎见
时间:
2017-3-10 11:07
c好学,好改,汇编现在一般都用学校教学了,没好几人真喜欢用汇编编程
作者:
WZUOZ
时间:
2017-3-11 14:57
C语言吧,感觉汇编能看懂就好吧
作者:
wuliwuli
时间:
2017-3-11 15:38
先学C,再学汇编
作者:
宫本无三四
时间:
2017-3-11 16:04
时代变了,如果不是必须要深究原理,汇编已经远远没有以前那么重要了
作者:
wuzy2006
时间:
2017-3-11 16:17
汇编,你再打开你的C编译后的汇编看看,这时就知道缺点在那里,
作者:
yy123
时间:
2017-3-12 10:23
先学汇编,再学c
作者:
jiyidewang
时间:
2017-3-12 11:07
学c语言有助于以后更好的发展。
作者:
jiyidewang
时间:
2017-3-12 11:09
学c语言更有利于以后的发展
作者:
51hei电子
时间:
2017-3-13 19:30
C语言就可以,能看懂C语言,汇编就交给电脑就可以了
作者:
YuanC
时间:
2017-3-13 19:50
学C语言啊,C是基础,C学会了,其他的编程语言也很容易上手,而且C的应用比较普遍
作者:
caoligang
时间:
2017-3-13 20:50
我这么多年一直用汇编,编制了很多实时性应用程序,对于C反而了解的少,其实汇编用久了,感觉挺好用的!单片机的主要用途就是逻辑运算,我觉得汇编语言足够用了!
作者:
tph512
时间:
2017-3-14 07:58
学C吧 基础普遍一点。我学的是C.
作者:
zhoumiker
时间:
2017-3-14 10:24
C更容易看懂,
作者:
qwersan
时间:
2017-3-14 13:32
我觉得先学c然后再其他的比较好学,c很精髓。
作者:
ahshmj
时间:
2017-3-14 15:03
本帖最后由 ahshmj 于 2017-3-14 15:04 编辑
想真正学懂某一单片机,成为高手,就从汇编开始,想急功近利就从C语言开始。
学好汇编,c就是水到渠成。
作者:
这么近那么远
时间:
2017-3-14 15:25
学c语言 必学的
作者:
callme歌神
时间:
2017-3-14 16:05
當然學c啊,基礎語言
作者:
ruan1994
时间:
2017-3-14 16:19
学C吧,C应用目前较为广泛,况且C都学会了,汇编学起来也更容易。。。
作者:
wangzeqing
时间:
2017-3-14 16:41
感觉都要学,一个高级和一个低级,理解的层面不一样
作者:
mq-zlm
时间:
2017-3-15 09:08
学习C语言比较好
作者:
如梦往昔
时间:
2017-3-15 16:02
建议学c,汇编能看懂就可
作者:
风散炊烟
时间:
2017-3-15 16:49
新手建议从C学起。
作者:
d44564565
时间:
2017-6-27 09:57
利用编码驱动单片机
作者:
d44564565
时间:
2017-6-27 09:57
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当中绕人的难点。
作者:
123123124124
时间:
2017-6-27 11:32
建议学习C,应用更广一些
作者:
iderbao
时间:
2017-6-27 13:35
目前都是先学C吧,毕竟好理解些
作者:
iderbao
时间:
2017-6-27 13:36
先学C吧,感觉好理解些
作者:
liang_li
时间:
2017-6-27 14:05
C语言啊 C是用的最多的 汇编现在用的很少很少的 基本用不到的
作者:
1195705446
时间:
2017-6-27 14:25
都学啊
作者:
2057312150
时间:
2017-6-27 15:19
C语言啊 简单易懂
作者:
c4882632
时间:
2017-6-27 15:21
建议先学习汇编,因为每个启动文件都需要用汇编来写,学了汇编,再学C语言就不难了
作者:
506690683
时间:
2017-6-27 15:53
高级语言存在的意义就是解放软件生产力。所付出的代价就是编译,还有一些效率上的损失(现在也可忽略)。为什么还要强调汇编,因为机器只认识汇编,钻到最下面就是汇编。
作者:
netwanderer
时间:
2017-6-27 16:01
对于单片机而言,汇编更好理解,但效率比C低,可移植性差一些。
作者:
netwanderer
时间:
2017-6-27 16:01
对于单片机而言,汇编更直观,C可移植性更好。
作者:
580010
时间:
2017-6-27 17:50
现在正在学汇编,觉得汇编对于单片机内部寻址理解有很大帮助
作者:
DARIUS
时间:
2017-8-31 16:55
先学c吧,毕竟c是基础,要简单一些,个人感觉也比较好用。
作者:
zhaozhaomumu
时间:
2018-4-9 16:35
上课学单片机的时候老师讲的是汇编。
作者:
疯狂de黑曼巴
时间:
2018-4-9 21:16
学C吧
作者:
ccy751001
时间:
2018-4-9 21:23
C语言是基础,汇编是手段!
作者:
Brandon98
时间:
2018-4-9 22:10
C适合初学者
作者:
kkwon001
时间:
2018-4-9 22:30
想学单片机时,C语言和汇编都是必不可少的了
作者:
p2p
时间:
2018-4-9 22:51
我觉得先学c然后用着用着在学汇编
作者:
HOLI
时间:
2018-4-9 23:13
SHIHUI 发表于 2017-3-1 15:51
初学用C好,要想真正领会单片机的秒处,还是弄懂汇编。
赞同。。。。。。
作者:
zzz10132624
时间:
2018-4-10 08:53
学c比较好
作者:
wuxianyun
时间:
2018-4-10 09:46
必须是C啊,现在编译器都这么强大,汇编真心没必要专门学习,弄懂其中原理就行了
作者:
LGH850
时间:
2018-4-10 10:09
学C吧!通用性强一点!建议学C!
作者:
kimking1996
时间:
2018-4-10 10:32
大学里面都是先学c作为基础的。。
作者:
liudom
时间:
2018-4-10 10:50
还是看教程吧,上手快
作者:
lllkjldkfjkl
时间:
2018-4-10 10:53
C呀,找工作好找
作者:
lllkjldkfjkl
时间:
2018-4-10 10:53
C呀,好找工作
作者:
佐佐木
时间:
2018-4-10 11:07
学学51玩玩
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1