单片机用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语言高20%。所以用汇编语言编写程序能够减少占用单片机里的寄存器单元。特别是对于容量小的单片机而言很重要。总之汇编语言要比C语言执行效率更高。

第二点单片机汇编语言执行速度快

我们知道任何编程语言最终都要生成单片机能够“识别”和执行的二进制码。由于汇编语言可以直接访问单片机的内部寄存器。所以单片机的汇编语言执行速度要比C语言快的多。可以实施精细而准确 的控制。在一些实时控制要求比较严格的控制场合一般要求用汇编语言。

第三点单片机汇编语言能够帮助有助于了解单片机内部的结构。尤其是寄存器

由于汇编语言的每条指令与单片机的指令码是一一对应的。所以通过学习单片机的汇编语言有助于学习单片机内部结构组成以及它的外设。尤其是对熟悉单片机内部的各种寄存器有很大的帮助。

鉴于以上三点我认为。单片机C语言编程和汇编语言编程各有各的特点。要想学好单片机并运用好单片机就要把这两种单片机语言都要学好才行。

以上就是我对这个问题的看法。欢迎朋友们参与讨论。敬请关注电子及工控技术。欢迎大家点赞

其他观点:

要看是什么单片机。

32位单片机

如STM32。用C语言很合适。绝大多数工作都可以而且应该用C或者更高级的语言完成。只有极少数对性能或代码空间要求高的部分需要用汇编语言实现。

这类单片机在实际工作中也很少用到汇编。C语言基本能满足开发各种功能的需求。

8位单片机

如51系列。部分AVR。性能低。C编译器也不够标准。尤其因为历史上C编译器较昂贵。所以在这些平台上有大量汇编语言开发的积累。

另外。低端单片机往往实现的是简单逻辑。用汇编语言开发惯了的人。也没有太大动力改用C语言。

这样以来。学校课程中使用汇编语言也就正常了:既体现了一定的历史惯性、也有助于更深入的理解单片机系统。

从自己学习来说。汇编语言了解一下还是不错的。深入学习还是选C。以后单片机上直接用汇编的会越来越少。

您还感兴趣的文章推荐

以上就是由互联网推广工程师 网创网 整理编辑的,如果觉得有帮助欢迎收藏转发~

分享到 :
相关推荐

发表评论

您的电子邮箱地址不会被公开。

评论(2)

  • 几度无言 永久VIP 2022年12月27日 00:02:22

    单片机,语言,汇编语言,寄存器,程序,用汇,底层,文件,要比,都是

  • 旧日梦 永久VIP 2022年12月27日 00:02:22

    没想到大家都对单片机用C语言编程很好学,为什么还要用汇编呢?感兴趣,不过这这篇解答确实也是太好了

  • 苏梦北 永久VIP 2022年12月27日 00:02:22

    C语言是发展趋势。汇编可以帮助学生熟悉单片机内部结构。首先汇编语言和C语言都是编程语言。汇编是一种机器语言直接