1 / 72
文档名称:

第4章 80C51单片机汇编语言程序设计.ppt

格式:ppt   页数:72
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第4章 80C51单片机汇编语言程序设计.ppt

上传人:所以所以 2012/5/28 文件大小:0 KB

下载得到文件列表

第4章 80C51单片机汇编语言程序设计.ppt

文档介绍

文档介绍:第4章 MCS-51汇编语言程序设计
教学基本要求:
(1)、了解MCS-51汇编语言程序设计的特点;
(2)、熟悉MCS-51汇编语言伪指令的功能及用法;
(3)、掌握顺序、分支、循环程序的设计方法;
(4)、掌握KEIL软件的使用方法。
教学重点:
(1)、KEIL软件的使用方法;
(2)、分支、循环程序的设计方法;
(3)、定时、查表程序的设计方法;
教学难点:
(1)、KEIL软件调试程序的方法;
(2)、利用JMP ***@A+DPTR指令实现程序多分支;
(3)、查表程序的设计方法;
(4)、子程序结构与堆栈的关系。
单片机程序程序设计语言概述
机器语言和汇编语言
单片机使用的高级语言
(1)BASIC语言
(2)C语言
(3)PL/M语言
80C51单片机汇编语言的语句格式
汇编语言程序设计必须注意如下特点:
(1)设计人员必须详细了解单片机的硬件结构,以便在程序设计中熟练使用;
(2)必须熟悉汇编语言指令的功能和用法;
(3)在程序设计前,必须分析设计任务,确定所用算法,确定程序结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器和工作单元的使用以及所用硬件资源等作出具体安排;
(4)根据分析,画出程序设计流程图;
(5)根据程序设计流程图编写程序。
汇编语言程序的基本结构形式
单片机汇编语言程序设计的基本结构形式一般分为以下4种形式,即顺序结构、分支结构、循环结构和子程序结构。
顺序程序结构
顺序程序是最简单的程序结构,在顺序程序中,既无分支,循环,也不调用子程序,程序执行时一条一条地按顺序执行指令
例:假定三字节无符号数相加,其中一个加数在内部RAM的50H、51H和52H单元中,另一个加数在内部RAM的53H、54H和55H单元中,要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。
解:(1)分析任务:求两数之和
(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单元
中字节(8位)
50H单元
高字节(8位)
52H单元
高字节(8位)
50H单元
高字节(8位)
00H位
进位位
(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中间字节带低字节和进位相加
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和0055H单元中,其它条件不变,应如何修改程序?
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低字