【5A版】单片机汇编语言程序设计

上传人:Jerm****014 文档编号:71388895 上传时间:2019-01-20 格式:PPT 页数:72 大小:1,008KB
返回 下载 相关 举报
【5A版】单片机汇编语言程序设计_第1页
第1页 / 共72页
【5A版】单片机汇编语言程序设计_第2页
第2页 / 共72页
【5A版】单片机汇编语言程序设计_第3页
第3页 / 共72页
【5A版】单片机汇编语言程序设计_第4页
第4页 / 共72页
【5A版】单片机汇编语言程序设计_第5页
第5页 / 共72页
点击查看更多>>
资源描述

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

1、第4章 MCS-51汇编语言程序设计,教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点; (2)、熟悉MCS-51汇编语言伪指令的功能及用法; (3)、掌握顺序、分支、循环程序的设计方法; (4)、掌握KEIL软件的使用方法。 教学重点: (1)、KEIL软件的使用方法; (2)、分支、循环程序的设计方法; (3)、定时、查表程序的设计方法; 教学难点: (1)、KEIL软件调试程序的方法; (2)、利用JMP A+DPTR指令实现程序多分支; (3)、查表程序的设计方法; (4)、子程序结构与堆栈的关系。,4.1 单片机程序程序设计语言概述,4.1.1 机器语言和汇编语言 4.

2、1.2 单片机使用的高级语言 (1)BASIC语言 (2)C语言 (3)PL/M语言 4.1.3 80C51单片机汇编语言的语句格式,汇编语言程序设计必须注意如下特点: (1)设计人员必须详细了解单片机的硬件结构,以便在程序设计中熟练使用; (2)必须熟悉汇编语言指令的功能和用法; (3)在程序设计前,必须分析设计任务,确定所用算法,确定程序结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器和工作单元的使用以及所用硬件资源等作出具体安排; (4)根据分析,画出程序设计流程图; (5)根据程序设计流程图编写程序。,4.2 汇编语言程序的基本结构形式,单片机汇编语言程序设计的基本结构形式一

3、般分为以下4种形式,即顺序结构、分支结构、循环结构和子程序结构。 4.2.1 顺序程序结构 顺序程序是最简单的程序结构,在顺序程序中,既无分支,循环,也不调用子程序,程序执行时一条一条地按顺序执行指令 例:假定三字节无符号数相加,其中一个加数在内部RAM的50H、51H和52H单元中,另一个加数在内部RAM的53H、54H和55H单元中,要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 解:(1)分析任务:求两数之和 (2)算法:加法运算(ADD或ADDC),(3)程序结构:顺序或循环结构 (4)数据类型:三字节、二进制、无符号数 (5)数据结构:升序或降序排

4、列 (6)RAM单元安排: (内部RAM字节单元、位地址空间) (7)采用寄存器间接寻址方式(R0、R1),(8)程序设计流程框图;,(9)程序清单; ORG 1000H MOV RO, #52H;加数N1的低字节地址送地址指针R0 MOV R1, #55H;加数N2的低字节地址送地址指针R1 MOV A, R0; 取N1的低字节 ADD A, R1; N1、N2低字节相加 MOV R0, A; 保存N1、N2低字节和 DEC R0; 修改加数N1的地址指针内容 DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的中间字节 ADDC A, R1; N1、N2中间字节带低字

5、节和进位相加 MOV R0, A; 保存N1、N2中间字节和 DEC R0; 修改加数N1的地址指针内容,DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的高字节 ADDC A, R1; N1、N2高字节带中间字节和进位相加 MOV R0, A; 保存N1、N2高字节和 MOV 00H, C; 高字节和的进位送00H位保存 END 思考题: 1)上述程序中,如果只采用ADDC指令,应如何修改程序? 2)如果N1、N2,N3均为十进制数,应如何修改程序? 3)如果加数N1在内部RAM 50H、51H和52H单元中,而加数N2与和N3均在外部RAM0053H、0054H和0

6、055H单元中,其它条件不变,应如何修改程序? 4)如果N1、N2,N3均存放在外部RAM单元,应如何修改程序?,思考题: 1) ORG 1000H MOV RO, #52H;加数N1的低字节地址送地址指针R0 MOV R1, #55H;加数N2的低字节地址送地址指针R1 MOV A, R0; 取N1的低字节 CLR C; 清原来进位位CY的内容 ADDC A, R1; N1、N2低字节相加 MOV R0, A; 保存N1、N2低字节和 DEC R0; 修改加数N1的地址指针内容 DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的中间字节 ADDC A, R1; N1、

7、N2中间字节带低字节和进位相加 MOV R0, A; 保存N1、N2中间字节和 DEC R0; 修改加数N1的地址指针内容,DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的高字节 ADDC A, R1; N1、N2高字节带中间字节和进位相加 MOV R0, A; 保存N1、N2高字节和 MOV 00H, C; 高字节和的进位送00H位保存 END 思考题: 2) ORG 1000H MOV RO, #52H;加数N1的低字节地址送地址指针R0 MOV R1, #55H;加数N2的低字节地址送地址指针R1 MOV A, R0; 取N1的低字节 ADD A, R1; N1

8、、N2低字节相加 DA A; N1、N2低字节和十进制调整 MOV R0, A; 保存N1、N2低字节和,DEC R0; 修改加数N1的地址指针内容 DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的中间字节 ADDC A, R1; N1、N2中间字节带低字节和进位相加 DA A; N1、N2中间字节和十进制调整 MOV R0, A; 保存N1、N2中间字节和 DEC R0; 修改加数N1的地址指针内容 DEC R1; 修改加数N2的地址指针内容 MOV A, R0; 取N1的高字节 ADDC A, R1; N1、N2高字节带中间字节和进位相加 DA A; N1、N2高

9、字节和十进制调整 MOV R0, A; 保存N1、N2高字节和 MOV 00H, C; 高字节和的进位送00H位保存 END,思考题 3) ORG 1000H MOV RO, #52H;加数N1的低字节地址送地址指针R0 MOV R1, #55H;加数N2的低字节地址送地址指针R1 MOVX A, R1; 取N2的低字节 ADD A, R0; N1、N2低字节相加 MOVX R1, A; 保存N1、N2低字节和 DEC R0; 修改加数N1的地址指针内容 DEC R1; 修改加数N2的地址指针内容 MOVX A, R1; 取N2的中间字节 ADDC A, R0; N1、N2中间字节带低字节和进

10、位相加 MOVX R1, A; 保存N1、N2中间字节和 DEC R0; 修改加数N1的地址指针内容,DEC R1; 修改加数N2的地址指针内容 MOVX A, R1; 取N2的高字节 ADDC A, R0; N1、N2高字节带中间字节和进位相加 MOVX R1, A; 保存N1、N2高字节和 MOV 00H, C; 高字节和的进位送00H位保存 END 如果N2、N3的数据地址指针采用DPTR,则程序修改如下: ORG 1000H MOV RO, #52H;加数N1的低字节地址送地址指针R0 MOV DPTR, #0055H;加数N2的低字节地址送DPTR MOVX A, DPTR; 取N2

11、的低字节 ADD A, R0; N1、N2低字节相加 MOVX DPTR, A; 保存N1、N2低字节和 DEC R0; 修改加数N1的地址指针内容,MOV DPTR, #0054H;修改加数N2的地址指针内容 MOVX A, DPTR; 取N2的中间字节 ADDC A, R0; N1、N2中间字节带低字节和进位相加 MOVX DPTR, A; 保存N1、N2中间字节和 DEC R0; 修改加数N1的地址指针内容 MOV DPTR, #0053H;修改加数N2的地址指针内容 MOVX A, DPTR; 取N2的高字节 ADDC A, R0; N1、N2高字节带中间字节和进位相加 MOVX DP

12、TR, A; 保存N1、N2高字节和 MOV 00H, C; 高字节和的进位送00H位保存 END 思考:修改加数N2的数据地址指针DPTR的内容可否采用 DEC DPTR指令?,例:设内部RAM 40H,41H单元中分别存放8位二进制数,现分别取这两个单元中的半个字节,合并成一个新字节存放在42H单元中。要求如下:42H单元新字节的低半字节取自40H单元的低半字节,而高半字节取自41H单元的低半字节。 解:(1)分析任务:拆字、合字,(2)算法:逻辑运算 (3)程序结构:顺序 (4)数据类型:单字节、二进制、无符号数 (5)数据结构:升序或降序排列 (6)程序设计流程框图;,(7)程序清单;

13、 ORG 2000H START: MOV R1, #40H;初始化数据指针R1的内容 MOV A, R1; 取40H单元内容送A ANL A, #0FH;保留40H单元内容低4位 INC R1; 修改数据指针R1的内容 XCH A, R1; (A)与R1内容互换 ANL A, #0FH;保留41H单元内容低四位 SWAP A; 41H单元内容高低半字节互换 ORL A, R1; 合字生成新字节 INC R1; 修改数据指针R1的内容 MOV R1, A; 新字节送42H单元保存 END 作业题: 上例中其它条件不变,要求如下:42H单元新字节的低半字节取自40H单元的低半字节,而高半字节取自

14、41H单元的高半字节。,(1)单分支程序 单分支程序是通过条件转移指令实现的,即根据条件对程序的执行进行判断,满足条件则进行程序转移,不满足条件程序就顺序执行。 在MCS-51指令系统中,可利用JZ,JNZ,CJNE,DJNZ,JC,JNC,JB,JNB,JBC等指令,完成为0、为1、为正、为负以及相等、不相等等各种条件判断。 例:两个8位无符号二进制数比较大小。假设在外部RAM中有ST1、ST2和ST3共3个连续单元(单元地址从小到大),其中ST1、ST2单元中存放着两个8位无符号二进制数N1,N2,要求找出其中的大数并存入ST3单元中。,4.2.2 分支程序结构,解:(1)分析任务:比较两

15、个数的大小 (2)算法:算术运算、控制转移 (3)程序结构:单分支 (4)数据类型:单字节、二进制、无符号数 (5)数据结构:单元地址升序排列 (6)RAM单元安排:外部RAM单元 (7)采用寄存器间接寻址方式(R0、R1或DPTR) (8)程序设计流程框图; (9)程序清单; 思考题(补充作业题): 上例中,如果采用CJNE A, direct,rel指令,应如何修改程序?,返回,ORG 8000H START: CLR C;进位清0 MOV DPTR, #ST1; 设数据指针 MOVX A, DPTR; A(ST1),取N1 MOV R2, A; 暂存N1 INC DPTR; DPTR ST2(指向N2单元) MOVX A, DPTR; 取N2存于A中 SUBB A, R2;N1,N2比较(N2-N1,差在A中) JNC BIG1;N2N1,转BIG1,N2N1,顺序执行 XCH A, R2;N1,N2互换,A N1 SJMP BIG0 BIG1: MOVX A, DP

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

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

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