找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5496|回复: 49
收起左侧

你认为在单片机采用C语言和汇编语言各自的优缺点是什么

  [复制链接]
ID:727081 发表于 2020-6-24 19:45 | 显示全部楼层 |阅读模式
rt
回复

使用道具 举报

ID:287575 发表于 2020-7-1 22:24 | 显示全部楼层
都没说到点子上,汇编效率高,同一件事C的代码长度要比汇编长(当然要精通汇编,一个半吊子的汇编程序员除外),C语言比汇编易学,其程序移植性好,即很容易从一种单片机转到另一种单片机,而汇编根本不可能,在有些对价格非常敏感的产品中,就用汇编占ROM少就可以节省money了,有一次我同事用C写的程序要4.5K空间, 只能用8K的芯片了,后来我用汇编做只要3.7K,选4K的芯片,每片节约0,75元,一年要用30多万片,尤其在单片机容量跨界时重要,不跨界时一般无所谓了!)

评分

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

查看全部评分

回复

使用道具 举报

ID:727081 发表于 2020-6-25 11:27 | 显示全部楼层
使用C语言效率更高,使用汇编语言有利于直接向硬件编程
回复

使用道具 举报

ID:687694 发表于 2020-6-26 11:14 | 显示全部楼层
多年前资源缺乏,汇编可用,多年后的今天资源过剩,C语言就火了。
回复

使用道具 举报

ID:790097 发表于 2020-6-26 12:01 | 显示全部楼层
首先,如果是单片机开发的话,我认为,无非也是考验开发者操作寄存器的能力,学习汇编语言,虽然难懂而生硬,但是对于单片机内部的运行,寻址,计算,跳转,以及时序的把握,都要摸得个一清二楚,这是C语言中编译器帮你做了的.但如果你真的可以用汇编写一两个项目出来,相信你对单片机的原理会有一个质的飞跃.同时日后的C语言开发,你也会下意识珍惜编译结果而去优化自己的C语言写法.其次,还是针对单片机开发的话,单片机面向的是较低的市场,部分单片机甚至没有C编译器,而上头却决定用这一块单片机的话,这就要求你快速上手

评分

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

查看全部评分

回复

使用道具 举报

ID:600952 发表于 2020-6-26 13:27 | 显示全部楼层
额,使用C语言效率更高,更简洁,而且可移植性好些,使用汇编语言有利于直接向硬件编程,编写出的效率高,性能好些,不过现在这个好像不是那么明显了
回复

使用道具 举报

ID:790159 发表于 2020-6-26 13:52 | 显示全部楼层
一般99%的应用都是C了,目前汇编只用在单片机的启动代码,这些都是厂家做的。现在的编译器都是非常智能的生成的代码效率都足够高了!
回复

使用道具 举报

ID:789767 发表于 2020-6-27 01:44 | 显示全部楼层
觉得汇编偏向于底层硬件,而C会偏向大众吧,可移植性,效率啥的都会高一点
回复

使用道具 举报

ID:790670 发表于 2020-6-27 08:20 | 显示全部楼层
C语言编属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。 C语言编写程序结构清晰,移植性好,容易维护和修改。 汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。 汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。
回复

使用道具 举报

ID:155507 发表于 2020-6-27 08:34 | 显示全部楼层
C语言是用于高级和低级应用程序的中级语言。低级和高级语言之间的区别是:低级语言更接近硬件。因此,C和汇编语言都是低级编程语言。 汇编语言更接近于硬件。

汇编程序是一种低级语言,它依赖于系统体系结构,因此它可能非常专业。因此,如果您为一台计算机编写汇编程序例程,则不能在不进行彻底重写的情况下将其移植到具有不同体系结构的另一台计算机上 对于C语言,您可以很容易地将C移植到各种平台上。

最大的区别当然是汇编可以得到您要编写的内容。您按原样编写每条指令(一条助记符,一条指令给处理器),并且此后没有对代码进行优化。

在C语言(和其他高级语言)中,每条指令/代码行可能会向处理器产生数十条指令。此外,您的代码也会得到优化。对于C语言来说,这是一个两步过程;首先进行编译,然后将其链接与 库和其他目标文件。

回复

使用道具 举报

ID:788576 发表于 2020-6-27 09:31 | 显示全部楼层
汇编程序是一种低级语言,它依赖于系统体系结构,因此它可能非常专业。因此,如果您为一台计算机编写汇编程序例程,则不能在不进行彻底重写的情况下将其移植到具有不同体系结构的另一台计算机上 对于C语言,您可以很容易地将C移植到各种平台上。
回复

使用道具 举报

ID:790246 发表于 2020-6-27 10:12 | 显示全部楼层
现在用汇编的少了吧,学校现在大多数编程都要求用c了,c效率高,简便
回复

使用道具 举报

ID:790738 发表于 2020-6-27 10:15 | 显示全部楼层
汇编语言编写代码实时性强,能够直接控制硬件的工作状态,占用资源少,程序执行效率高,但是不具有可移植性,维护和修改困难。C能够结构化编程,可移植性强。
回复

使用道具 举报

ID:466730 发表于 2020-6-27 12:19 | 显示全部楼层
因为实际中有很多客户要求价格极低,好像用到的大部分就是汇编完成的芯片,貌似价格都比较低
回复

使用道具 举报

ID:452950 发表于 2020-6-27 21:19 | 显示全部楼层
与汇编语言相比,C语言效率更高更简洁
回复

使用道具 举报

ID:791126 发表于 2020-6-27 22:21 | 显示全部楼层
c语言更加简单易学,应用范围广,汇编语言对硬件编程比较好
回复

使用道具 举报

ID:789847 发表于 2020-6-28 00:17 | 显示全部楼层
汇编语言是最接近底层的,可以直接转换为机器语言,这样效率会很高;但c语言是高级语言,编写起来不会那么麻烦,更简洁。
回复

使用道具 举报

ID:788840 发表于 2020-6-28 08:58 | 显示全部楼层
c语言思路清晰,更加通俗易懂啊
回复

使用道具 举报

ID:791488 发表于 2020-6-28 09:28 | 显示全部楼层
汇编语言移植性不够好,C的话不会因为不同单片机结构要改里面的程序,可以直接搬用
回复

使用道具 举报

ID:283954 发表于 2020-6-28 15:20 | 显示全部楼层
若有大志,需从底层做起,学会汇编,直捣CPU内脏,将来或能设计CPU。若为谋生,需与时并进,符合潮流,学C语言,出货快,谋职容易。所谓高级语言就是“替你向CPU说你不需要懂的话“,也因此你可能永远不会懂如何对CPU说话。
回复

使用道具 举报

ID:791981 发表于 2020-6-28 16:55 | 显示全部楼层
C语言的可读性较强,读程序较为简单,而汇编很难在短时间内读懂程序。
汇编的时序性很强,可以精确控制时序流程,而C不可以。
回复

使用道具 举报

ID:656668 发表于 2020-6-29 00:05 | 显示全部楼层
C语言学习相对容易,写出的代码容易理解,而要学习汇编语言显得有点吃力,需要你有相应的汇编语言基础,并且队微机原理这门课程有初步的了解。

评分

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

查看全部评分

回复

使用道具 举报

ID:792407 发表于 2020-6-29 08:47 | 显示全部楼层
单片机开发用C和汇编优缺点对比如下:
1、C可以读性较强,容易让后继者接手进行扩展,汇编相对而言难度就大多了,一般人很难短时间内弄懂原开发者的原意和理清思路。
2、C可移植性较强,一个单片机的程序稍加修改,可以移植到其他环境下使用,汇编程序几乎无法移植。
3、汇编的时序性很强,可以精确严格按既定时序控制流程,C无法做到。
4、汇编可以精确定时,C只能初略定时。
回复

使用道具 举报

ID:592807 发表于 2020-6-29 11:32 | 显示全部楼层
C能生成汇编,
汇编没法生成C
回复

使用道具 举报

ID:788523 发表于 2020-6-29 20:41 | 显示全部楼层
C语言逻辑更清晰,我感觉这是C语言最大的优点
回复

使用道具 举报

ID:794058 发表于 2020-6-30 17:37 | 显示全部楼层
C语言更简洁,而且适用比较多的地方,但是感觉出错误有点难找。汇编语言更专业向,表达一样的功能要使用的语句更多。
回复

使用道具 举报

ID:764088 发表于 2020-7-1 15:45 | 显示全部楼层
1)用汇编就是浪费工程师生命,浪费公司资源,
2)啥时代了,还用汇编,虽然我曾它用那么久,除非你非常在意 那点单片机价格。
回复

使用道具 举报

ID:219787 发表于 2020-7-1 16:43 | 显示全部楼层
(1)汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。
回复

使用道具 举报

ID:781892 发表于 2020-7-1 18:00 来自手机 | 显示全部楼层
c语言比较高效,比较适合工程
回复

使用道具 举报

ID:784384 发表于 2020-7-1 21:03 | 显示全部楼层
我也是小白,唯一的感觉就是C语言要比汇编省点事,汇编啥都要自己设定存储位置和功能。相比较而言我更喜欢C语言
回复

使用道具 举报

ID:795412 发表于 2020-7-2 11:22 | 显示全部楼层
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其
主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所
以不易移植。
C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机
语言。缺点是占用资源较多,执行效率没有汇编高。
对于目前普遍使用的RISC架构的8bitMCU来说,其内部ROM、RAM、STACK等资源都有
限,如果使用C语言编写,一-条C语言指令编译后,会变成很多条机器码,很容易出现ROM
空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,
一条指令就对应-一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况
都容易控制,调试起来也比较方便。
回复

使用道具 举报

ID:400545 发表于 2020-7-2 15:45 | 显示全部楼层
汇编语言的优缺点总结如下:       优点:       1)针对性强,汇编语言通常是为特定的处理器或系列计算机二进制码专门设计的,所以不同处理器架构往往对应不同的汇编语言。比如x86架构的就是x86汇编,ARM架构的CPU对应于ARM汇编,MIPS架构的CPU对应于MIPS汇编,而我们公司用的Powerpc的CPU那对应使用的汇编语言遵循PPC原则。       2)汇编语言仅仅略微高于计算机语言,仍保留机器语言部分优点,能够对机器硬件精确控制。可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。         3)占用资源少、程序执行效率高。在汇编语言中,一条指令就对应一条机器码 (而高级语言中,一条对应到多条),每一步执行什么动作都很清楚,并且程序大小和调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们经常用到汇编语言。  利用计算机所有硬件特性并能直接控制硬件的语言。  但汇编语言也不可避免存在一些缺点:      1)汇编语言比较难懂,编写比较复杂。      2)由于其针对性较强,不同的CPU,其汇编语言可能有所差异,所以不易移植。  C语言的优点有:         1) C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。        2)层次清晰,便于按模块化方式组织程序,易于调试和维护。        3)C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。        4)C语言还具有可移植性强的特点。     C语言也有其缺点:     1)和高级语言相比,C语言语法限制不太严格,例如对数组下标越界不做检查等,这影响程序的安全性。        2)类型检查机制相对较弱、缺少支持代码重用的语言结构。        3)C语言面向过程的特点,也使其在应用在现代大型软件时出现困难。     4)和低级语言相比,C语言要先编译成汇编语言然后再翻译成机器指令,这增加了编程困难度。     5)一条C语言可能翻译成多条机器指令,需要更大的存储空间等。
回复

使用道具 举报

ID:216120 发表于 2020-7-2 20:47 | 显示全部楼层
汇编完全看不懂,C语言不会可以抄!不准笑!
回复

使用道具 举报

ID:634658 发表于 2020-7-2 21:04 | 显示全部楼层
汇编语言优点:接近于机器语言,在代码执行速率与效率上任何语言要高,缺点:语言晦涩难懂
回复

使用道具 举报

ID:790861 发表于 2020-7-2 21:14 | 显示全部楼层
汇编机器语言效率更快,机器语言精确控制机器硬件,控制流程效果,好可移植性不好。c可移植性较强,代码可读性很强而且思路清楚,只是初学学C语言不太好入门吧...
回复

使用道具 举报

ID:508160 发表于 2020-7-2 21:23 | 显示全部楼层
C语言编程简单但单片机运行效率低,汇编编程复杂但单片机运行效率高。在比较追求效率的地方一般用汇编编写程序。
回复

使用道具 举报

ID:633896 发表于 2020-7-7 11:26 | 显示全部楼层
我个人感觉C语言对面我们容易入门。
汇编编程复杂,要是我学是学不下去的。
回复

使用道具 举报

ID:799051 发表于 2020-7-7 13:58 | 显示全部楼层
c语言灵活,通用性强,编写起来爽歪歪。汇编嘛你懂的,即机器语言,芯片指令集很少接触。
回复

使用道具 举报

ID:752280 发表于 2020-7-7 14:39 | 显示全部楼层
支持C语言 入门容易 掌握的是跨平台可移植编程的方法 汇编难学 不可移植
回复

使用道具 举报

ID:169756 发表于 2020-7-7 18:16 | 显示全部楼层
C语言编程效率高,不需要了解MCU的指令;
ASM编译效率高,需要了解MCU的指令和寄存器。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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