单元4_汇编语言程序设计03

上传人:第*** 文档编号:48809787 上传时间:2018-07-20 格式:PPT 页数:19 大小:154.50KB
返回 下载 相关 举报
单元4_汇编语言程序设计03_第1页
第1页 / 共19页
单元4_汇编语言程序设计03_第2页
第2页 / 共19页
单元4_汇编语言程序设计03_第3页
第3页 / 共19页
单元4_汇编语言程序设计03_第4页
第4页 / 共19页
单元4_汇编语言程序设计03_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《单元4_汇编语言程序设计03》由会员分享,可在线阅读,更多相关《单元4_汇编语言程序设计03(19页珍藏版)》请在金锄头文库上搜索。

1、 授课日期 班次 授课时数 2 课题: 任务八 LED显示电路(二) 教学目的:掌握子程序调用和保护现场的问题 熟悉两条专门的查表指令 重点:子程序调用和保护现场的问题 以及查表指令 难点:现场保护的问题 教具:多媒体 作业:4.23 4.24 自用参考书:单片机应用技术耿长清主编、单片机应用技术刘守义主编 教学过程:一、复习提问1.描述任务LED显示电路2.分支程序和循环程序的设计二、新授由任务八LED显示电路的控制程序引入本次课内容1.子程序的概念(由实际应用中遇到带有通用性的问题引出子程序的概念)2.子程序的结构3.如何保护现场?(根据生活中的具体实例提出现场保护的问题)4.参数的传递方

2、法可利用累加器或寄存器、利用存储器、利用堆栈指针5.两条专门的查表指令用DPTR作基地址的查表步骤、用PC内容作基地址的查表步骤 6.程序设计举例7.课堂小结 课后小结:4.2 任务八 LED显示电路 4.2.4 相关知识 子程序的概念通常把这些基本操作功能编制为程序段作为独立的子程序, 以供不同程序或同一程序反复调用。在程序中需要执行这种操作的地方放置一条调用指令, 当程序执行到调用指令, 就转到子程序中完成规定的操作, 并返回到原来的程序继 续执行下去。 子程序结构能供调用的子程序,其结构应具备:v必须标明子程序的入口地址,又称首地址,以便程序调用v必须以返回指令RET结束子程序。 4.2

3、 任务八 LED显示电路 4.2.4 相关知识 参数传递在使用调用指令不附带任何参数时,参数的互相传递要由设计者通过程序安排。一般可采用以下方法:v传递数据。将需传递的参数通过工作寄存器Rn或累加器A传递给子程序。即在主程序调用子程序前将参数差额主选定的工作寄存器组R0R7、累加器A中,供子程序读取或者将参数在调用前先压入堆栈,进入子程序后再从堆栈中读出。v传递地址。将要传递的参数存放在数据存储器中,将其地址通过工作寄存器R0、R1或数据指针DPTR传递,供子程序读取参数。 4.2 任务八 LED显示电路 4.2.4 相关知识 现场保护主程序的现场保护和恢复。子程序(包括中断服务程序)是个独立

4、的程序段,在子程序执行过程中常需用到通用单元,例如:工作寄存器R0R7、累加器A、数据指针DPTR,以及有关标志、状态位等。而这个单元中的原内容在调用子程序结束之后 的主程序中仍有用,需进行保护,称现场保护。在执行完子程序并返回继续执行主程序前应恢复其原内容,称现场恢复。一般有两种现场保护/恢复方式:4.2 任务八 LED显示电路 4.2.4 相关知识v调用前保护、返回后恢复。这种方式是在主程序逻辑的调节器用指令前进行现场保护,在调用指令之后,即返回原断点处进行恢复现场。其程序结构如下所示: 主程序 PUSH PSW ;将PSW、A、DPTR等入栈保护PUSH APUSH BPUSH DPL

5、PUSH DPH PUSH PSW,#10H ;选用工作寄存器组2,将0组保护4.2 任务八 LED显示电路 4.2.4 相关知识LCALL addr16 ;调用子程序addr16POP DPH ;出栈POP DPLPOP BPOP APOP PSW这种结构灵活,可根据实际需要实现现场保护/恢复。v调用后保护、返回前恢复。这种结构是在子程序的开始部分进 行现场保护,而在子程序的结束部分、返回指令前恢复。其程序 结构如下所示: 4.2 任务八 LED显示电路 4.2.4 相关知识;子程序ADDR:PUSH PSW 现场保护PUSH APUSH BPUSH DPLPUSH DPHMOV PSW,#

6、08H ;选用工作寄存器组1,0组保护;子程序主体POP DPH 现场恢复POP DPL POP B4.2 任务八LED显示电路 4.2.4 相关知识POP APOP PSWRET ;返回这是子程序标准格式,现场保护/恢复内容固定,但程序规范、清晰。上述两种方式可由设计者任选。 4.2 任务八 LED显示电路 4.2.4 相关知识 子程序特性随着汇编语言程序设计技术的发展,子程序的应用越显重要。因此 ,对子程序的设计具有较高要求,除通常在程序设计中应遵循的原 则外,还应具备以下特性:v通用性严格讲,子程序有通用和专用两种。前者如数制转换、浮点运算等 子程序可广泛应用于同系列单片机的任何应用系统

7、,后者仅限用于 同一个应用系统中。特别是前者,都应注意子程序的通用性。为了使子程序具有通用性,在设计中要解决的一个重要问题,就是 确定哪些变量作为参量以及何传递参量。 4.2 任务八 LED显示电路 4.2.4 相关知识v可浮动性可浮动性是指子程序段可安置在程序存储器的任何区域。为此, 在子程序中应避免选用绝对转移地址。v可递归和可重入性子程序能自己调用自己和同时能被多个任务(或多个用户程序) 调用的特性,分别称之为子程序的可递归性和可重入性。这类子 程序常在庞大而复杂的程序中应用,在单片机应用程序设计中较 少用到。 4.2 任务八 LED显示电路 4.2.4 相关知识v子程序说明文件对于通用

8、子程序,为便于各种应用程序的选用,要求在子程序编制、 调试完成后应提供一个说明文件。其内容应包含以下内容。子程序名。标明子程序功能的名称。子程序功能。简要说明子程序能完成的主要功能,包括重要算法、参 量要求及有关存储单元配置等。子程序调用。指明本子程序还需调用哪些子程序。附子程序流程图及程序清单。由于子程序结构在程序设计中应用极为普遍,因此,一般在指令集中 均设有子程序调用指令。AT89S系列的指令集中,考虑到程序存储器 空间的限制和节省,特设置了绝对调用和长调两条指令,供实际应用 时选择。 4.4 任务八 LED显示电路4.2.4 相关知识 查表程序结构查表程序是一种常用程序, 它广泛使用于

9、 LED显示控制、 打印机打印控制、数据补偿、数值计算、转换等功能程序中, 这类程序具有简单、执行速度快等特点。 所谓查表法, 就是预先将满足一定精度要求的表示变量与函数值之间关系的一张表求出, 然后把这张表存于单片机的程序存储器中, 这时自变量值为单元地址, 相应的函数值为该地址单元中的内容。查表, 就是根据变量 X在表格中查找对应的函数值 Y, 使 Y=f(X)。 4.4 任务八 LED显示电路4.2.4 相关知识 两条查表指令: MOVC A, A+PCMOVC A, A+DPTR选用DPTR为首地址指针时表格参量可存放在64KB范围内的任何区段,可供无限次查表,选用PC当前值为首地址指

10、针时表硌参量必须设置在紧跟查表指令(MOVC)之后,基本上只能一次性查表,编程时应根据实际情况进行选择,一般以选择DPTR为基址指针的查表指令灵活、方便,可省去一些麻烦。 4.4 任务八 LED显示电路4.2.4 相关知识选用DPTR作为基地址的查表指令时,其操作可分3步进行:v将待查表格的首地址置入DPTR基址寄存器;v将待查的表格具体项数值置入变址寄存器A中;v执行指令MOVC A,A+DPTR将查表结果值读入累加器A中。 4.4 任务八 LED显示电路4.2.4 相关知识选用PC当前值作为基地址的查表指令时,由于PC的当前值正是查表指 令的下一条指令的第一个字节的地址值,亦即表格数据串的

11、首地址, 当执行完查表指令,读取到表格数据后仍需从这个PC的当前值继续往 下执行,显然两者发生重叠,为解决这个矛盾,势必将表格下移若干 个字节,以便设置一条跳转指令跳过表格串继续安排顺序往下执行的 程序。把表格串下移的字节数加到变址寄存器A中,即在查表指令前 加一条指令。ADD A,#dataA中为经动态运算得到的待查表格数的项数。Data为表格串下移的字 节数,亦即PC的当前值到下移后的表格串首地址的距离数。这个距离 数显然不宜太大,因为它将影响表格串的长度,两者之和不能超过 565B,这种表格一般属一次性查找,因为PC的当前值随程序的执行而 改变 4.4 任务八 LED显示电路 程序设计举

12、例【例4.8 】 4位BCD码整数转换成二进制整数入口参数:BCD码字节地址指针R0,位数存于R2中。出口参数:二进制数存于R3R4中。算法:A=103a3+102a2+10a1+a0程序流程如7.7所示。子程序清单如下:BCDA:PUSH PSW ;现场保护PUSH APUSH BMOV PSW,#08HMOV R3,#00HMOV R2,#3 ;BCD码D的位数MOV A,R0 ; a0-R44.4 任务八 LED显示电路 程序设计举例MOV R4,ABCKB:MOV A,R3 ;(R3R4)10 MOV B,#10 ;R4MUL ABMOV R4,AXCH A,BMOV B,#10XCH

13、 A,R3MUL ABADD A,R3XCH A,R4INC R0 ;(R0)+1-R0ADD A,R0 ;( R3R4)- (R0)-RR3R44.4 任务八 LED显示电路 程序设计举例XCH A,R4ADDC A,#0MOV R3,ADJNZ R2,BCDB ;循环n-1次POP B ;恢复现场PIP APOP PSWRET ;返回上例中的R2内容是BCD码的位数n,本例中n=4,即两个字节4位BCD码,在程序中作为 循环控制寄存器的计数值为n-1=4-1=3,即本例循环3次即完成二次字节的BCD码转换 。本例采用乘10运算,也可采用除2运算进行转换。 课堂小结:1、什么是子程序?2、子程序的结构3、如何保护现场和传递参数?4、查表指令的查表步骤?作业:1、预习LED接口实验实训项目,完成预习报告、编写控制程序2、P106 4.23 4.24

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

当前位置:首页 > 办公文档 > PPT模板库 > 其它

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