单片机原理及应用(课件)4.ppt

上传人:本田雅阁 文档编号:2218062 上传时间:2019-03-06 格式:PPT 页数:50 大小:244.51KB
返回 下载 相关 举报
单片机原理及应用(课件)4.ppt_第1页
第1页 / 共50页
单片机原理及应用(课件)4.ppt_第2页
第2页 / 共50页
单片机原理及应用(课件)4.ppt_第3页
第3页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机原理及应用(课件)4.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用(课件)4.ppt(50页珍藏版)》请在三一文库上搜索。

1、第四章 汇编语言程序设计及知识 4.1 编程的步骤、方法和技巧 4.2 汇编语言源程序的编辑和汇 编 4.1 编程的步骤、方法和技巧 4.1.1 编程的步骤 4.1.2 编程的方法和技巧 4.1.3 汇编语言程序的基本 结构 4.1.1 编程的步骤 一、分析问题 二、确定算法 三、画程序流程图 四、编写程序 一、分析问题 对需要解决的问题进行分析,以求对问 题由正确的理解。如, 解决问题的任务是什么? 工作过程? 现有的条件,已知数据,对运算的精度 和速度方面的要求? 设计的硬件结构是否方便编程? 二、确定算法 算法是如何将实际问题转化成程序模块 来处理。 在编程以前,先要对几种不同的算法进

2、行分析、比较,找出最适宜的算法 三、画程序流程图 程序流程图是使用各种图形、符号、有向线段 等来说明程序设计过程的一种直观的表示。 流程图步骤分得越细致,编写程序是也越方便 。 画流程图是程序结构设计是采用的一种重要手 段。 一个系统软件有总的流程图(主程序框图)和 局部的流程图。 流程图常采用的图形和符号。 椭圆框或桶形框:表示程序的开始或结束。 矩形框:表示要进行的工作。 菱形框 :表示要判断的事情,菱形框内 的表达式表示要判断的内容。 圆圈 :表示连接点 指向线:表示程序的流向 四、编写程序 用89C51汇编语言编写的源程序行(一 条语句)包括四个部分,也叫四个字段: 标号:操作码操作数

3、;注释 每个字段之间要用分隔符分隔,而每个字段内 部不能使用分隔符。可以用作分隔符的符号: 空格“ ”、冒号“:”、逗号“,”、分号“;”等 。 例:LOOP:MOV A,#00H;立即数00HA 标号 标号是用户定义的符号地址。 一条指令的标号是该条指令的符号名字,标号 的值是汇编这条指令时指令的地址。 标号由以英文字母开始的18个字母或数字组 成,以冒号“:”结尾。 标号可以由赋值伪指令赋值,如果没有赋值, 汇编程序把存放该指令目标码第一字节的存储 单元的地址赋给该标号,所以,标号又叫指令 标号。 操作码 操作码是必不可少的。 它用一组字母符号表示指令的操作码。 在89C51中,由89C5

4、1的指令助记符组成 。 操作数 汇编语言指令可能要求或不要求操作数,所以这一字 段可能有也可能没有。 若有两个操作数,操作数之间用逗号“,”分开。 操作数包括的内容有: (1)工作寄存器:由PSW.3和PSW.4规定的当前工 作寄存器区中的R0R7。 (2)特殊功能寄存器:21个SFR的名字。 (3)标号名:赋值标号由汇编指令EQU等赋值的 标号;指令标号指令标号指示的指令的第一字节地址 是该标号的值。 (4)常数:可用二进制(B)、十进制、十六进制( H),若常数以字符开头,前面加0。 (5)$:用来表示程序计数器的当前值。 (6)表达式:汇编时,计算出表达式的值填入目标码 。 注释 注释部

5、分不是汇编语言的功能部分,只 是用语增加程序的可读性。 良好的注释是汇编语言程序编写中的重 要组成部分。 4.1.2 编程的方法和技巧 一、模块化的程序设计方法 二、编程技巧 一、模块化的程序设计方法 1、程序功能模块化的优点 2、划分模块的原则 1、程序功能模块化的优点 单个模块结构的程序功能单一,易于编写、调 试和修改。 便于分工,从而可使多个程序员同时进行程序 的编写和调试工作,加快软件研制进度。 程序可读性好,便于功能扩充和版本升级。 对程序的修改可局部进行,其它部分可以保持 不变。 对于使用频繁的子程序可以建立子程序库,便 于多个模块调用。 2、划分模块的原则 每个模块应具有独立的功

6、能,能产生一个明确 的结果,即单模块的功能高内聚性。 模块之间的控制耦合应尽量简单,数据耦合应 尽量少,即模块间的低耦合性。控制耦合是指 模块进入和退出的条件及方式,数据耦合是指 模块间的信息交换方式、交换量的多少及交换 频繁程度。 模块长度适中。20条100条的范围较合适。 二、编程技巧 1、尽量采用循环结构和子程序。 2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除 了用于存放子程序入口参数的寄存器外,子程 序中用到的其他寄存器的内容应压入堆栈(返 回前再弹出),即保护现场。 4、在中断处理程序中,除了要保护处理程序 中用到的寄存器外,还要保护标志寄存器。 5、用累加

7、器传递入口参数或返回参数比较方 便,在子程序中,一般不必把累加器内容压入 堆栈。 4.1.3 汇编语言程序的基本结构 一、顺序程序 二、分支程序 三、循环程序 一、顺序程序 顺序程序是最简单的程序结构,即 顺序结构。 程序按顺序一条一条地执行指令。 二、分支程序 程序分支是通过条件转移指令实现的,即根据 条件对程序的执行进行判断、满足条件则进行 程序转移,不满足条件就顺序执行程序。 分支程序又分为单分支和多分支结构。 多分支程序是首先把分支程序按序号排列,然 后按序号值进行转移。 二、分支程序 在MCS-51指令系统中,通过条件判断实现单 分支程序转移的指令有:JZ、JNZ、CJNE、 DJN

8、Z等。此外还有以位状态作为条件进行程序 分支的指令,如JC、JNC、JB、JNB、JBC等 。使用这些指令可以完成0、1、正、负,以及 相等、不相等作为各种条件判断依据的程序转 移。 结构如图4-1所示。 例子如例4-1所示。 例4-1 例4-1: 128种分支转移程序。 功能:根据入口条件转移到128个目的地址。 入口:(R3)=转移目的地址的序号00H 7FH。 出口:转移到相应子程序入口。 128个子程序首址 JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP A+DPTR JMPTAB:AJMP ROUT00 AJMP ROUT01 AJMP ROUT

9、7F 二、分支程序 说明:此程序要求128个转移目的地址( ROUT00 ROUT7FH)必须驻留在与绝对转 移指令AJMP相同的一个2KB存储区内。 RL指令对变址部分乘以2,因为每条AJMP指 令占两个字节。 图4-1 分支程序结构 散转指令 转向0分支转向1分支转向n-1分支转向n分支 K=0K=1 K=n-1 K=n 三、循环程序 在程序运行时,有时需要连续重复执行 某段程序,可以使用循环程序。其结构包 括四部分: 1、置循环初值 2、循环体(循环工作部分) 3、修改控制变量 4、循环控制部分 其组织方式如图4-2所示。 1、置循环初值 对于循环程序中所使用的工作单元,在 循环开始时应

10、置初值。 例如,工作寄存器设置计数初值,累加 器A清0,以及设置地址指针、长度等。 2、循环体(循环工作部分) 重复执行的程序段部分,分为循环工作 部分和循环控制部分。 循环控制部分每循环一次,检查结束条 件,当满足条件时,就停止循环,往下继 续执行其他程序 3、修改控制变量 在循环程序中,不许给出循环结束条件 。 常见的是计数循环,当循环了一定的次 数后,就停止循环。 在单片机中,一般用一个工作寄存器Rn 作为计数器,对该计数器赋初值作为循环 次数。每循环一次,计数器的值减1,即 修改循环控制变量,当计数器的置件为0 时,就停止循环。 4、循环控制部分 根据循环结束条件,判断是否结束循环 。

11、 89C51可采用DJNZ指令来自动修改控制 变量并能结束循环。 置初值 循环体 循环修改 循环控制 退出循环 未完 完 (a) 置初值 循环体 循环修改 循环控制 退出循环 未完 完 (b) 图4-2 循环组织方式流程图 4.2 汇编语言源程序的编辑和汇编 4.2.1 源程序编辑 4.2.2 源程序的汇编 4.2.3 伪指令 4.2.1 源程序编辑 在微型计算机上,借助编辑软件, 编写或修改汇编语言源程序。如行编 辑或屏幕编辑软件。 4.2.2 源程序的汇编 汇编:将汇编语言源程序转换为机器码 表示的目标程序的过程。对单片机有: 一、手工汇编 二、机器汇编 三、反汇编 一、手工汇编 通过手工

12、方式查指令编码表,逐个把助 记符指令“翻译”成机器码,然后把得到的 机器码程序键入单片机,进行调试和运行 。 手工汇编的缺点: 1、偏移量的计算容易出错 2、程序的修改会引起后面指令地址 的变化,转移指令的偏移量也要重新计算 。 二、机器汇编 机器汇编是在计算机上使用交叉汇编程 序进行源程序的汇编。汇编工作由机器自 动完成,最后得到以机器码表示的目标程 序。 三、反汇编 将二进制机器语言程序翻译成汇编语言 程序的过程称反汇编。 汇编和反汇编的过程如图4-3所示。 源程序 (汇编语言) 目标码 (机器语言) 汇编(汇编程序) 反汇编(汇编程序) 图4-3 汇编和反汇编过程 4.2.3 伪指令 伪

13、指令不是真正的指令,无对应的机器 码,在汇编时不产生目标程序,只是用来 对汇编过程进行某种控制。 ORG 汇编起始命令 格式:ORG 16位地址 功能:规定该伪指令后面程序的汇编地址,即 汇编后生成目标程序存放的起始地址。例如: ORG 2000H START:MOV A,#64H 规定了START的地址是2000H,又规定了汇编 后的第一条指令码从2000H开始存放。 END 汇编结束指令 格式:END 功能:通知汇编程序结束汇编。在END 之后所有的汇编指令均不予以处理。 EQU 赋值命令 格式:字符名称 EQU 项(数或汇编符号) 功能:把“项”赋给“字符名称”。 注意:字符名称不等于标

14、号(其后没有冒号) ;其中的项,可以是数,也可以是汇编符号。 EQU赋值过的符号名可以用作数据、代码地址 、位地址或一个立即数。可以是8位的,也可以 是16位的。 例如: EQU 赋值命令 例1: AA EQU R1 MOV A,AA;AA代表工作寄存器R1 例2: A10 EQU 10 DELY EQU 07EBH MOV A,A10;A10作为片内的一 个直接地址 LCALL DELY;DELY作为一个16 位子程序的入口地址 DATA 数据地址赋值命令 格式:字符名称 DATA 表达式 功能:与EQU类似,但有以下差别: 1、EQU定义的字符名必须先定义后使用,而 DATA定义的字符名可

15、以后定义先使用。 2、用EQU伪指令可以把一个汇编符号赋给一 个名字,而DATA只能把数据赋给字符名。 3、DATA语句可以把一个表达式的值赋给字 符名称,其中的表达式应是可求值的。DATA伪 指令在程序中用来定义数据地址 DB 定义字节命令 格式:DB(项或项表) 功能:通知汇编程序从当前ROM地址开 始,保留一个字或字节串的存储单元,并 存入DB后的数据。 注意:项或项表可以是一个字节,用逗 号隔开的字节串或括在单引号中的ASCII 字符串。 例如: DB 定义字节命令 ORG 2000H DB 0A3H LIST:DB 26H,03H STR:DB ABC 经汇编后(2000H)=A3H

16、, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,(41H,42H, 43H分别为A,B,C的ASCII码) DW 定义字命令 格式:DW 16位数据项或项表 功能:把DW后的16位数据项或项表从 当前地址连续存放。每项数值为16位二进 制数,高8位先放,低8位后存放。DW用 于定义一个地址表。 例如: DW 定义字命令 ORG 1500H TABLE:DW 7234H,8AH,10H 经汇编后(1500H)=72H, (1501H)=34H, (1502H)=00H, (1503H)=8AH, (1504H)=

17、00H, (1505H)=10H, DS 定义存储空间命令 格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之 后表达式的值所规定的存储单元以备后用。 例如: ORG 1000H DS 08H DB 30H,8AH 汇编后,从1000H保留8个单元,然后从 1008H按DB命令给内存赋值,即(1008H) =30H (1009H)=8AH BIT 位地址符号命令 格式:字符名 BIT 位地址 功能:把BIT后的位地址值赋给字符名。其中 字符名不是标号,其后没有冒号,但字符名是 必须的。 例如: A1 BIT P1.0 A2 BIT 02H 汇编后,P1口第0位的位地址90H就赋给了A1 ,而A2的值则为02H。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1