文档介绍:第4章汇编语言程序设计
程序设计是单片机应用系统设计的重要组成部分,计算机的全部动作都是在程序的控制下进行的。本章用大量的实例来介绍单片机汇编语言程序设计方法,让同学们对汇编语言程序设计的基本结构、基本方法和思路有所了解。
概述
我们使用的程序都是用单片机汇编语言设计的。除了汇编语言外,单片机程序设计语言还有两类:机器语言和高级语言。
机器语言(Machine Language)是指直接用机器码编写程序、能够为计算机直接执行的机器级语言。机器码是一串由二进制代码“0”和“1”组成的二进制数据,其执行速度快,但是可读性极差。机器语言一般只在简单的开发装置中使用,程序的设计、输入、修改和调试都很麻烦
汇编语言(Assembly Language)是指用指令助记符代替机器码的编程语言。汇编语言程序结构简单,执行速度快,程序易优化,编译后占用存储空间小,是单片机应用系统开发中最常用的程序设计语言。汇编语言的缺点是可读性比较差,只有熟悉单片机的指令系统,并具有一定的程序设计经验,才能研制出功能复杂的应用程序。
高级语言(High-Level Language)是在汇编语言的基础上用自然语言的语句来编写程序,例如PL/M-51、Franklin C51、MBASIC 51等,程序可读性强,通用性好,适用于不熟悉单片机指令系统的的用户。
高级语言编写程序的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这一点在存储器有限的单片机应用系统中没有优势。
目前,大多数用户仍然使用汇编语言进行单片机应用系统的软件设计,本章将介绍MCS-51单片机汇编语言的程序设计方法。
单片机汇编语言程序设计的基本步骤如下:
(1) 题意分析。熟悉并了解汇编语言指令的基本格式和主要特点,明确被控对象对软件的要求,设计出算法等。
(2) 画出程序流程图。编写较复杂的程序,画出程序流程图是十分必要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于调试。
(3) 分配内存工作区及有关端口地址。分配内存工作区,要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。
(4) 编制汇编源程序。
(5) 仿真、调试程序。
(6) 固化程序。
简单程序设计
简单程序也就是顺序程序,它是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。不管多么复杂的程序,总是由若干顺序程序段所组成的。本节通过实例介绍简单程序的设计方法。
4字节(双字)加法。将内部RAM 30H开始的4个单元中存放的4字节十六进制数和内部RAM 40H单元开始的4个单元中存放的4字节十六进制数相加,结果存放到40H开始的单元中。
(1) 题意分析。
。
ORG 0000H
MOV A,30H
ADD A,40H
MOV 40H,A ;最低字节加法并送结果
MOV A,31H
ADDC A,41H
MOV 41H,A ;第二字节加法并送结果
(2) 汇编语言源程序。
按照双字节加法的思路,实现4字节加法的源程序如下:
MOV A,32H
ADDC A,42H
MOV 42H,A ;第三字节加法并送结果
MOV A,33H
ADDC A,43H
MOV 43H,A ;第四字节加法并送结果,进位位在CY中
END
显然,上面程序中,每一步加法的步骤很相似,因此我们可以采用循环的方法来编程,使得源程序更加简洁,结构更加紧凑。
数据拼拆程序。将内部RAM 30H单元中存放的BCD码十进制数拆开并变成相应的ASCII码,分别存放到31H和32H单元中。
(1) 题意分析。
。