网站大量收购闲置独家精品文档,联系QQ:2885784924

《单片机原理及接口技术》第四章汇编语言程序设计知识.ppt

《单片机原理及接口技术》第四章汇编语言程序设计知识.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《单片机原理及接口技术》第四章汇编语言程序设计知识要点

第四章 汇编语言程序设计 程序设计实例引入 实例 假设一个班有50个人, 共有3门选修课: 计算机算法 服装CAD设计 德语 请找出: 同时选了三门课的同学; 问题的解决 第一步 如何在计算机中表示选修某门课的所有同学? 问题的解决 第二步 设计思路:找出同时选了三门课的同学 几点启示 整体构思; 构建整体流程框图; 结构合理,流程清晰,简单明了; 局部模块化; 为什么要用流程图? 符合人进行逻辑思考的习惯 计算机从根本上来说,没有任何逻辑性,所以,你必须告诉它,先做什么,后做什么,遇到什么情况又该做什么,等等 流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器指令实现的小模块 4.1 程序设计过程 题意分析 画出流程图 分配内存及端口 编制源程序 仿真、调试程序 固化程序 2、编程技巧 程序功能模块化 尽量采用循环结构和子程序 少用无条件转移指令 多采用累加器来传递参数 注意现场保护,即压入堆栈 4.2 顺序程序设计 例:求多项式 a2-b 解:设a存放在R2中,b存放在R3中,结果存放在R6和R7中。 4.3 分支程序设计 根据不同的条件转向不同的处理程序 控制转移指令 AJMP、LJMP、SJMP 、JMP JZ、JNZ、CJNE、DJNZ 位转移指令 JC、JNC、JB、JNB、JBC 举例;累加器A内有一个16进制ASCII字符,要求转换成一个16进制数存放于A。 ASCII字符转换成16进制数规则: 数字0~9 :只需减30H 字母A~F :减30H,再减7 散转程序—多分支程序 散转程序是指通过修改某个参数后,程序可以有三个以上的流向,多用于键盘程序。 常用的指令是JMP @A+DPTR 4.4 循环程序设计 循环程序的结构 置循环初值 循环体 修改控制变量 循环终止控制 循环程序举例 流程图 程序:SOUT: MOVX A,@DPTR JNZ SOT1 RET SOT1: JNB TI,SOT1 CLR TI MOV SBUF,A INC DPTR SJMP SOUT 例:200名学生参加考试,成绩放在8031的外部RAM的一个连续存储单元,95~100分颁发A级证书,90~94分颁发B级证书,编一程序,统计获A、B级证书的人数。将结果存入内部RAM的两个单元。 ORG 0030H EG XDATA 1000H GA DATA 20H GB DATA 21H MOV GA,#00 MOV GB,#00 MOV DPTR,#EG MOV R2,#200 LOOP:MOVX A,@DPTR CJNE A,#95, LOOP1 4.5 查表程序 表格是事先存放在ROM中的,一般为一串有序的常数,例如平方表、字型码表等。 表格可通过伪指令DB来确定。 通过查表指令MOVC A,@A+DPTR MOVC A,@A+PC来实现。 使用 MOVC A,@A+PC须注意: 1.??? 使用传送指令将关键字送入ACC 2.? ADD A, #DATA指令对A进行修改: PC+DATA=表格首地址 3.??? MOVC A,@A+PC 完成查表. 例 : MOV A, X ADD A,#01H MOVC A,@A+PC RET DB 00,01,04,09,10H,19H,24H,31H,30H… 4.7 子程序设计 好处: 避免重复编程 简化程序的逻辑结构 缩短程序长度,节省存储单元 便于调试、增强可移植性 1、子程序编写注意的问题 子程序调用: ACALL、 LCALL 子程序返回: RET 子程序第一条必须有标号. 注意现场的保护和恢复 子程序嵌套注意的问题:嵌套深度与堆栈区大小的问题. 正确传递参数: 入口参数和出口参数. 2、 参数传递方法 用累加器或工作寄存器来传递参数 用指针寄存器来传递参数 用堆栈来传递参数 程序段参数传递(适于传递大量常数参数) (1)累加器或工作寄存器传递参数

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档