汇编语言程序是单片机汇编指令的集合。汇编语言程序设计与51系列单片机的汇编指令集和硬件结构等有密切联系,其在单片机上运行可以实现特定的功能和任务。汇编语言以其简练的代码、快速的操作硬件能力而获得了广泛使用,下面首先介绍汇编语言的基本情况。
汇编语言是采用助记符描述指令的程序设计语言,其中助记符标识是二进制指令的形象标记。由于现在采用的计算机都是二进制的,其所能执行的每一条指令都对应一组二进制代码。采用二进制代码来表示指令和数据的语言称为机器语言,它是唯一能被计算机识别的语言;然而这种语言很难记忆和辨认,给程序设计工作带来很大麻烦。为了容易理解和记忆这些计算机的指令,人们用一些英文单词和字符作为助记符来描述每一条二进制指令的功能。用助记符标识的指令就是计算机的汇编语言,汇编语言和机器语言是一一对应的。
采用汇编语言编写的程序,每条指令的含义一目了然,这给单片机程序的编写、阅读和修改带来很大方便,而且用汇编语言编写的程序代码少,执行速度快,每条指令的执行时间完全确定。因此,在最初的单片机应用系统中,程序主要是用汇编语言来编写。
总结起来,汇编语言与高级语言相比具有以下优点。
●占用比较少的内存单元和CPU资源;
●程序代码简短,执行速度快;
●和硬件结构密切相关,可直接调用计算机的全部资源,并可有效地利用计算机的专有特性;
●能准确地掌握指令的执行时间,适用于实时控制系统。
当然,汇编语言也有它的缺点,比如缺乏通用性、程序不易移植、代码难懂等;而且其仍然是一种面向机器的低级语言。使用汇编语言编写程序时,必须熟悉机器或单片机的指令系统、寻址方式、寄存器的设置和使用方法,以及系统的硬件资源等。每个计算机系统都有它自己的汇编语言指令集,不同计算机或单片机的汇编语言之间一般不能通用。但是掌握了一种计算机的汇编语言,有助于学习其他计算机或单片机的汇编语言。
使用汇编语言进行计算机或单片机程序设计的流程如图4-1所示,一般可以分为以下几个步骤。
图4-1 单片机汇编语言程序设计流程图
(1)分析问题,单片机选型。根据实际问题的要求,初步确定程序的规模,以及需要的资源,从而选择合适的单片机型号用来进行整个系统的设计。
(2)制定算法。根据系统需要实现的功能,确定其中使用的公式及运算流程,并转化成汇编语言的算法形式。
(3)绘制程序的流程图。根据算法和系统的功能组成,绘制单片机系统工作的流程,以便于更好地规划整个程序的执行步骤。
(4)分配资源。根据系统工作的需要,合理选择并分配内存单元及工作寄存器。
(5)编写源程序。当整个系统的工作流程及单片机资源分配分析完毕后,便可以根据绘制的流程图,开始编写汇编语言的源程序代码。
(6)上机调试程序。程序编写完毕,或者某个子程序完成后,在编译仿真软件中进行编译调试,检查并修改程序中的错误,并分析程序执行的结果是否和预期的一致,直至正确为止。
(7)在单片机上运行。程序仿真调试通过后,便可以将程序下载到单片机芯片内,并在实际硬件电路中执行程序。
首先,为了让读者认识一下汇编语言的结构,这里举一个汇编语言的例子。程序示例如下:
这段程序主要用于将一个单字节十六进制数转换成BCD码的形式。单字节十六进制数据在0~255之间,将其除100后,商为百位数,余数除以10,商为十位数,余数为个位数。这里设单字节存放在单片机RAM的32H中,转换后,百位数存放于R5中,十位和个位分别存放于R6的高位和低位字节中。
从上面的示例中可以看出,汇编语言的指令采用的是单片机的指令集,指令的用法在后面的指令系统中会详细介绍。下面主要介绍如何利用这些指令进行汇编语言的程序设计及汇编程序的结构。
汇编语言的程序一般是由指令和伪指令两部分构成的。其中,51系列单片机的各种指令及其功能将在后面的指令系统中详细介绍,这里主要介绍一下单片机系统的伪指令。