收藏 分享(赏)

第4章-at89s51汇编语言程序设计.ppt

上传人:无敌 文档编号:84766 上传时间:2018-03-11 格式:PPT 页数:23 大小:262.52KB
下载 相关 举报
第4章-at89s51汇编语言程序设计.ppt_第1页
第1页 / 共23页
第4章-at89s51汇编语言程序设计.ppt_第2页
第2页 / 共23页
第4章-at89s51汇编语言程序设计.ppt_第3页
第3页 / 共23页
第4章-at89s51汇编语言程序设计.ppt_第4页
第4页 / 共23页
第4章-at89s51汇编语言程序设计.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、第4章 AT89S51汇编语言程序设计,主要内容: 1. 程序设计的一般方法 2. 应用程序设计举例,重点理解:程序设计的一般方法和技巧,汇编语言,汇编语言源程序,目标程序,汇编指令与机器码指令有一一对应的关系。,一、单片机编程语言,高级语言,机器语言,用汇编语言编写程序效率高,占用存储空间小,运行速度快。,可读性差,离不开具体的硬件,是面向“硬件”的语言。,4.1 汇编语言程序设计概述,两种基本语句:,二、汇编语言语句和格式,汇编时产生相应的机器代码。执行时对应机器的一种操作。,汇编时无机器代码与之对应。控制汇编过程的一些控制命令。,4.1 汇编语言程序设计概述(续),指令语句,伪指令语句,

2、“伪”体现在该种指令汇编后无相应机器代码产生。,具有控制汇编程序的输入/输出、定义数据和符号、 条件汇编、分配存储空间等功能。,ORG定位END结束汇编EQU赋值DB定义字节DW定义数据字DS定义存储区BIT位定义,常用的伪指令(七条),三、 伪指令,4.1 汇编语言程序设计概述(续),1ORG(ORiGin)汇编起始地址命令,(1)规定程序的起始地址。若省略,则目标程序 从0000H地址开始。,ORG2000HORG2500HORG3000H,ORG2500HORG2000HORG3000H,(2)可多次用ORG指令,以规定不同程序段的起始地址。但地址必须由小到大,且不能交叉、重叠。,例:,

3、三、 伪指令(续),2. END(END of Assembly)汇编终止命令,整个源程序只能有一条END命令,且位于最后。,3. EQU(EQUate)标号赋值命令, 用于给标号赋值,赋值后标号值在整个程序有效。,例: TEST EQU 2000H,表示TEST=2000H,汇编时,凡是遇到TEST,均以2000H来代替。,若出现在程序中间,其后的源程序将不进行汇编。,三、 伪指令(续),4DB(Define Byte)定义数据字节命令,用于在程序存储器连续单元中定义字节数据,例: ORG 2000H DB30H,24,”C”,汇编后 (2000H)=30H (2001H)=18H (十进制

4、数24) (2002H)=43H (字符“C”的ASCII码),三、 伪指令(续),5DW(Define Word)定义数据字命令,用于在程序存储器的连续单元中定义16位的数据字,例: ORG 2000H DW 1246H,7BH,10,汇编后 (2000H)=12H ;第1个字 (2001H)=46H (2002H)=00H ;第2个字 (2003H)=7BH (2004H)=00H ;第3个字 (2005H)=0AH,三、 伪指令(续),6DS(Define Storage)定义存储区命令,用于在程序存储器中预留指定数目的连续单元,例1:TABEL: DS10,;从TABEL代表的地址开始

5、,保留10个连续的地址单元。,例2:ORG 2000H DS 10 H,;从2000H地址开始,保留16个连续地址单元。,注意:DB、DW和DS命令只能对程序存储器有效, 不能对数据存储器使用。,三、 伪指令(续),三、 伪指令(续),7BIT 位定义命令,用于给字符名称赋以位地址。,例1 :QA BIT P1.6,; 把P1.6的位地址赋给变量QA。,位地址可以是符号地址,也可是绝对位地址。,例2: QA BIT 96H,一、单片机汇编语言程序设计的基本步骤:,4.2 AT89S51汇编语言程序设计,分析题意、明确要求、设计算法等。,确定数据结构:合理地选择和分配内存单元 以及工作寄存器;,

6、画出程序流程图。,编写汇编源程序。,仿真、调试和优化程序。,固化程序。,4.2 AT89S51汇编语言程序设计(续),程序编写做到:占用存储空间少;运行时间短;,结构清晰,易读、易于移植。,按结构化程序设计思想,程序都可由:,顺序结构,分支结构,循环结构,等构成,二、单片机汇编语言程序设计思想:,分析:,0 1 0 1 0 1 1 0,4.2 AT89S51汇编语言程序设计(续),三、程序举例-顺序程序,例1:拆字程序把70H的内容拆开,高位送71H低位,低位送72H低位,70H,71H,72H,0 0 0 0 0 1 0 1,0 0 0 0 0 1 1 0,例1:拆字程序(续),4.2 AT

7、89S51汇编语言程序设计(续),ORG0000HAJMP MAIN ORG0100H,MOV70H,#56HMOVA, 70H,SWAP AANLA,#0FHMOV71H,A,MOVA,70H,ANLA,#0FHMOV72H,A,END,MAIN:,4.2 AT89S51汇编语言程序设计(续),三、程序举例-分支程序,通常用条件转移指令形成简单分支结构。,如: 判(A) = Z 或 NZ ,转移,判(CY)= 1 或 0 ,转移,判(bit)=1 或 0 ,转移,CJNE 比较不相等转移,例2:假设内RAM 30H、31H单元内容分别为a、b, 按下式计算Y值,并将结果存于32H单元中。 a

8、-b (a0) a+b (a 0),Y =,4.2 AT89S51汇编语言程序设计(续),ORG0000HAJMP MAIN ORG0100H,MOVA, 30H,JBACC.7, JIAFA,CLRCSUBBA,31H,SJMP DONE,ADDA,31H,MOV32H,A,END,MAIN:,JIAFA:,DONE:,例2程序清单,4.2 AT89S51汇编语言程序设计(续),三、程序举例-循环程序,例3:数据块传递程序:将内RAM 60H6FH 内容传送到内 RAM 70H7FH 单元,ORG0000HAJMP MAIN ORG0100H,MOV R0,#60HMOV R1,#70HMO

9、V R2,#10H,MOV A,R0,MOV R1,A,INC R0INC R1,DJNZ R2,ZHC,END,NOP,MAIN:,ZHC:,4.2 AT89S51汇编语言程序设计(续),子程序是单独编写的程序段,需要时可调用。,简化程序结构,减少占用程序存储空间。,子程序的形式与要求:,标明子程序的入口地址,以方便调用;,指出入口与出口参数,以正确进行参数传递;,常采用工作寄存器或累加器、地址指针寄存器或堆栈进行参数传递。,注意保护现场;,子程序的末尾用RET返回指令结束。,子程序可以嵌套。,三、程序举例-子程序,4.2 AT89S51汇编语言程序设计(续),有关指令:,1、堆栈操作指令,

10、2、子程序调用指令,;绝对调用指令,;长调用指令,ACALL addrll,LCALL addr16,3、子程序返回指令:,RET,PUSH direct,POP direct,;入栈指令,;出栈指令,三、程序举例-子程序(续),子程序,4.2 AT89S51汇编语言程序设计(续),基本结构,MAIN: ;MAIN为主程序入口标号 LCALL SUB ;调用子程序SUB SUB: PUSH PSW ;现场保护 PUSH Acc POP Acc ;现场恢复,注意要先进后出 POP PSW RET ;最后一条指令必须为RET,三、程序举例-子程序(续),4.2 AT89S51汇编语言程序设计(续)

11、,例5:要求在P1.0引脚上产生周期为4ms的方波。,三、程序举例-子程序(续),例5程序清单,FB: CPL P1.0 ;P1.0取反 ACALL DL2ms SJMP FBDL2ms: MOV R7,#10 ;延时2ms的子程序DL1: MOV R6,#48 DL2: NOP NOP DJNZ R6,DL2 DJNZ R7,DL1 RET END,设晶振为12MHZ,则机器周期为1us。 所以子程序延时:1+1+(1+1+2)48+210+2 = 1953 (us),三、程序举例-子程序(续),已知程序执行前有A=02H,SP=42H, (41H)=FFH, (42H)=FFH。下述程序执行后,A=? SP=? (41H)=? (42H)=? PC=?,POPDPH,POPDPL,MOVDPTR,#3000H,RLA,MOVB,A,MOVC A,A+DPTR,PUSHAcc,MOVA,B,INCA,MOVC A,A+DPTR,PUSHAcc,RET,ORG#3000H,DB 10H,80H,30HDB 80H,50H,80H,习题讲解,A=80H SP=40H (41H)=50H (42H)=80H PC=8050H,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报