C51单片机汇编语言程序设计.ppt
《C51单片机汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《C51单片机汇编语言程序设计.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础第第4 4章章 MCS-51 MCS-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 顺序程序结构顺序程序结构 顺序程序是顺序程序是最最简单简单的程序的程序结结构,在构,在顺序顺序程序中程序中,既无分支,循既无分支,循环环,也,也不调用不调用子程序,程序子程序,程序执执行行时时一条一条一条一条地地按按顺顺序序执执行指令行指令 例:假定三字例:假定三字节节无符号数相加,其中一个加数在内部无符号数相加,其中一个加数在内部RAMRAM的的50H50H、51
6、H51H和和52H52H单单元中,另一个加数在内部元中,另一个加数在内部RAMRAM的的53H53H、54H54H和和55H55H单单元中,要求把相加之和存放在元中,要求把相加之和存放在50H50H、51H51H和和52H52H单单元中,元中,进进位存放在位存放在位位寻寻址区的址区的00H00H位中。位中。解解:(:(1 1)分析任务:求两数之和)分析任务:求两数之和 (2 2)算法:加法运算()算法:加法运算(ADDADD或或ADDCADDC)课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (3 3)程序结构:顺序或循环结构)程序结构:顺序或循环结构 (4 4)数据类型:
7、三字节、二进制、无符号数)数据类型:三字节、二进制、无符号数 (5 5)数据结构:升序或降序排列)数据结构:升序或降序排列 (6 6)RAMRAM单元安排单元安排:(内部(内部RAMRAM字节单元、位地址空间字节单元、位地址空间)(7 7)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1)课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (8 8)程序设计流程框图;)程序设计流程框图;课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (9 9)程序清单;)程序清单;ORG 1000H ORG 1000H MOV RO MOV RO,#52
8、H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1,#55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV A,R0 R0;取取N1N1的低字节的低字节 ADD A ADD A,R1 R1;N1 N1、N2N2低字节相加低字节相加 MOV R0 MOV R0,A A;保存保存N1N1、N2N2低字节和低字节和 DEC R0 DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1 DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV A
9、 MOV A,R0 R0;取取N1N1的中间字节的中间字节 ADDC A ADDC A,R1R1;N1 N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MOV R0 MOV R0,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0 DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 DEC R1 DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV A MOV A,R0 R0;取取N1N1的高字节的高字节 ADDC A ADDC A,R1 R1;N1 N
10、1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0 MOV R0,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的高字节和的进进位送位送00H00H位保存位保存 END END 思考题:思考题:1 1)上述程序中,如果只采用)上述程序中,如果只采用ADDCADDC指令,应如何修改程序?指令,应如何修改程序?2 2)如果)如果N1N1、N2N2,N3N3均为十进制数,应如何修改程序?均为十进制数,应如何修改程序?3 3)如如果果加加数数N1N1在在内内部部RAM RAM 50H50H、51H51H和和52H52H单单
11、元元中中,而而加加数数N2N2与与和和N3N3均均在在外外部部RAM00RAM0053H53H、0054H0054H和和0055H0055H单单元元中中,其其它它条条件件不不变变,应如何修改程序?应如何修改程序?4 4)如果)如果N1N1、N2N2,N3N3均存放在外部均存放在外部RAMRAM单元,应如何修改程序?单元,应如何修改程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础例:例:设设内部内部RAM 40HRAM 40H,41H41H单单元中分元中分别别存放存放8 8位二位二进进制数,制数,现分别现分别取取这这两个两个单单元中的半元中的半个个字字节节,合并成一个,合
12、并成一个新新字字节节存放在存放在42H42H单单元元中中。要求如下:要求如下:42H42H单单元元新字节的低半字节取自新字节的低半字节取自40H40H单元的低半字节,单元的低半字节,而高半字节取自而高半字节取自41H41H单元的低半字节。单元的低半字节。解解:(:(1 1)分析任务:拆字、合字)分析任务:拆字、合字课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (2 2)算法:逻辑运算)算法:逻辑运算 (3 3)程序结构:顺序)程序结构:顺序 (4 4)数据类型:单字节、二进制、无符号数)数据类型:单字节、二进制、无符号数 (5 5)数据结构:升序或降序排列)数据结构:升序
13、或降序排列 (6 6)程序设计流程框图;)程序设计流程框图;课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 (7 7)程序清单;)程序清单;ORG 2000H ORG 2000H S START:MOV R1TART:MOV R1,#40H#40H;初始化数据指针;初始化数据指针R1R1的内容的内容 MOV A MOV A,R1 R1;取取40H40H单元内容送单元内容送A A ANL A ANL A,#0FH#0FH;保留;保留40H40H单元内容低单元内容低4 4位位 INC R1 INC R1;修改数据指针修改数据指针R1R1的内容的内容 XCH A XCH A,R1
14、 R1;(A)(A)与与R1R1内容互换内容互换 ANL A ANL A,#0FH#0FH;保留;保留41H41H单元内容低四位单元内容低四位 SWAP A SWAP A;41H 41H单元内容高低半字节互换单元内容高低半字节互换 ORL A ORL A,R1 R1;合字生成新字节合字生成新字节 INC R1 INC R1;修改数据指针修改数据指针R1R1的内容的内容 MOV R1 MOV R1,A A;新字节送新字节送42H42H单元保存单元保存 END END作业题:作业题:上例中其它条件不变,要求如下:上例中其它条件不变,要求如下:42H42H单单元元新字节的低半字节新字节的低半字节取自
15、取自40H40H单元的低半字节,而高半字节取自单元的低半字节,而高半字节取自41H41H单元的高半字节。单元的高半字节。课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础(1 1)单分支程序)单分支程序 单分支程序单分支程序是通是通过过条件条件转转移指令移指令实现实现的,即根据条件的,即根据条件对对程序程序的的执执行行进进行判断,行判断,满满足条件足条件则进则进行程序行程序转转移,不移,不满满足条件程序就足条件程序就顺顺序序执执行。行。在在MCS-51MCS-51指令系指令系统统中,可利用中,可利用JZJZ,JNZJNZ,CJNECJNE,DJNZDJNZ,JCJC,JNCJN
16、C,JBJB,JNBJNB,JBCJBC等指令,完成等指令,完成为为0 0、为为1 1、为为正正、为负为负以及相等以及相等、不相等等各种条件判断。不相等等各种条件判断。例:两个例:两个8 8位无符号二进制数比较大小。位无符号二进制数比较大小。假假设设在外部在外部RAMRAM中有中有ST1ST1、ST2ST2和和ST3ST3共共3 3个连续单元(单元地址从小到大),其个连续单元(单元地址从小到大),其中中ST1ST1、ST2ST2单元中单元中存放存放着着两个两个8 8位位无符号二无符号二进进制数制数N1N1,N2N2,要求,要求找出其中找出其中的的大数大数并并存存入入ST3ST3单单元元中中。4
17、.2.2 4.2.2 分支程序结构课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础解解:(:(1 1)分析任务:比较两个数的大小)分析任务:比较两个数的大小 (2 2)算法:算术运算、控制转移)算法:算术运算、控制转移 (3 3)程序结构:单分支)程序结构:单分支 (4 4)数据类型:单字节、二进制、无符号数)数据类型:单字节、二进制、无符号数 (5 5)数据结构:单元地址升序排列)数据结构:单元地址升序排列 (6 6)RAMRAM单元安排单元安排:外部:外部RAMRAM单元单元 (7 7)采用寄存器间接寻址方式()采用寄存器间接寻址方式(R0R0、R1R1或或DPTRDPT
18、R)(8 8)程序设计流程框图程序设计流程框图;(9 9)程序清单程序清单;思考题(补充作业题):思考题(补充作业题):上例中,如果采用上例中,如果采用CJNE ACJNE A,direct direct,relrel指令,应如何修改程指令,应如何修改程序?序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 ORG 8000H ORG 8000H START:CLR C START:CLR C;进位清;进位清0 0 MOV DPTR MOV DPTR,#ST1#ST1;设数据指针设数据指针 MOVX A
19、MOVX A,DPTRDPTR;A A(ST1ST1),取),取N1N1 MOV R2 MOV R2,A A;暂存暂存N1N1 INC DPTR INC DPTR;DPTR ST2 DPTR ST2(指向(指向N2N2单元)单元)MOVX A MOVX A,DPTR DPTR;取取N2N2存于存于A A中中 SUBB A SUBB A,R2 R2;N1N1,N2N2比较(比较(N2-N1N2-N1,差在,差在A A中)中)JNC BIG1 JNC BIG1;N2N1N2N1,转,转BIG1BIG1,N2N2N1N1,顺序执行,顺序执行 XCH A XCH A,R2R2;N1N1,N2N2互换,
20、互换,A N1A N1 SJMP BIG0 SJMP BIG0 BIG1:MOVX A BIG1:MOVX A,DPTRDPTR;A N2A N2 BIGO:INC DPTR BIGO:INC DPTR;DPTR ST3 DPTR ST3(指向(指向N3N3单元)单元)MOVX DPTR MOVX DPTR,A A;ST3 ST3 大数大数 END END返回返回 课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础(2 2)多分支程序)多分支程序 假设多分支程序中,分支序号的最大值为假设多分支程序中,分支序号的最大值为n n,则多分支转移结,则多分支转移结构如图所示:构如图所示
21、:MCS-51 MCS-51指令系指令系统统没有没有多分支多分支转移转移指令,无法使用指令,无法使用单单条指令完条指令完成多分支成多分支转转移移。要实现多分支转移,。要实现多分支转移,可采用以下几种方法:可采用以下几种方法:课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 假设分支序号值保存在累加器假设分支序号值保存在累加器A A中,则可使用中,则可使用CJNE ACJNE A,#data#data,rel rel指令,其分支流程如图所示:指令,其分支流程如图所示:(a a)使用多条使用多条CJNECJNE指令,通指令,通过过逐次比逐次比较较,实现实现分支程序分支程序转转移移
22、课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础例:例:已知已知:127127X X-128-128,求,求Y Y。设设X X,Y Y分别分别存存放在外部放在外部RAM RAM 1000H1000H和和2000H2000H单元中。单元中。解解:(:(1 1)分析任务:解方程)分析任务:解方程 (2 2)算法:控制转移)算法:控制转移 (3 3)程序结构:多分支)程序结构:多分支 (4 4)数据类型:单字节、二进制、有符号数)数据类型:单字节、二进制、有符号数 (5 5)RAMRAM单元安排单元安排:外部:外部RAMRAM单元单元 (6 6)采用寄存器间接寻址方式()采用寄存器
23、间接寻址方式(R0R0、R1R1或或DPTRDPTR)(7 7)程序设计流程框图程序设计流程框图 (8 8)程序清单程序清单;思考题(补充作业题):思考题(补充作业题):上例中,如果采用上例中,如果采用CJNECJNE指令,应如何修改程序?指令,应如何修改程序?课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 ARE EQU 1000H ARE EQU 1000H;BUF EQU 2000H BUF EQU 2000H;ORG 1000H ORG 1000HSTARTSTART:MOV DPTRMOV DP
24、TR,#ARE#ARE;数据数据X X的地址送数据指针的地址送数据指针DPTRDPTR MOVX A MOVX A,DPTR DPTR;A A取数据取数据X X JZ SUL JZ SUL;X X0 0转转SULSUL JB ACC.7 JB ACC.7,NEG NEG;X X0 0转转NEGNEG,否则,否则,X X0 0 MOV A MOV A,#01H#01H;SJMP SUL SJMP SUL;NEG:MOV A NEG:MOV A,#0FFH#0FFH;(0FFH(0FFH为为-1-1补码补码)SUL:MOV DPTR SUL:MOV DPTR,#BUF#BUF;数据数据Y Y的地址
25、送数据指针的地址送数据指针DPTRDPTR MOVX DPTR MOVX DPTR,A A;保存保存Y Y值值 END END返回课程:单片机技术课程:单片机技术 教材:单片机基础教材:单片机基础 首先,在程序中建立一个转移指令表,在表格中存放转移指首先,在程序中建立一个转移指令表,在表格中存放转移指令,然后,通过查转移指令表的方式实现多分支程序转移。令,然后,通过查转移指令表的方式实现多分支程序转移。这种方法主要利用散转指令这种方法主要利用散转指令JMP A+DPTRJMP A+DPTR,此指令采用变址,此指令采用变址寻址方式,操作过程:(寻址方式,操作过程:(PCPC)(A A)+(DPT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 汇编语言 程序设计
限制150内