一、源程序的编辑
(一)源程序编制的步骤
设计程序之前,首先要进行题意分析。仔细分析问题,明确要解决问题的要求。对现有的条件,已知的数据,运算的精度和速度等方面的要求要有正确的认识。
接着确定算法。解决一个问题,常常有好几种可供选择的方法,也就是有几种不同的算法。在编制程序以前,根据实际问题和指令系统的特点,要先对不同的算法进行分析、比较,决定所采用的计算公式和计算方法,找出最合适的算法。
然后制定程序流程图。一个程序按其功能可能分为若干个部分,通过流程图把具有一定功能的各个部分有机的联系起来,从而使人们能够抓住程序的基本线索,对全局有完整的了解。通过制定流程图,程序设计人员容易发现设计思想上的错误和矛盾,也便于找出解决问题的途径,因此画流程图是程序结构设计时所采用的一种重要手段。一个系统的软件要有总的流程图,即主程序框图,它可以画得粗一点,侧重于反映各个模块之间的相互联系。另外,还要有局部流程图,反映各个模块的具体实现方案。程序流程图常采用如图4-1所示的图形和符号。
图4-1 程序流程图符号
下一步编写程序。按照汇编程序设计的格式,编写实现其功能的汇编程序。在编写程序时,一般应遵循尽可能节省数据存放单元、缩短代码长度、降低运行时间三个原则。
最后进行源程序汇编和调试。汇编语言源程序必须转化为机器码表示的目标程序,计算机才能执行,这种转化过程称为汇编。通常汇编工作是在计算机上使用交叉汇编程序进行的,最后得到以机器码表示的目标程序。汇编和反汇编的过程如图4-2所示。
图4-2 汇编和反汇编过程
通常程序的调试需要使用仿真器。通过计算机将目标程序装入仿真器,在仿真器上以单步、断点、连续方式试运行程序,对程序进行测试,排除程序中的错误,直到正确为止。
(二)汇编语言源程序的格式
MCS-51汇编源程序是用文字编辑器编写的由汇编指令和MCS-51伪指令构成的文本文件。MCS-51系列单片机汇编语言源文件一般应以.asm为扩展名。
在编辑源程序时,以回车作为结束的一行称为语句行。每个语句行长度应少于80个字符。每一个语句行对于汇编程序来说都是一条单独的命令行,它可以是一条汇编语言指令,也可以是一条注释,或是空白(即什么也不写),还可以是系统允许的伪指令。语句行的标准格式如下:
标号: 操作码 操作数 ;注释
即一行由四部分组成,可以根据需要缺省其中的一部分或几部分,甚至全部省去,即是空白行。
1.标号
标号后面必须有“:”,它是标志程序中某一行的符号名。标号的数值就是标号所在行指令代码的存储地址。标号中可以用数字,但必须用字母开头,标号中不能包含“:”或其他的一些特殊符号,也不可以用汉字。当标号作参数用(如标号作转移地址),在命令后面出现时,必须舍去“:”(如LJMP START中的START)。
2.操作码
操作码表示单片机执行该指令时将进行何种操作。操作码由2~5个英文字母组成,例如,JB、MOV和LCALL等。
3.操作数
操作数表示操作的数本身或参加操作的数所在单元的地址。这里必须注意,操作数如果是以A,B,C,D,E,F开头的,则为了区分是数字还是字母,应当在这些数字前加“0”,如FFH,在程序中应当写成0FFH,C0H应写成0C0H等。
操作码和操作数都有对应的二进制机器码,机器码由若干字节组成。对于不同的指令,机器码的字节数不同。MCS-51指令系统中,有单字节、双字节和3字节指令。
4.注释
注释用于对程序的说明,它以分号开始,以回车结束。源程序行可以只包含注释,注释只是被复制到列表文件中,不产生机器码。
(三)汇编语言源程序的优点
采用汇编语言编程与采用高级语言编程相比具有以下优点:
(1)占用的内存单元和CPU资源少。
(2)程序简短,执行速度快。
(3)可直接调用计算机的全部资源,并可有效地利用计算机的专有特性。
(4)能准确地掌握指令的执行时间,适用于实时控制系统。