单元四汇编语言程序设计

上传人:工**** 文档编号:579285792 上传时间:2024-08-26 格式:PPT 页数:34 大小:287.52KB
返回 下载 相关 举报
单元四汇编语言程序设计_第1页
第1页 / 共34页
单元四汇编语言程序设计_第2页
第2页 / 共34页
单元四汇编语言程序设计_第3页
第3页 / 共34页
单元四汇编语言程序设计_第4页
第4页 / 共34页
单元四汇编语言程序设计_第5页
第5页 / 共34页
点击查看更多>>
资源描述

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

1、单元四单元四 汇编语言程序设计汇编语言程序设计4.1 4.1 任务七单片机计数任务七单片机计数4.2 4.2 任务八任务八LEDLED显示电路显示电路返回主目录4.1任务七单片机计数学习目标:通过学习任务七的完成方法,掌握MCS-51单片机汇编语言中的伪指令的功能特点。 任务描述:利用实验开发板上的555振荡电路产生的4HZ的脉冲信号进行计数,要求每计十个数单灯向左移动一次。4.1.1硬件电路ORG0000HLJMPMAINORG0030HMAIN:MOVTMOD,#06HMOVTH0,#0F6HMOVTL0,#0F6HSETBTR0MOVA,#0FEHLOOP:MOVP1,AJBCTF0,M

2、LOOPSJMPLOOPMLOOP:RLASJMPLOOPEND4.1.2程序设计硬件演示:用用“伟福伟福”模拟仿真软件进行程序的编辑、编译。模拟仿真软件进行程序的编辑、编译。 打开打开“ISP下载软件下载软件”将目标文件下载到将目标文件下载到ISP-4实验实验 开发板上的开发板上的AT89S51单片机芯片,观察程序运行单片机芯片,观察程序运行 结果。结果。提出问题:1 1、ORG ENDORG END这样指令有什么意义?这样指令有什么意义? 2 2、什么是伪指令、什么是伪指令? ?有哪些常用伪指令有哪些常用伪指令? ?4.1.3源程序编辑、编译、下载1.什么是伪指令伪指令又称汇编程序控制译码

3、指令,属说明性汇编指令。伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。如EDN表示编译到此结束。 4.1.4相关知识-伪指令(1 )定位伪指令ORG格式:标号:ORG地址表达式功能:规定程序块或数据块存放的起始位置。例如:ORG1000H ;MOVA,#20H表示下面指令MOVA,#20H存放于1000H开始的单元(2)定义字节数据伪指令DB格式:标号:DB字节数据表功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。2.常用伪指令例如:ORG1000HTAB:DB2BH,

4、0A0H,A,2*4;表示从1000H单元开始的地方存放数据2BH,0A0H,41H(字母A的ASCII码),08H(3) 定义字数据伪指令DW格式:标号:DW字数据表功能:与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在前,低位在后。例如:ORG1000HDATA:DW324AH,3CH;表示从1000H单元开始的地方存放数据32H,4AH,00H;3CH(3CH以字的形式表示为003CH)(4)定义空间伪指令DS格式:标号:DS表达式功能:从指定的地址开始,保留多少个存储单元作为备用的空间。例如:ORG1000HBUF:DS50;TAB:DB22H;22H存放在1032H单元

5、。表示从1000H开始的地方预留50(1000H1031H)个存储字节空间。 (5) 符号定义伪指令EQU或“=”格式:格式:符号名符号名 EQUEQU表达式表达式或或符号名符号名= =表达式表达式功功能能:将将表表达达式式的的值值或或某某个个特特定定汇汇编编符符号号定定义义为为一一个个指指定定的的符符号号名名,只只能能定定义义单单字字节节数数据据,并并且且必必须须遵遵循循先先定定义义后使用的原则,因此该语句通常放在源程序的开头部分。后使用的原则,因此该语句通常放在源程序的开头部分。 例如:例如:LEN=10LEN=10SUMEQU21HSUMEQU21HMOVAMOVA,#LEN#LEN;执

6、行指令后,累加器;执行指令后,累加器A A中的值为中的值为0AH0AH (6)数据赋值伪指令DATA格式:格式:符号名符号名 DATADATA表达式表达式功功能能:将将表表达达式式的的值值或或某某个个特特定定汇汇编编符符号号定定义义为为一一个个指指定定的的符符号号名名,只只能能定定义义单单字字节节数数据据,但但可可以以先先使使用用后后定定义义,因此用它定义数据可以放在程序末尾进行数据定义。因此用它定义数据可以放在程序末尾进行数据定义。例如:例如:MOVAMOVA,#LEN#LENLENDATA10LENDATA10尽尽管管LENLEN的的引引用用在在定定义义之之前前,但但汇汇编编语语言言系系统

7、统仍仍可可以以知道知道A A的值是的值是0AH0AH。7.数据地址赋值伪指令XDATA格式:格式:符号名符号名 XDATAXDATA表达式表达式功功能能:将将表表达达式式的的值值或或某某个个特特定定汇汇编编符符号号定定义义为为一一个个指指定定的的符符号号名名,可可以以先先使使用用后后定定义义,并并且且用用于于双双字字节节数数据定义。据定义。例如:例如:DELAYXDATA0356HDELAYXDATA0356H LCALLLCALL DELAYDELAY ;执执行行指指令令后后,程程序序转转到到0356H0356H单单元执行元执行8.汇编结束伪指令END格式:格式: 标号:标号:ENDEND

8、功功能能:汇汇编编语语言言源源程程序序结结束束标标志志,用用于于整整个个汇汇编编语语言程序的末尾处。言程序的末尾处。小结:小结:1.伪指令在程序中的作用是什么?伪指令在程序中的作用是什么?2.单片机汇编语言程序中常用的有哪些伪指令?单片机汇编语言程序中常用的有哪些伪指令?思考与练习:思考与练习:4.24.34.2任务八LED显示电路学习目标:通过学习任务八的完成方法,掌握单片机汇编语言程序设计的结构化设计方法,如分支结构、循环结构、子程序结构、查表程序结构等。任务描述:将09这十个数循环送P1口七段LED上显示。4.2.1硬件电路硬件电路START:ORG0100HMAIN:MOVR0,#00

9、HMOVDPTR,#TABLEDISP: MOV A,R0 MOVCA,A+ADPTR MOVP1,A ACALLDELAY INC R0CJNE R0,#0AH,DISPAJMP MAINDELAY:MOVR1,#0FFHLOOP0:MOVR2,#0FFHLOOP1:DJNZR2,LOOP1DJNZR1,LOOP0RETTABLE:DB0C0H,0F9H, DB0A4H,0B0H DB99H,92H DB82H,0F8HDB80H,90HEND4.2.2程序设计4.2.3源程序编辑、编译、下载硬件演示:用“伟福”模拟仿真软件进行程序的编辑、编译。 打开“ISP下载软件”将目标文件下载到ISP

10、-4实验 开发板上的AT89S51单片机芯片,观察程序运行 结果。提出问题: 单片机源程序有哪些常用结构形式? 一个应用系统的汇编语言源程序,无论其系统功能的要求简单还是复杂,其程序结构的组成基础总是由简单程简单程序、分支程序、循环程序、子程序、查表程序序、分支程序、循环程序、子程序、查表程序等结构化程序块组合而成。P P P P2 2 2 2入口入口入口入口出口出口出口出口P P P P1 1 1 1P P P P3 3 3 3(a) 顺序结构过程过程过程过程A A A A过程过程过程过程B B B B是是是是否否否否入口入口入口入口出口出口出口出口条件满足?条件满足?条件满足?条件满足?(

11、b) 分支结构过程过程过程过程是是是是否否否否入口入口入口入口出口出口出口出口条件满足?条件满足?条件满足?条件满足?(c) 循环结构4.2.4相关知识-MCS-51基础程序设计1.1.单片机基本程序结构单片机基本程序结构2.分支程序结构条件成立?NY(1)单分支程序结构只有一个入口两个出口条件中只有两种可能性出现条件一般由运算或检测的状态标志提供通常使用条件判断指令实现单分支结构程序的典型形式NY开始程序段1条件成立?程序段(2)结束分支程序(2)分支程序(1)NY开始程序段1条 件 成 立?程序段(2)结束程序段(3)(A)=nS0S1Sn(2)多分支程序结构只有一个入口多个出口条件有多种

12、可能性出现通常使用散转指令实现JMPA+DPTR采用转移指令表的散转程序例:编出要求根据R的内容转向各个操作程序的程序。即当(R)=0,转向OPR0(R)=1,转向OPRl(R)=n,转向OPRn解:程序清单如下:MOVA,RRLA;分支序号值乘2MOVDPTR,#BRTABL;转移指令表首址JMPA+DPTR;转向形成的散转地址BRTABL:AJMPOPR0;转移指令表AJMPOPR1AJMPOPRn散转程序举例散转程序举例散转程序举例散转程序举例3.循环程序结构(1)循环结构程序的基本组成(2)循环结构程序举例两条转移指令:DJNZRn,rel;以工作寄存器Rn为控制寄存器DJNZdire

13、ct,rel;以直接寻址单元作控制寄存器控制计数器方式:一般采用减1计数(递减方式)。(3)多重循环结构程序应用情况:复杂问题或是循环数超出256。多重循环结构:即循环中包含循环程序或一个大循环中包含多个小循环程序,也称循环嵌套。循环重数不限,但不能交叉。例如:双重软件延时START:MOVR3,#DATA1;外层循环计数初值LOOP1: MOVR2,#DATA2;内层循环计数初值LOOP2: NOPNOPNOPDJNZR2,LOOP2;(R2)-10,转LOOP2DJNZR3,LOOP1;(R3)-10,转LOOP1END;结束4.子程序结构(1)子程序的结构子程序的结构A、必须标明子程序的

14、入口地址,又称首地址,以便在主程序调用;B、必须以返回指令RET结束子程序。参数传递A、传递数据B、传递地址。主程序的现场保护和恢复A、调用前保护、返回后恢复。B、调用后保护、返回前恢复。主程序PUSHPSW;将PSW、A、DPTR等入栈保护PUSHACCPUSHBPUSHDPLPUSHDPHPUSHPSW,#10H;选用工作寄存器组2,将0组保护LCALLaddr16;调用子程序addr16POPDPH;出栈POPDPLPOPBPOPACCPOPPSWA、调用前保护、返回后恢复ADDR:PUSHPSW;子程序现场保护 PUSHACC PUSHB PUSHDPL PUSHDPH MOVPSW,

15、#08H;选用工作寄存器组1,0组保护 ;子程序主体 POPDPH;现场恢复POPDPLPOPBPOPACCPOPPSWRET;返回B、调用后保护、返回前恢复4.子程序结构(2)子程序的特性通用性浮动性可递归性子程序的说明文件子程序名:标明子程序功能的名称。子程序功能:简要说明子程序能完成的主要功能,包括重要算法、参量要求及有关存储单元配置等。子程序调用:指明本子程序还需调用哪些子程程序流程图及程序清单。5.查表程序结构 查表指令MOVCA,A+DPTRMOVCA,A+PC DPTR作为基地址查表A、将待查表格的首地址置入DPTR基址寄存器;B、将待查的表格具体项数值置入变址寄存器A中;C、执

16、行指令PC作为基地址查表A、表格不能放在查表指令的下一条。B、表格下移若干字节。C、A赋初值时使用ADDA,#DATA;#DATA为表格与查表指令之间的地址差。使用MOVCA,A+DPTR指令来查表,程序清单如下:MOVDPTR,#JZ;子程序入口地址表首址RLA;键码值乘以MOVR2,A;暂存MOVCA,A+DPTR;取得入口地址低位PUSHA;进栈暂存INCAMOVCA,A+DPTR;取得入口地址高位MOVDPH,APOPDPLCLRAJMPA+DPTR;转向键处理子程序JZ:DBRK0L;处理子程序入口地址表DBRK0HDBRK1LDBRK1HDBRK2LDBRK2H查表程序举例查表程序

17、举例查表程序举例查表程序举例6.单片机源程序的基本格式单片机应用系统源程序的基本格式及其部分地址分配示例:ORG0000HLJMPSTART;转向主程序ORG0003HLJMPINTE0;转向外中断0服务子程序ORG000BHLJMPINTTFO;转向定时/计数器0服务子程序;可按实际需要设置服务子程序ORG0030HSTART:MOVA,#00H;主程序从0030H单元开始MOVR1,#dataMOVR0,#00HDJNZR1,LOOP0;初始化程序段;主程序主体区段ORG3100HA0:;子程序A0RETA1;子程序A1RETORG3100hINTIE0:;外部中断0中断服务程序RETIORG4800HINTTFO:;定时/计数器0中断服务程序RETI;其他中断服务程序段ORG5500HDBL0:DB43,56,;固定表格参量区段END;结束小结:小结:1.汇编语言程序设计中有哪些结构化程序类型?汇编语言程序设计中有哪些结构化程序类型?2.子程序编制时要注意哪些问题?子程序编制时要注意哪些问题?思考与练习:思考与练习:4.214.23实验实训:实验实训:项目5 控制转移和子程序调用课题项目6 简单单片机应用实例设计要求:课外完成编程、相关硬件安装、仿真与调试

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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