精品文档 你我共享
第3-1讲 第
3章 单片机汇编语言程序设计
【课 题】MCS-51汇编语言编程
【授课方法】在专业教室讲授,举例说明汇编语言编程应用。 【目的要求】了解本课程汇编语言编程的基础知识;
理解MCS-51汇编语言编程方法;
掌握MCS-51汇编语言编程相关规定和硬件知识。
【重点难点】灵活运用与编程有关的规定。
【教学过程】1、复习 2、程序设计的重要性 3、程序设计方法
汇编语言程序设计
微型机应用离不开应用程序的设计。单片机程序设计多采用汇编语言编写。本章介绍MCS51系统汇编语言程序编写的一般知识:有关规定、习惯用法、常见程序结构和编程方法。要学会编写程序应掌握编程的一般知识,还要分析一些经典程序,从修改现有程序入手,先简后难,循序渐进,最后达到自已设计应用系统和编写程序的目的。
3.1 单片机汇编程序设计方法与流程 3.1.1 汇编语言程序设计步骤
用汇编语言编制程序的过程,称为汇编语言程序设计。通常,汇编语言程序设计的步骤如下:整个汇编程序设计的流程图见图3.1,当然、短小程序可能不要这么复杂。
. 设 设计课题 计规划模型算法绘流程图编 制程序汇编 仿真调试试运行完成修改程序修改流程 修改规划算法图3.1汇编语言程序设计流程图1、设计规划,建立数学模型
设计前对项目作评估和规划,程序功能、运算精度、执行速度、各硬件特点、掌握设计的重点和难点。
2、选择适当的算法
对于同一个任务,往往可用不同的程序实现。此时应结合所用机器的指令系统,对不同的算法进行分析比较,经各方面综合考虑选择一种最佳算法,使程序精简,且执行速度快。
3、程序结构的设计
程序结构设计是把所采用的算法转化为汇编语言程序的准备阶段,特别是对于情况复杂的大型课题,必须进行程序结构设计。它可以分为模块化程序设计、结构程序设计及自顶向下设计等。
腹有诗书气自华
精品文档 你我共享
4、编制汇编语言程序
根据确定的算法及所选用的程序结构就可以绘制流程图,根据流程图并结合所选用的指令系统就可写出相应的汇编语言源程序。
5、汇编语言程序的调试
汇编语言程序编好后必须进行调试,因为所编制的程序难免有错误,且程序需要优化。
3.1.2编制程序的流程图
1、程序流程图的作用
采用流程图表示法,可以直观形象地表示各部分的逻辑关系及程序结构。方便地发现和分析程序算法存在的错误,便于掌握和进行交流。所以,流程图是程序设计的重要工具。
2、程序流程图的组成
程序流程图是用几何图形配以文字说明来描述程序的。它不但形象地描述程序执行的过程而且清楚地表达程序结构的内在联系。流程图中所采用的各种常用符号如下: (1)端点图
它是一个圆形框(如图3.2 中开始和结束)表示程序的起止等相应的文字 (2)流程线
流程线如图3.2线条所示,它表示程序执行的流向。 (3)处理框
处理框如图3.2所示,该框表示一种处理功能或者程序执行的过程。框内用文字简要说明一段程序的功能或处理过程。 (4)判断框
判断框如图3.2所示,该框用于指示一个判定点,从这点产生分支。在框内应注明测试条件,而测试结果则注明在各分支流程线上。 (5))子程序框
子程序框如图3.2所示,该框表示调用子程序,在该框内填入相应的子程序名称或入口地址。
开始、起点处理框1判断框1处理框2流程线子程序框图 3.2 流程图中常用符号判断框2结束如果要解决的问题较为复杂,通常设计“粗细”不同的程序流程图。首先设计粗图框,力求反映编程者的总体设计思想及总体结构并侧重于模块之间的相互联系;然后设计详细框图,此时应侧重各个模块的具体实现。当然、一个简单的程序也可直接写出,但要成为一个优秀的设计人员,开始就要养成良好的习惯,掌握大量的设计素材,学习他人经验。
3.1.3 单片机程序结构
1 伪指令
用汇编语言编写的程序通常需经过微机汇编变成机器码才能被执行。为了对源程序汇编,在源程序中必须使用一些“伪指令”。伪指令是便于程序阅读和编写的指令,它即不控制机器的操作也不能被汇编成机器代码,只为汇编程序所识别的常用符号,并指导汇编如何进行,故称为伪指令。已是大家公认的习惯用法,MCS-51系列单片机的常用伪指令如下:
1)、起始地址伪指令ORG
腹有诗书气自华
精品文档 你我共享
起始地址伪指令ORG是用来规定目标程序段或数据块的起始地址。 通常,在汇编语言程序开始处均用ORG伪指令指定程序存放的起始地址。
2)、汇编结束伪指令END
汇编结束伪指令END是用来告诉汇编程序,此源程序到此结束。在一个程序中,只允许出一条END语句,而且必须安排在源程序的末尾。否则,汇编程序对END语句后的所有语句都不进行汇编,
3)、赋值伪指令EQU
赋值伪指令EQU用于告诉汇编程序,将该伪指令右面的值赋给左面用户定义的符号,其格式如例题。
由EQU赋值的字符名称在源程序中可以作为数值使用,也可以作为数据地址、代码地址或位地址。由EQU伪指令所定义的符号必须先定义后使用。故该语句通常放在程序开头处。
例3.1
BUFFER EQU 58H ;BUFFER的值是58H
BLOCK EQU ADDER ;将标号ADDER赋值给字符名称BLOCK ORG 4000H ;该语句下面的程序从4000H开始
4000H E5F0 START:MOV A,B 4002H 30E7 JNB ACC.7,DONE 4004H F4 CPL A
4005H F5FO DONE:MOV B,A 4007H F558 MOV BUFFER,A END 4)、定义字节伪指令DB
定义字节伪指令DB是用于告诉汇编程序从指定的地址单元开始定义若干个字节存储单元的内容。其格式见练习二。
5)、定义字伪指令DW
定义字伪指令DW是用来告诉汇编程序从指定的地址单元开始,定义若干个16位数据。其格式如DB用法相同,只是一次定义16位数。
由于一个字长为16位,故要占两个存储单元。在MCS-51单片机系统中,16位的高8位存入低地址单元,低8位存入高地址单元。。
6)、数据地址赋值指令DATA
数据地址赋值伪指令DATA是用于告诉汇编程序,把由表达式指定的数据地址或代码地址赋予规定的字符名称.
DATA伪指令的功能是和EQU指令相似,但DATA伪指令所定义的符号可先使用后定义。在程序中它常用来定义数据地址,该语句一般放在程序的开头或末尾。 7)、位地址赋值伪指令BIT
位地址赋值伪指令BIT是用于告诉汇编程序,把位地址赋予规定的字符名称,常用于位处理的程序中,
机器汇编通常是在PC机上用软件MedWin/QTH-8052F/EDIT等编辑,用编程器将程序固化在芯片内,供单片机运行。
3.1.4 汇编语言源程序人工汇编 1、汇编程序的汇编过程
腹有诗书气自华