单片机原理与接口技术4ppt精选课件

上传人:尔*** 文档编号:134833809 上传时间:2020-06-09 格式:PPT 页数:96 大小:335.50KB
返回 下载 相关 举报
单片机原理与接口技术4ppt精选课件_第1页
第1页 / 共96页
单片机原理与接口技术4ppt精选课件_第2页
第2页 / 共96页
单片机原理与接口技术4ppt精选课件_第3页
第3页 / 共96页
单片机原理与接口技术4ppt精选课件_第4页
第4页 / 共96页
单片机原理与接口技术4ppt精选课件_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《单片机原理与接口技术4ppt精选课件》由会员分享,可在线阅读,更多相关《单片机原理与接口技术4ppt精选课件(96页珍藏版)》请在金锄头文库上搜索。

1、 第四章汇编语言程序设计 4 0绪 4 1汇编语言源程序格式 4 2汇编语言源程序的编辑和汇编 4 0绪 评价程序质量的标准程序的执行时间 程序所占用的内存字节数目 程序的逻辑性 可读性 程序的兼容性 可扩展性 程序的可靠性 4 0绪 采用汇编语言的优点占用内存单元和CPU资源少 程序简短 执行速度快 可直接调动计算机的全部资源 并可以有效利用计算机的专有特性 能准确地掌握指令的执行时间 适用于实时控制 4 1汇编语言源程序格式 4 1 1编程的步骤 4 1 2汇编语言源程序格式 4 1 3伪指令 4 1 4编程的方法和技巧 4 1 5汇编语言程序的基本结构 4 1 1编程的步骤 一 分析问题

2、二 确定算法三 画程序流程图四 编写程序 根据问题要实现的目标 首先设计硬件电路 然后再根据具体的硬件环境进行程序设计 一 分析问题 对需要解决的问题进行分析 以求对问题正确的理解 如 解决问题的任务是什么 工作过程是什么 现有的条件 已知数据 对运算的精度和速度方面的要求 设计的硬件结构是否方便编程 在编程以前 先要对几种不同的算法进行分析 比较 找出最适宜的算法 二 确定算法 三 画程序流程图 程序流程图是使用各种图形 符号 有向线段等来说明程序设计过程的一种直观的表示 流程图步骤分得越细致 编写程序是也越方便 画流程图是程序结构设计是采用的一种重要手段 一个系统软件有总的流程图 主程序框

3、图 和局部的流程图 椭圆框 或桶形框 表示程序的开始或结束 矩形框 表示要进行的工作 菱形框 表示要判断的事情 菱形框内的表达式表示要判断的内容 流程图常采用的图形和符号 圆圈 表示连接点 指向线 表示程序的流向 流程图常采用的图形和符号 四 编写程序 汇编语言编写的源程序行 一条语句 包括四个部分 也叫4个字段 这四个字段是 标号 操作数 注释 每个字段之间要用分隔符分隔 而每个字段内部不能使用分隔符 4 1 2汇编语言源程序格式 可以用作分隔符的符号有 空格 冒号 逗号 分号 例如 LOOPl MOVA 00H 立即数00H送A 4 1 2汇编语言源程序格式 标号是用户定义的符号地址 一条

4、指令的标号是该条指令的符号名字 标号的值是汇编这条指令时指令的地址 标号由以英文字母开始的1 8个字母或数字串组成 以冒号 结尾 标号可以由赋值伪指令赋值 4 1 2汇编语言源程序格式 标号 如果标号没有赋值 汇编程序就把存放该指令目标码第一字节的存储单元的地址赋给该标号 所以 标号又叫指令标号 注意 系统中保留使用的关键字不能用作标号 4 1 2汇编语言源程序格式 标号 对于一条汇编语言指令 这个字段是必不可少的 它用一组字母符号表示指令的操作码 89C51中 它由指令系统助记符组成 4 1 2汇编语言源程序格式 操作码 汇编语言指令可能要求或不要求操作数 若有两个操作数 操作数之间应用逗号

5、分开操作数字段的内容是复杂多样的 它可能包括下列诸项 工作寄存器名 特殊功能寄存器名 标号 常数 表达式 4 1 2汇编语言源程序格式 操作数 操作数 工作寄存器名 由PSW 3和PSW 4规定的当前工作寄存器区中的R0 R7都可以出现在操作数字段中 MOVA R4MOVA R0 操作数 特殊功能寄存器名 89C51中的21个特殊功能寄存器的名字都可以作为操作数使用 MOVA P1MOVTMOD 01HSETBET0 可以在操作数字段中引用的标号名包括 赋值标号由汇编命令EQU等赋值的标号可以作为操作数 指令标号指令标号虽未给赋值 但这条指令的第一字节地址就是这个标号的值 在以后指令操作数字段

6、中可以引用 操作数 标号名 LOOP MOVA R2 LJMPLOOP 操作数 标号名 汇编语言指令允许以各种数制表示常数 常数可以写成二进制 十进制或十六进制 常数总是要以一个数字开头若十六进制的第一个数为A F字符 前面要加零 数字后要直接跟一个表明数制的字母 B二进制 H十六进制 操作数 常数 MOVA 00000111BMOVA 07HMOVA 07MOVA 0FDH 操作数 常数 用来表示程序计数器的当前值 这个符号最常出现在转移指令中 JNBTF0 表示若TF0为零仍执行该指令 否则往下执行 它等效于 JNBTF0 操作数 汇编程序允许把表达式作为操作数使用 在汇编时 计算出表达式

7、的值 并把该值填入目标码中 例如 MOVA SUM l 操作数 表达式 注释注释字段不是汇编语言的功能部分 只是用于增加程序的可读性 注释是汇编语言程序编写中的重要组成部分以 隔开 4 1 2汇编语言源程序格式 例 LOOP MOVA 00H 立即数00H A 伪指令不是真正的指令 无对应的机器码 在汇编时不产生目标程序 只是用来对汇编过程进行某种控制 4 1 3伪指令 4 1 3伪指令 ORGENDEQUDATA DBDWDSBIT ORG汇编起始命令 格式 ORG16位地址功能 规定该伪指令后面程序的汇编地址 即汇编后生成目标程序存放的起始地址 例如 ORG汇编起始命令 例如 ORG200

8、0HSTART MOVA 64H 规定了START的地址是2000H 又规定了汇编后的第一条指令码从2000H开始存放 END汇编结束指令 格式 END功能 通知汇编程序结束汇编 在END之后所有的汇编指令均不予以处理 EQU赋值命令 格式 字符名称EQU项 数或汇编符号 功能 把 项 赋给 字符名称 注意 字符名称不等于标号 其后没有冒号 其中的项 可以是数 也可以是汇编符号 EQU赋值过的符号名可以用作数据 代码地址 位地址或一个立即数 可以是8位的 也可以是16位的 例如 EQU赋值命令 例1 AAEQUR1MOVA AA AA代表工作寄存器R1 EQU赋值命令 例2 A10EQU10D

9、ELYEQU07EBHMOVA A10 A10作为片内的一个直接地址LCALLDELY DELY作为一个16位子程序的入口地址 DATA数据地址赋值命令 格式 字符名称DATA表达式功能 与EQU类似 但有以下差别 EQU定义的字符名必须先定义后使用 而DATA定义的字符名可以后定义先使用 用EQU伪指令可以把一个汇编符号赋给一个名字 而DATA只能把数据赋给字符名 DATA数据地址赋值命令 3 DATA语句可以把一个表达式的值赋给字符名称 其中的表达式应是可求值的 DATA伪指令在程序中用来定义数据地址 DB定义字节命令 格式 DB 项或项表 功能 通知汇编程序从当前ROM地址开始 保留一个

10、字节或字节串的存储单元 并存入DB后的数据 注意 项或项表可以是一个字节 用逗号隔开的字节串或括在单引号中的ASCII字符串 例如 DB定义字节命令 ORG2000HDB0A3HLIST DB26H 03HSTR DB ABC 经汇编后 2000H A3H 2001H 26H 2002H 03H 2003H 41H 2004H 42H 2005H 43H 41H 42H 43H分别为A B C的ASCII码 DW定义字命令 格式 DW16位数据项或项表功能 把DW后的16位数据项或项表从当前地址连续存放 每项数值为16位二进制数 高8位先放 低8位后存放 DW用于定义一个地址表 例如 DW定义

11、字命令 ORG1500HTABLE DW7234H 8AH 10H 经汇编后 1500H 72H 1501H 34H 1502H 00H 1503H 8AH 1504H 00H 1505H 10H DS定义存储空间命令 格式 DS表达式功能 在汇编时 从指定地址开始保留DS之后表达式的值所规定的存储单元以备后用 例如 DS定义存储空间命令 ORG1000HDS08HDB30H 8AH汇编后 从1000H保留8个单元 从1008H按DB命令给内存赋值 即 1008H 30H 1009H 8AH BIT位地址符号命令 格式 字符名BIT位地址功能 把BIT后的位地址值赋给字符名 其中字符名不是标号

12、 其后没有冒号 但字符名是必须的 BIT位地址符号命令 例如 A1BITP1 0A2BIT02H汇编后 P1口第0位的位地址90H就赋给了A1 而A2的值则为02H 4 1 4编程的方法和技巧 一 模块化的程序设计方法二 编程技巧 一 模块化的程序设计方法 1 程序功能模块化的优点2 划分模块的原则 1 程序功能模块化的优点 单个模块结构的程序功能单一 易于编写 调试和修改 便于分工 从而可使多个程序员同时进行程序的编写和调试工作 加快软件研制进度 程序可读性好 便于功能扩充和版本升级 对程序的修改可局部进行 其它部分可以保持不变 对于使用频繁的子程序可以建立子程序库 便于多个模块调用 2 划

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

14、寄存器 5 用累加器传递入口参数或返回参数比较方便 在子程序中 一般不必把累加器内容压入堆栈 4 1 5汇编语言程序的基本结构 一 顺序程序二 分支程序三 循环程序 一 顺序程序 顺序程序是最简单的程序结构 即顺序结构 程序按顺序一条一条地执行指令 例1双字节加法 被加数地址 addr2 addr1 加数地址 addr4 addr3 和在 addr2 addr1中 例2 双字节求补子程序CPLD算法 正数不变 负数取反 1解 入口参数 R7R6 待求补码的16位负数出口参数 R7R6 求补后的16位数 CPLD MOVA R6CPLA 取反ADDA 1MOVR6 AMOVA R7CPLAADD

15、CA 0MOVR7 ARET 例3拆字 将片内RAM20H单元的内容拆成两段 每段四位 并将它们分别存入21H与22H单元中 程序如下 二 分支程序 程序分支是通过条件转移指令实现的 即根据条件对程序的执行进行判断 满足条件则进行程序转移 不满足条件就顺序执行程序 分支程序又分为单分支和多分支结构 多分支程序是首先把分支程序按序号排列 然后按序号值进行转移 程序分支判断条件 在MCS 51指令系统中 通过条件判断实现单分支程序转移的指令有 JZ JNZ CJNE DJNZ等此外还有以位状态作为条件进行程序分支的指令如 JC JNC JB JNB JBC等使用这些指令可以完成0 1 正 负 以及

16、相等 不相等作为各种条件判断依据的程序转移 简单分支程序 例1 2Path asm 设内部RAM30H 31H单元中存放两个无符号数 试比较它们的大小 将较小的数存放在30H单元 较大的数存放在31H单元解这是个简单分支程序 可以使用两数相减 若CY 1 则被减数小于减数 采用JC指令进行判断 程序流程图和程序如下 简单分支程序 例1 例2 3Path asm 设变量X存入30H单元 求得函数Y存入31H单元 按下式计算Y的值X 1 X 10 Y 0 10 X 5 X 1 X10时 采用CJNE和JC以及CJNE和JNC指令进行判断 程序流程图和代码 多重分支程序 多重分支程序 ORG100HSTART MOVA 30H 取XCJNEA 5 NEXT1 与5比较NEXT1 JCNEXT2 X 5INCR0 假设X 10 Y X 1CJNEA 11 NEXT3 与11比较NEXT3 JNCNEXT4 X 10 转NEXT4MOVR0 0 10 X 5 Y 0SJMPNEXT4NEXT2 MOVR0 ADECR0 X 5 Y X 1NEXT4 MOV31H R0 存结果END 多路分支程序

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号