《单片机汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《单片机汇编语言程序设计.ppt(72页珍藏版)》请在第壹文秘上搜索。
1、课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础第第4 4章章 MCS-51MCS-51汇编语言程序设计汇编语言程序设计教学基本要求教学基本要求:(1 1)、了解)、了解MCS-51MCS-51汇编语言程序设计的特点;汇编语言程序设计的特点;(2 2)、熟悉)、熟悉MCS-51MCS-51汇编语言伪指令的功能及用法;汇编语言伪指令的功能及用法;(3 3)、掌握顺序、分支、循环程序的设计方法)、掌握顺序、分支、循环程序的设计方法;(4 4)、掌握)、掌握KEILKEIL软件的使用方法。软件的使用方法。教学重点教学重点:(1 1)、)、KEIL软件的使用方法软件的使用方法;(2
2、2)、分支、循环程序的设计方法;)、分支、循环程序的设计方法;(3 3)、定时、查表程序的设计方法;)、定时、查表程序的设计方法;教学难点教学难点:(1 1)、)、KEIL软件调试程序的方法软件调试程序的方法;(2 2)、利用)、利用JMP A+DPTRJMP A+DPTR指令实现程序多分支;指令实现程序多分支;(3 3)、查表程序的设计方法;)、查表程序的设计方法;(4 4)、子程序结构与堆栈的关系。)、子程序结构与堆栈的关系。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础4.1 4.1 单片机程序程序设计语言概述单片机程序程序设计语言概述4.1.1 4.1.1 机器语言
3、和机器语言和汇编语言汇编语言4.1.2 4.1.2 单片机使用的高级语言单片机使用的高级语言(1 1)BASICBASIC语言语言(2 2)C C语言语言(3 3)PL/MPL/M语言语言 4.1.3 80C514.1.3 80C51单片机汇编语言的语句格式单片机汇编语言的语句格式课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础汇编语言程序设计汇编语言程序设计必须注意如下特点:必须注意如下特点:(1 1)设计人员必须详细了解单片机的硬件结构,以便在程序设)设计人员必须详细了解单片机的硬件结构,以便在程序设计中熟练使用;计中熟练使用;(2 2)必须熟悉汇编语言指令的功能和用法;
4、)必须熟悉汇编语言指令的功能和用法;(3 3)在程序设计前,必须分析设计任务,确定所用算法,确定)在程序设计前,必须分析设计任务,确定所用算法,确定程序结构,确定数据的类型、数据的结构,必须对数据的存放、程序结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器和工作单元的使用以及所用硬件资源等作出具体安排;寄存器和工作单元的使用以及所用硬件资源等作出具体安排;(4 4)根据分析,画出程序设计流程图;)根据分析,画出程序设计流程图;(5 5)根据程序设计流程图编写程序。)根据程序设计流程图编写程序。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础4.2 4.2 汇编语言程
5、序的基本结构形式汇编语言程序的基本结构形式 单片机单片机汇编语言程序设计的基本结构形式一般分为以下汇编语言程序设计的基本结构形式一般分为以下4 4种种形式,即顺序结构、分支结构、循环结构和子程序结构。形式,即顺序结构、分支结构、循环结构和子程序结构。4.2.1 4.2.1 顺序程序结构顺序程序结构 顺序程序是顺序程序是最简单的程序结构,在最简单的程序结构,在顺序顺序程序中程序中,既无分支,既无分支,循环,也循环,也不调用不调用子程序,程序执行时一条一条子程序,程序执行时一条一条地地按顺序执行指令按顺序执行指令 例:假定三字节无符号数相加,其中一个加数在内部例:假定三字节无符号数相加,其中一个加
6、数在内部RAMRAM的的50H50H、51H51H和和52H52H单元中,另一个加数在内部单元中,另一个加数在内部RAMRAM的的53H53H、54H54H和和55H55H单元中,要求把相加之和存放在单元中,要求把相加之和存放在50H50H、51H51H和和52H52H单元中,进位存单元中,进位存放在位寻址区的放在位寻址区的00H00H位中。位中。解解:(:(1 1)分析任务:求两数之和)分析任务:求两数之和 (2 2)算法:加法运算()算法:加法运算(ADDADD或或ADDCADDC) 课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (3 3)程序结构:顺序或循环结构)程
7、序结构:顺序或循环结构 (4 4)数据类型:三字节、二进制、无符号数)数据类型:三字节、二进制、无符号数 (5 5)数据结构:升序或降序排列)数据结构:升序或降序排列 (6 6)RAMRAM单元安排单元安排: (内部(内部RAMRAM字节单元、位地址空间字节单元、位地址空间) (7 7)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1)加数(加数(N1N1)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数(加数(N2N2)高字节(高字节(8 8位)位)中字节(中字节(8 8位)位)低字节(低字节(8 8位)位)加数(加数(N1N
8、1)加数(加数(N2N2)和(和(N3N3)52H52H单元单元低字节(低字节(8 8位)位)55H55H单元单元 低字节(低字节(8 8位)位) 52H52H单元单元 低字节(低字节(8 8位)位)51H51H单元单元中字节(中字节(8 8位)位)54H54H单元单元 中字节(中字节(8 8位)位) 51H51H单元单元 中字节(中字节(8 8位)位)50H50H单元单元高字节(高字节(8 8位)位)52H52H单元单元 高字节(高字节(8 8位)位) 50H50H单元单元 高字节(高字节(8 8位)位)00H00H位位进位位进位位课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片
9、机基础 (8 8)程序设计流程框图;)程序设计流程框图;常常用用流流程程框框图图符符号号开开始始结结束束进进程程判判断断判判断断开开始始加加数数N N1 1和和加加数数N N2 2的的低低字字节节相相加加加加数数N N1 1和和加加数数N N2 2的的高高字字节节相相加加加加数数N N1 1和和加加数数N N2 2的的中中字字节节相相加加处处理理进进位位位位结结束束开开始始取取N N1 1低低字字节节取取N N2 2低低字字节节N N1 1和和N N2 2低低字字节节相相加加保保存存N N1 1和和N N2 2低低字字节节和和取取N N1 1中中字字节节取取N N2 2中中字字节节N N1 1
10、和和N N2 2中中字字节节相相加加保保存存N N1 1和和N N2 2中中字字节节和和取取N N1 1高高字字节节取取N N2 2高高字字节节N N1 1和和N N2 2高高字字节节相相加加保保存存N N1 1和和N N2 2高高字字节节和和处处理理进进位位位位结结束束课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (9 9)程序清单;)程序清单; ORG 1000HORG 1000H MOV RO MOV RO, #52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1, #55H#55H;加数;加数N2N2的
11、低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV A, R0R0; 取取N1N1的低字节的低字节 ADD AADD A, R1R1; N1N1、N2N2低字节相加低字节相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC R0; 修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1DEC R1; 修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A, R0R0; 取取N1N1的中间字节的中间字节 ADDC AADDC A, R1R1; N1N1、N2N2中间字节带低字节和进位相加中间
12、字节带低字节和进位相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0; 修改加数修改加数N1N1的地址指针内容的地址指针内容课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 DEC R1 DEC R1; 修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A, R0R0; 取取N1N1的高字节的高字节 ADDC AADDC A, R1R1; N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2高字节和高字节和
13、 MOV 00HMOV 00H, C C; 高字节和的高字节和的进位送进位送00H00H位保存位保存 ENDEND 思考题:思考题: 1 1)上述程序中,如果只采用)上述程序中,如果只采用ADDCADDC指令,应如何修改程序?指令,应如何修改程序? 2 2)如果)如果N1N1、N2N2,N3N3均为十进制数,应如何修改程序?均为十进制数,应如何修改程序? 3 3)如果加数)如果加数N1N1在内部在内部RAM RAM 50H50H、51H51H和和52H52H单元中单元中,而,而加数加数N2N2与与和和N3N3均均在外部在外部RAM00RAM0053H53H、0054H0054H和和0055H0
14、055H单元中,单元中,其它条件不变,其它条件不变,应如何修改程序?应如何修改程序? 4 4)如果)如果N1N1、N2N2,N3N3均存放在外部均存放在外部RAMRAM单元,应如何修改程序?单元,应如何修改程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础思考题:思考题:1 1) ORG 1000HORG 1000H MOV RO MOV RO, #52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1, #55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV
15、 A, R0R0; 取取N1N1的低字节的低字节 CLR CCLR C; 清原来进位位清原来进位位CYCY的内容的内容 ADDC AADDC A, R1R1; N1N1、N2N2低字节相加低字节相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC R0; 修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1DEC R1; 修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A, R0R0; 取取N1N1的中间字节的中间字节 ADDC AADDC A, R1R1; N1N1、N2N2中间字节带低字节和进位相加
16、中间字节带低字节和进位相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0; 修改加数修改加数N1N1的地址指针内容的地址指针内容课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 DEC R1 DEC R1; 修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A, R0R0; 取取N1N1的高字节的高字节 ADDC AADDC A, R1R1; N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0MOV R0, A A; 保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H, C C; 高字节和的高字节和的进位送进位送00H00H位保存位保存 ENDEND 思考题:思考题:2 2) ORG 1000HORG 1000H MOV RO MOV RO, #52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1, #55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节