第4章-80c51单片机汇编语言程序设计

上传人:小** 文档编号:43355998 上传时间:2018-06-05 格式:PPT 页数:72 大小:811.50KB
返回 下载 相关 举报
第4章-80c51单片机汇编语言程序设计_第1页
第1页 / 共72页
第4章-80c51单片机汇编语言程序设计_第2页
第2页 / 共72页
第4章-80c51单片机汇编语言程序设计_第3页
第3页 / 共72页
第4章-80c51单片机汇编语言程序设计_第4页
第4页 / 共72页
第4章-80c51单片机汇编语言程序设计_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《第4章-80c51单片机汇编语言程序设计》由会员分享,可在线阅读,更多相关《第4章-80c51单片机汇编语言程序设计(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

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

3、流程图编写程序。课程:单片机技术 教材:单片机基础4.2 汇编语言程序的基本结构形式单片机汇编语言程序设计的基本结构形式一般分为以下4种形式,即顺序结构、分支结构、循环结构和子程序结构。4.2.1 顺序程序结构顺序程序是最简单简单 的程序结结构,在顺序程序中,既无分支,循环环,也不调用子程序,程序执执行时时一条一条地按顺顺序执执行指令例:假定三字节节无符号数相加,其中一个加数在内部RAM的50H、51H和52H单单元中,另一个加数在内部RAM的53H、54H和55H单单元中,要求把相加之和存放在50H、51H和52H单单元中,进进位存放在位寻寻址区的00H位中。解:(1)分析任务:求两数之和(

4、2)算法:加法运算(ADD或ADDC) 课程:单片机技术 教材:单片机基础(3)程序结构:顺序或循环结构(4)数据类型:三字节、二进制、无符号数(5)数据结构:升序或降序排列 (6)RAM单元安排: (内部RAM字节单元、位地址空间)(7)采用寄存器间接寻址方式(R0、R1)加数(N1)高字节节(8位)中字节节(8位)低字节节(8位) 加数(N2)高字节节(8位)中字节节(8位)低字节节(8位)加数(N1)加数(N2)和(N3) 52H单单元低字节节(8位 )55H单单元低字节节(8位 )52H单单元低字节节(8位 ) 51H单单元中字节节(8位 )54H单单元中字节节(8位 )51H单单元中

5、字节节(8位 ) 50H单单元高字节节(8位 )53H单单元高字节节(8位 )50H单单元高字节节(8位 ) 00H位进进位位课程:单片机技术 教材:单片机基础(8)程序设计流程框图;课程:单片机技术 教材:单片机基础(9)程序清单;ORG 1000HMOV RO, #52H;加数N1的低字节地址送地址指针R0MOV R1, #55H;加数N2的低字节地址送地址指针R1MOV A, R0; 取N1的低字节ADD A, R1; N1、N2低字节相加MOV R0, A; 保存N1、N2低字节和DEC R0; 修改加数N1的地址指针内容DEC R1; 修改加数N2的地址指针内容MOV A, R0;

6、取N1的中间字节ADDC A, R1; N1、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 思考题:1)上述程序中,如果只采用ADDC指令,应如何修改程序?2)如果N1、N2,N3均为十进制数,应如何修改程序?3)如果加数N1在内部RAM 50H、5

7、1H和52H单单元中,而加数N2与和N3均在外部RAM0053H、0054H和0055H单单元中,其它条件不变,应如何修改程序?4)如果N1、N2,N3均存放在外部RAM单元,应如何修改程序?课程:单片机技术 教材:单片机基础思考题: 1) ORG 1000HMOV RO, #52H;加数N1的低字节地址送地址指针R0MOV R1, #55H;加数N2的低字节地址送地址指针R1MOV A, R0; 取N1的低字节CLR C; 清原来进位位CY的内容ADDC A, R1; N1、N2低字节相加MOV R0, A; 保存N1、N2低字节和DEC R0; 修改加数N1的地址指针内容DEC R1; 修

8、改加数N2的地址指针内容MOV A, R0; 取N1的中间字节ADDC A, R1; N1、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 1000HMOV RO, #52H;加数N1的低字节地址送地址指针R0MOV R1, #

9、55H;加数N2的低字节地址送地址指针R1MOV A, R0; 取N1的低字节ADD 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中间字节和十进制调整MOV R0, A; 保存N1、N2中间字节和DEC R0; 修改加数N1的地址指针内容DEC R1; 修改加数N2的地址指针内容MOV

10、A, R0; 取N1的高字节ADDC A, R1; N1、N2高字节带中间字节和进位相加DA A; N1、N2高字节和十进制调整MOV R0, A; 保存N1、N2高字节和MOV 00H, C; 高字节和的进进位送00H位保存 END课程:单片机技术 教材:单片机基础思考题3) ORG 1000HMOV RO, #52H;加数N1的低字节地址送地址指针R0MOV R1, #55H;加数N2的低字节地址送地址指针R1MOVX A, R1; 取N2的低字节ADD A, R0; N1、N2低字节相加MOVX R1, A; 保存N1、N2低字节和DEC R0; 修改加数N1的地址指针内容DEC R1;

11、 修改加数N2的地址指针内容MOVX A, R1; 取N2的中间字节ADDC A, R0; N1、N2中间字节带低字节和进位相加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 1000HMOV RO, #52H;

12、加数N1的低字节地址送地址指针R0MOV DPTR, #0055H;加数N2的低字节地址送DPTRMOVX A, DPTR; 取N2的低字节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;

13、修改加数N2的地址指针内容MOVX A, DPTR; 取N2的高字节ADDC A, R0; N1、N2高字节带中间字节和进位相加MOVX DPTR, A; 保存N1、N2高字节和MOV 00H, C; 高字节和的进进位送00H位保存END思考:修改加数N2的数据地址指针DPTR的内容可否采用DEC DPTR指令?课程:单片机技术 教材:单片机基础例:设设内部RAM 40H,41H单单元中分别别存放8位二进进制数,现分别取这两个单单元中的半个字节节,合并成一个新字节节存放在42H单单元中。要求如下:42H单单元新字节的低半字节取自40H单元的低半字节,而高半字节取自41H单元的低半字节。解:(1

14、)分析任务:拆字、合字课程:单片机技术 教材:单片机基础(2)算法:逻辑运算(3)程序结构:顺序(4)数据类型:单字节、二进制、无符号数(5)数据结构:升序或降序排列 (6)程序设计流程框图;课程:单片机技术 教材:单片机基础(7)程序清单;ORG 2000HSTART: MOV R1, #40H;初始化数据指针R1的内容MOV A, R1; 取40H单元内容送AANL 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单单元新字节

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

当前位置:首页 > 商业/管理/HR > 其它文档

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