单片机课件--第六章汇编语言程序设计

上传人:tian****1990 文档编号:74742693 上传时间:2019-01-29 格式:PPT 页数:34 大小:383.77KB
返回 下载 相关 举报
单片机课件--第六章汇编语言程序设计_第1页
第1页 / 共34页
单片机课件--第六章汇编语言程序设计_第2页
第2页 / 共34页
单片机课件--第六章汇编语言程序设计_第3页
第3页 / 共34页
单片机课件--第六章汇编语言程序设计_第4页
第4页 / 共34页
单片机课件--第六章汇编语言程序设计_第5页
第5页 / 共34页
点击查看更多>>
资源描述

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

1、第六章汇编语言程序设计,汇编语言的基本知识 常用汇编程序设计方法 汇编语言的基本知识,汇编语言的基本知识,汇编语言的格式 LABLE:OPCODE ,OPRAND ;OMMENT 汇编语言的构成 指令性语句 指示性语句:伪指令 程序设计流程,伪指令,ORG : ORG 2000H END EQU: AAA EQU 20H MOV A,20H (MOV A,AAA) DATA (可前可后) DB 、DW BIT :A1 BIT 00H(MOV C,A1),程序设计流程,明确要求和要达到的目的 确定解决问题的计算方法和步骤 画出流程图 分配内存地址 按流程图编写程序 上机汇编、调试、修改及最后确定

2、源程序,$2 简单程序(顺序结构),大量使用数据传送类指令 注意正确选择指令以提高效率 编程将20单元内的两个BCD熟变换成ACSII码放在20H, 21H单元内(EX2.ASM),将20H单元内两个BCD码变换成相应的ASCII码放在21H:22H中,Org 0h Ljmp 2000h ORG 2000H MOV R0,#22H MOV R0,#00 MOV A,20H XCHD A,R0 ORL 22H,#30H SWAP A ORL A,#30H MOV 21H,A SJMP $ END 15BYTE ,11T,MOV A,20H MOV B,#10H DIV AB ORL B,#30H

3、 MOV 22H,B ORL A,#30H MOV 21H,A SJMP $ END ;15BYTE 14T,求16位二进制补码的绝对值,MOV A,20H CPL A ADD A,#01H ;INC A MOV 20H,A MOV A,21H CPL A ADDC A,#0 ANL A,#7FH MOV 21H,A SJMP $,$6.3 分支程序,根据程序要求无条件或有条件改变程序执行执行的顺序,选择程序的流向. 特点:程序中含有转移类指令 关键:正确选用转移指令,正确运用转移指令,无条件分支程序 程序设计者事先设计好的 LJMP、AJMP 、SJMP 有条件分支程序 根据已经执行的程序对

4、标志位、ACC或内部RAM的某些位的影响结果决定程序的流向 JZ/JNZ、CJNE、DJNZ、位控制转移类指令,注意,使用条件转移指令形成分支前一定安排可供条件转移指令进行判别的条件。 JC LOOP 正确选定所用的转移条件及转移目标地址,$循环程序,循环初始化 循环次数计数器,工作寄存器设初值等 循环体 尽量简练;注意地址指针的修改 循环控制 检查结束条件,及时退出循环,注意循环嵌套,允许外重循环嵌套内重循环 循环体不能交叉 不能从循环程序外部跳入循环程序内部,例,例:200名学生参加考试,成绩放在8031的外部RAM的一个连续存储单元,95100分颁发A级证书,9094分颁发B级证书,编一

5、程序,统计获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,LOOP1: JNC NEXT1 CJNE A,#90,LOOP2 LOOP2: JC NEXT INC GB SJMP NEXT NEXT1: INC GA NEXT: INC DPTR DJNZ R2,LOOP SJMP $ END,数据排序,常用

6、气泡法(两两比较法)它先使E100和E99进行比较,若E100E99,则两数交换,否则不动,然后E99和E98进行比较,按同样的原则,决定是否交换,一直比较下去,最后完成E2和E1的比较及交换。经过N-1次比较后,E1位置必然得到数组中的最大值。犹如一个气泡冒到水顶。如此下去,经过N-1次便完成N个数据的排序。,例:100个数据,从小到大进行排序,MOV R2,#100 BUB:MOV R0,#20H CLR F0 DEC R2 BL:CJNE R2,#0,BB MOV 7F,R2 MOV 20H,R0 MOV A,R0 INC R0 MOV 21H,R0,CJNE A,21H,LOP LOP

7、: JC B MOV R0,20H DEC R0 MOV R0,21H INC R0 SETB F0 B:DJNZ 7FH,BL JB F0,BUB BB:SJMP $,$查表程序的设计,主要用于: 复杂代码转换显示 数据补偿:传感器补偿 复杂函数计算: Y=SIN(X),查表指令,在51中有两条查表指令:MOVC A,A+DPTR 使用 MOVC A,A+PC须注意: 1. 使用传送指令将数据表格项数送入ACC 2. ADD A,#DATA指令对A进行修改:PC+DATA=表格首地址 3. MOVC A,A+PC 完成查表.,例1 ADD A,#01H MOVC A,A+PC RET DB

8、00,01,04,09,10H,19H,24H,31H,30H,51H,例2 设一巡回报警系统,对16路输入进行控制,现根据测量路数,找出每路的最大允许值.若大于允许值就报警.,TB3: MOV A,R2 ADD A,R2 MOV R3,A ADD A,#6 MOVC A,A+PC XCH A,R3 ADD A,#3 MOVC A,A+PC MOV R4,A RET TAB3:DW 1520,3721,4256 ; 表格最大长度256 DW ,散转程序设计,JMP A+DPTR 转移指令表 地址偏移量 采用”RET”指令进行散转,采用”RET”指令实行散转,RET执行后,堆栈的内容弹出后并装入

9、PC中,利用这个特点,将转向地址表存入堆栈,然后执行RET指令,即可转向相应的操作程序.,例采用”RET”指令实行散转,JP5:MOV DPTR,#TAB5 MOV A,R7 ADD A,R7 JNC NADD INC DPH NDD:MOV R3,A MOVCA,A+DPTR XCH A,R3,INC A MOVC A,A+DPTR PUSH A MOV A,R3 PUSH A RET TAB3:DW:OPR0,OPR1,OPR2,OPRN,子程序的设计,子程序和运算程序是程序设计的两大支柱. 1 子程序的概念:完成确定任务,并能为其他程序反复调用的程序段.要求子程序在结构上具有通用性和独立

10、性.例如:代码转换,运算程序等.,子程序编写注意的问题,子程序调用:ACALL LCALL 子程序返回:RET 子程序嵌套注意的问题:嵌套深度与堆栈区大小的问题. 子程序第一条必须有标号. 正确传递参数:入口参数和出口参数. 注意现场的保护和恢复,子程序的参数传递,通过寄存器传递 MAIN: MOV R0,#30H MOV R7,#0AH ACALL SUBR SUBR: ,通过堆栈传递参数,主程序用PUSH将参数压入堆栈,子程序按栈指针来间接访问. 例 HASC: MOV R0,SP DEC R0 DEC R0,XCH A,R0 ANL A,#0FH ADD A,#2 MOVC A,A+PC XCH A,R0 RET DB 01234565789 DB ABCDEF,

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

最新文档


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

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