3可移植性C语言比汇编语言可移植性强,程序可读性比汇编语言好 。学习SCM不一定要精通汇编,但是对汇编有一定的了解对学习SCM是有帮助的 。只有在需要某些功能时,才能正确使用汇编 。第三,学汇编不是没用 。1.大学学习汇编有助于理解单片机系统架构、指令集、寄存器寻址等知识点,也促进了C语言中指针的使用 。
单片机用C语言编程很好学,为什么还要用汇编呢?
C语言是发展趋势,汇编可以帮助学生熟悉单片机内部结构 。首先汇编语言和C语言都是编程语言,汇编是一种机器语言直接面对底层,与单片机底层硬件构架息息相关,相对于C语言,是一门低级语言,C语言面向过程的语言,在编译执行会转为汇编在生成单片机可执行文件,是一门高级语言,两种语言各有优缺点 。一,C语言/汇编优缺点,
1学习难度 。汇编因为的理解难度和开发难度比C语言大,所以学习难度大,都是对寄存器操作,学习汇编就要学习这个单片机的硬件结构和基本组成、存储器访问方式、单片机I/O操作时序、定时计数器、中断处理、指令系统、寻址方式等知识点;而且每个系列芯片的内部寄存地址和寄存器都有差异,维护起来也十分困难,2执行效率汇编实时性比C语言好,占用单片机资源少,生成的执行文件更小,汇编语言程序直接被转换成机器指令 。
而C语言编译过程会先形成汇编,在转为机器语言,3移植性C语言比汇编移植性好,程序可读性比汇编要强 。实现相同功能,C语言的代码数量会比较短,对于汇编来说,每一种单片机汇编语言都不一样,所以移植性差 。C语言通过结构体,指针映射寄存器地址,当有需要时候,只需要简单更改寄存器地址,或者更改寄存器定义,即可满足程序和工程的移植,
4,调试C语言调试方便,例如STM32开发过程中,可以使用jlink通过SWD进行在线仿真,调试各语法,语句执行情况,还可以查看各变量值的变化,很容易就能定位到BUG问题 。而汇编调试困难,很多时候难以很快定位问题,二,单片机开发不一定都能用C语言单片机在上个世纪七十年代开始出现,早期都使用汇编语言进行开发,随着技术的发展进步,制程工艺快速提升,单片机的处理速度越来越快,很多单片机的开发环境都使用C语言编译,生产二进制文件 。
但因产品BOM成本要求,很多的低端单片机还是OTP一次性烧录,程序空间小,许多的型号,还是在用汇编进行开发,如义隆,松翰等,三,学习汇编并不是无用1,大学时学习汇编,有助于理解单片机系统构架,指令集,和寄存器寻址等知识点,也促进对于C语言的指针的用法 。2,目前的linux开发的部分底层bootload文件,或stm32的.s启动文件就是使用汇编语言的文件,都使用汇编进行底层引导,
修改堆栈,或者程序起始运行的位置,都需要在对应文件中修改 。或者学习UCOS也会涉及修改启动文件内相关数据,四单片机发展趋势:C语言当前设备半导体的成本,随着制程工艺的提升而降低,越来越多的低端8位单片机开始从汇编转向到C语言,单片机也往更高集成度,更强大功能发展 。所以学习单片机不一定要精通汇编,但对汇编有一定了解,对学习单片机有帮助,只有在某一些功能需求时,可以适当运用汇编,
为什么这么多人学不会C语言?
这么多人学不会C语言你觉得是什么原因?是智商原因吗?那我们来看看,不说全世界了,就全中国而言学好C语言的人那么多,里面还有中学学历的人,你觉得是智商的原因吗?是C语言本身的原因吗?你会说C语言数组、指针、链表太抽象,发明者C语言的人太坏了!C语言及其发明人双手一摊:怪我咯?很多人学不会C语言的原因,依我看不是智商的问题也不是C语言本身的问题,而是学习者的情商出了问题!你没看错,情商!学习C语言需要用到的情商包括:毅力、定力、心理抗压力和自控力 。
推荐阅读
- 华为为什么要芯片,华为为什么要自己生产芯片
- 狼人杀最近为什么这么火,能不能持续火下去
- 为什么买手机都要预约,为什么要抢购
- 为什么会真空涨落,为什么宇宙会膨胀呢
- 为什么李论不喜欢我了,为什么不喜欢呢
- 为什么国内蜂窝版iPad等那么久,为什么ipad加个蜂窝网络
- 现在酷狗为什么要收费了,有些歌曲听歌都要收费了
- 为什么鬼压床的现象,鬼压床是什么原因
- 儿童安全智能手表为什么卖不好,究竟安不安全
- 2015年高考分数线预测,em2015高考分数线预测em为什么这么高
