首页 理论教育汇编语言和C语言学习笔记

汇编语言和C语言学习笔记

【摘要】:4)单片机C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不作修改就可根据单片机的不同较快地移植过来。C语言更新维护方便、可移植性强,但实践证明,单独使用C语言开发单片机程序也存在诸多不足,如占用存储空间大、对硬件控制不灵活等。与硬件关系密切的程序或对性能有特殊要求的程序往往用汇编语言设计,上层应用软件则往往用C语言来设计。

程序设计语言的层次结构如下:

硬件逻辑被虚拟化成汇编语句,汇编语句再次被封装,虚拟化成高级语言语句。高级语言的语句,再次被封装,形成一个特定目的的程序,或者称为函数,然后这些函数再通过互相调用,生成更复杂的函数,再将这些函数组合起来,就形成了最终的应用程序。程序再被操作系统虚拟成一个可执行文件。其实这个文件到了底层,就是一次一次地对CPU的电路信号刺激。也就是说,硬件电路逻辑,一层层地被虚拟化,最终虚拟成一个程序,程序就是对底层电路作用的一种表达形式。按照与硬件虚拟化关系的远近,计算机程序设计语言分为机器语言、汇编语言和高级语言,它们的关系如图6-9所示。

978-7-111-49736-3-Chapter06-14.jpg

图6-9 程序设计语言

汇编语言有如下缺点:

1)汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。

2)汇编语言编写涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试起来也比较困难。

汇编语言有如下优点:

1)汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言,它可以直接、有效地控制计算机硬件。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚。(www.chuimin.cn)

2)懂得汇编语言可帮助了解任何影响语言效率的规则,并且程序大小和堆栈调用情况都容易控制。例如,懂得汇编语言指令就可以使用在片内RAM作变量的优势,因为片外变量需要几条指令才能设置累加器和进行数据指针存取。同样的,当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。

与汇编语言相比,C语言有如下优点:

1)对单片机的指令系统不要求了解,仅要求对51单片机的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。

2)程序有规范的结构,可分为不同的函数。这种方式可使程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。

3)编程及程序调试时间显著缩短,从而提高了效率。提供的库包含许多标准子程序,具有较强的数据处理能力,在已编好程序中可容易地植入新程序,因为它具有方便的模块化编程技术。

4)单片机C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不作修改就可根据单片机的不同较快地移植过来。

C语言更新维护方便、可移植性强,但实践证明,单独使用C语言开发单片机程序也存在诸多不足,如占用存储空间大、对硬件控制不灵活等。因此想成为一个优秀的单片机编程技术员,最好就是能懂得单片机C语言和汇编语言的混合编程。在编程过程中,通常用C语言来构建程序框架,而用汇编程序作为子程序来处理一些有实时性要求的特殊应用。与硬件关系密切的程序或对性能有特殊要求的程序往往用汇编语言设计,上层应用软件则往往用C语言来设计。

作为单片机初学者,还是应该先学习汇编语言,因为汇编语言程序除了具有简洁明快、跳跃性强、占ROM资源少等优点以外,还因它和单片机底层硬件紧密联系,可以让初学者更加了解单片机硬件系统各种资源、软件的工作原理,熟悉各个功能模块的作用,从而为编出更高效率的程序打好扎实的基础。