找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4896|回复: 12
收起左侧

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

  [复制链接]
ID:604559 发表于 2019-8-28 11:18 来自手机 | 显示全部楼层 |阅读模式
对初学者来说,先学哪一种语言比较好,有利于提高呢?
回复

使用道具 举报

ID:235200 发表于 2019-8-29 00:59 | 显示全部楼层
      C语言编属于高级语言,具有可移植性,能够结构化编程,而且程序很容易读懂。C语言编写程序结构清晰,移植性好,容易维护和修改。
      汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。
      汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。
      汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。
      学习单片机编程,如果想理解单片机结构和资源(硬件),还是学习汇编语言为好,如果只想应用单片机,用C语言编程好,因为掌握快,甚至有些内部结构无需掌握。
回复

使用道具 举报

ID:123289 发表于 2019-8-29 15:03 | 显示全部楼层
沙发说得好
回复

使用道具 举报

ID:458699 发表于 2019-8-29 16:53 | 显示全部楼层
c简单,汇编难,个人感觉。。入门最好选c,好理解。不过汇编是直接控制,规划好的话,效率是非常高的。
回复

使用道具 举报

ID:351097 发表于 2019-8-30 09:40 | 显示全部楼层
一般还是先学汇编吧,汇编是很接近底层驱动的,对于理解单片机的内部结构会有很大的帮助。用汇编的话,要知道指令是怎么运行的,数据是怎么存取的,对内部存储和外部存储寻址方式。我觉得这才是单片机的精华所在。如果一上来就用C语言编程,会感觉单片机就像个黑盒子,只知道往黑盒子输入数据,然后黑盒子会输出数据,一旦数据出问题,往往会不知所措。
回复

使用道具 举报

ID:605389 发表于 2019-8-30 10:29 | 显示全部楼层
一般的单片机开发还是使用C语言比较多些,程序也相对比较易学易理解。汇编语言与底层系统更接近,执行效率也更高,同时学习理解难度也更大。因此初学者建议还是由浅入深,先学习c语言,有一定基础再学习汇编,循序渐进。
回复

使用道具 举报

ID:605477 发表于 2019-8-30 13:49 | 显示全部楼层
先学汇编吧,多了解底层。
回复

使用道具 举报

ID:605557 发表于 2019-8-30 16:18 | 显示全部楼层
学了汇编之后,你可以更好的了解c语言怎么写,明白c语言的底层怎么运行
回复

使用道具 举报

ID:155507 发表于 2019-8-31 12:44 | 显示全部楼层
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

汇编语言是低级语言,在编写程序的时候会把根据不同的情况指定使用不同的寻址方式,能够对内存和CPU里的通用寄存器直接操纵。不同的单片机系列会有不同的汇编语言
而C语言是高级语言,可以实现跨平台。编写程序无需指定CPU的指令执行情况,一段程序可以在不同体系结构的计算机上使用

c语言在编译的时候会进行汇编,转换为机器指令,才可以运行
准确的说,应该是不同指令集的CPU需要编译成不同的机器语言。
目前PC机的CPU的指令集都是一样的,所以,你在你的PC上编译了一份可执行文件,复制到你师兄的PC里面,也可以用,但是复制到平板电脑里,就无法使用了。

就如英语和汉语的区别,你的母语是汉语,就如单片机的母语是汇编语言。英语和C语言就是一种表达语言

C语言是当今最流行的程序设计语言之一,它的功能丰富、表达力强、使用灵活方便、应用面广、目标程序高、可植入性好,既有高级语言的特点,又有低级语言的许多特点,适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。

汇编的低级别语言,优点在于能够对硬件资源进行准确的操作,比如寄存器的使用和数据存储的具体位置。能充分运用硬件资源
缺点当然是编写起来麻烦,程序阅读麻烦
而c则相反,它都是编译器自动分配说需寄存器和数据存储单元,因此编写者不能分配
但c语法简单,程序可读性强

汇编语言属低级语言,而C语言是高级语言,所谓高级语言就是更容易被人们理解的语言,其实汇编语言能实现的功能往往也能通过C语言来实现,甚至用C语言会更简单,但是汇编语言有一个优势是其他任何语言所不具备的,这也是为什么汇编语言一直能在编程中占有一席之地,那就是汇编语言对硬件的直接控制,也就是说他能直接对硬件操作,可以绕过操作系统等等之类。虽然有的领域其他编程也能实现,但是在很多地方往往是汇编语言能更加简单,更加完美的完成。而且学好了汇编语言你就能对cpu是怎么工作的有了清晰的认识,所以学计算机专业的一般都会学汇编语言。

汇编语言是采用助记符号来编写程序的,用辅助符号代替机器语言的二进制码,就把机器语言变成了汇编语言。可以直接同计算机的底层软件甚至硬件进行交互。
编写的代码非常难懂,不好维护,所以出现一些面向过程的语言,C就是其中之一。C是可以说是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作。

汇编语言是用语言直接控制硬件,由硬件间接达到某种控制效果。而C语言是一种比较高级的语言,编写者可以不用去考虑硬件而直接去命令计算机达到这种控制效果。换而言之,汇编语言对描述过程更注重,C语言之类的高级语言更注重描述结果。例如汇编语言中变量的赋值语句为 MOV A B 可以解释为将A寄存器中的值复制至B寄存器。而C语言中直接表示为 b=a,解释为使b=a    芯片都是由门电路构成。门有通有断,对应在计算机代码里是二进制的1或0。如果直接进行人机对话,只能输入由0和1组成的代码才能交流。这样的代码太长,而且难记。所以人们想出一个办法,相互约定,用人们易读懂的特定表达方式去表达特定的计算机代码,再将此表达方式翻译成计算机能直接读懂的二进制代码。这样的一套方便人们表达的表达方式被称为计算机语言。

学习汇编可以更好地理解单片机的硬件原理,工作方式。
你还在学习 必然要从最底层学起 而且要尽量学好

越高级的语言实用越方便 开发效率更高 执行效率更低 但靠硬件速度 效果 功能等可以弥补 主要做较大项目时如果全用底层语言实在太累了

不管什么语言都是个工具 写程序真正重要的是你的思路 你的逻辑 你的想法 你要去哪才是目标 至于开手动档车去还是开自动档车去 那只是手段
回复

使用道具 举报

ID:584041 发表于 2019-8-31 14:08 | 显示全部楼层
肯定学C语言啊
回复

使用道具 举报

ID:540100 发表于 2019-8-31 14:33 | 显示全部楼层
汇编学习一遍,看几个8位机编程案例,然后重点学C语法和开发案例,再转向32位机,其中难易各有千秋
回复

使用道具 举报

ID:605860 发表于 2019-8-31 17:06 | 显示全部楼层
学习c语言吧!
学习c语言好处:
(1)许多设备驱动程序和操作系统只能用C语言来编写。
(2)如果学习过C语言,在学习其他高级编程语言时更加轻松。比如c++C#等。
(3)C的程序来运行效率更高,更快,程序可以很简洁。
(4)c语言网上资料很多,学习起来较为容易。
(5)找编程开发方面的工作时,C语言仍然是最普遍需要的语言。
(6)许多微处理器芯片开发需要使用到c语言,比如单片机,DSP,ARM等。
回复

使用道具 举报

ID:77578 发表于 2019-9-2 19:24 | 显示全部楼层
最好的方式是用汇编的思想写C语言的程序。汇编语言会让你了解到单片机本质的操作,但是并不容易操作,特别是在维护方面,汇编语言目前之活跃在ROM在4K一下的单片机中,因为ROM小,C语言的编译效率低,几句话就会撑爆空间,而汇编语言做的好,将是很高效率的,但往往因为追求ROM空间,导致程序中到处的JMP,较难阅读。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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