单片机汇编语言程序设计精.ppt
《单片机汇编语言程序设计精.ppt》由会员分享,可在线阅读,更多相关《单片机汇编语言程序设计精.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机汇编语言程序设计第1页,本讲稿共71页4.1 4.1 单片机程序程序设计语言概述单片机程序程序设计语言概述4.1.1 4.1.1 机器语言和汇编语言机器语言和汇编语言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单片机汇编语言的语句格式单片机汇编语言的语句格式第2页,本讲稿共71页汇编语汇编语言程序言程序设计设计必须注意如下特点:必须注意如下特点:(1 1)设计人员必须详细了解单片机的硬件结构,以便在程序设计中熟练使用;)设计人员
2、必须详细了解单片机的硬件结构,以便在程序设计中熟练使用;(2 2)必须熟悉汇编语言指令的功能和用法;)必须熟悉汇编语言指令的功能和用法;(3 3)在程序设计前,必须分析设计任务,确定所用算法,确定程序)在程序设计前,必须分析设计任务,确定所用算法,确定程序结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器结构,确定数据的类型、数据的结构,必须对数据的存放、寄存器和工作单元的使用以及所用硬件资源等作出具体安排;和工作单元的使用以及所用硬件资源等作出具体安排;(4 4)根据分析,画出程序设计流程图;)根据分析,画出程序设计流程图;(5 5)根据程序设计流程图编写程序。)根据程序设计流程图编
3、写程序。第3页,本讲稿共71页4.2 4.2 汇编语言程序的基本结构形式汇编语言程序的基本结构形式 单片机汇编语言程序设计的基本结构形式一般分为以下单片机汇编语言程序设计的基本结构形式一般分为以下4 4种形式,种形式,即顺序结构、分支结构、循环结构和子程序结构。即顺序结构、分支结构、循环结构和子程序结构。4.2.1 4.2.1 顺序程序结构顺序程序结构 顺序程序是顺序程序是最最简单简单的程序的程序结结构,在构,在顺序顺序程序中程序中,既无分支,循既无分支,循环环,也也不调用不调用子程序,程序子程序,程序执执行行时时一条一条一条一条地地按按顺顺序序执执行指令行指令 例:假定三字例:假定三字节节无
4、符号数相加,其中一个加数在内部无符号数相加,其中一个加数在内部RAMRAM的的50H50H、51H51H和和52H52H单单元中,另一个加数在内部元中,另一个加数在内部RAMRAM的的53H53H、54H54H和和55H55H单单元中,要求把相元中,要求把相加之和存放在加之和存放在50H50H、51H51H和和52H52H单单元中,元中,进进位存放在位位存放在位寻寻址区的址区的00H00H位中。位中。解解:(:(1 1)分析任务:求两数之和)分析任务:求两数之和 (2 2)算法:加法运算()算法:加法运算(ADDADD或或ADDCADDC)第4页,本讲稿共71页 (3 3)程序结构:顺序或循环
5、结构)程序结构:顺序或循环结构 (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位)位)加数(加数(N
6、1N1)加数(加数(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位位进位位进位位第5页,本讲稿共71页 (8 8)程序设计流程框图;)程序设计流程框
7、图;第6页,本讲稿共71页 (9 9)程序清单;)程序清单;ORG 1000HORG 1000H MOV RO MOV RO,#52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1,#55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV A,R0R0;取取N1N1的低字节的低字节 ADD AADD A,R1R1;N1N1、N2N2低字节相加低字节相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC R0;修改加数修改加数N1N1的
8、地址指针内容的地址指针内容 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的中间字节的中间字节 ADDC AADDC A,R1R1;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容第7页,本讲稿共71页 DEC R1 DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的高字节
9、的高字节 ADDC AADDC A,R1R1;N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的高字节和的进进位送位送00H00H位保存位保存 ENDEND 思考题:思考题:1 1)上述程序中,如果只采用)上述程序中,如果只采用ADDCADDC指令,应如何修改程序?指令,应如何修改程序?2 2)如果)如果N1N1、N2N2,N3N3均为十进制数,应如何修改程序?均为十进制数,应如何修改程序?3 3)如如果果加加数数N1N1在在内内部部RAM RAM
10、 50H50H、51H51H和和52H52H单单元元中中,而而加加数数N2N2与与和和N3N3均均在在外外部部RAM00RAM0053H53H、0054H0054H和和0055H0055H单单元元中中,其其它它条条件件不不变变,应应如如何何修修改改程程序序?4 4)如果)如果N1N1、N2N2,N3N3均存放在外部均存放在外部RAMRAM单元,应如何修改程序?单元,应如何修改程序?第8页,本讲稿共71页思考题:思考题:1 1)ORG 1000HORG 1000H MOV RO MOV RO,#52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1
11、MOV R1,#55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV 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的中间
12、字节的中间字节 ADDC AADDC A,R1R1;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MOV R0MOV R0,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容第9页,本讲稿共71页 DEC R1 DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的高字节的高字节 ADDC AADDC A,R1R1;N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOV R0MOV R0,A A;保存保
13、存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的低字节地址送地址指针的低字节地址送地址指针R1R1 MOV A MOV A,R0R0;取取N1N1的低字节的低字节 ADD AADD A,R1R1;N1N1、N2N2低字节相加低字节相加 DA ADA A;
14、N1N1、N2N2低字节和十进制调整低字节和十进制调整 MOV R0MOV R0,A A;保存保存N1N1、N2N2低字节和低字节和第10页,本讲稿共71页 DEC R0 DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的中间字节的中间字节 ADDC AADDC A,R1R1;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 DA ADA A;N1N1、N2N2中间字节和十进制调整中间字节和十进制调整 MOV R0MOV R0,A
15、 A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOV AMOV A,R0R0;取取N1N1的高字节的高字节 ADDC AADDC A,R1R1;N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 DA ADA A;N1N1、N2N2高字节和十进制调整高字节和十进制调整 MOV R0MOV R0,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的高字节和的进进位
16、送位送00H00H位保存位保存 ENDEND第11页,本讲稿共71页思考题思考题3 3)ORG 1000HORG 1000H MOV RO MOV RO,#52H#52H;加数;加数N1N1的低字节地址送地址指针的低字节地址送地址指针R0R0 MOV R1 MOV R1,#55H#55H;加数;加数N2N2的低字节地址送地址指针的低字节地址送地址指针R1R1 MOVX AMOVX A,R1R1;取取N2N2的低字节的低字节 ADD AADD A,R0R0;N1N1、N2N2低字节相加低字节相加 MOVX R1MOVX R1,A A;保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC
17、 R0;修改加数修改加数N1N1的地址指针内容的地址指针内容 DEC R1DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOVX AMOVX A,R1R1;取取N2N2的中间字节的中间字节 ADDC AADDC A,R0R0;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MOVX R1MOVX R1,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容第12页,本讲稿共71页 DEC R1 DEC R1;修改加数修改加数N2N2的地址指针内容的地址指针内容 MOVX
18、 AMOVX A,R1R1;取取N2N2的高字节的高字节 ADDC AADDC A,R0R0;N1N1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOVX R1MOVX R1,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的高字节和的进进位送位送00H00H位保存位保存 ENDEND 如果如果N2N2、N3N3的数据地址指针采用的数据地址指针采用DPTRDPTR,则程序修改如下:,则程序修改如下:ORG 1000HORG 1000H MOV RO MOV RO,#52H#52H;加数;加数N1N1的低字节地址送地址指针的低
19、字节地址送地址指针R0R0 MOV DPTRMOV DPTR,#0055H#0055H;加数;加数N2N2的低字节地址送的低字节地址送DPTRDPTR MOVX AMOVX A,DPTRDPTR;取取N2N2的低字节的低字节 ADD AADD A,R0R0;N1N1、N2N2低字节相加低字节相加 MOVX DPTRMOVX DPTR,A A;保存保存N1N1、N2N2低字节和低字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容第13页,本讲稿共71页 MOV DPTRMOV DPTR,#0054H#0054H;修改加数;修改加数N2N2的地址指针内容的地址指
20、针内容 MOVX AMOVX A,DPTRDPTR;取取N2N2的中间字节的中间字节 ADDC AADDC A,R0R0;N1N1、N2N2中间字节带低字节和进位相加中间字节带低字节和进位相加 MOVX DPTRMOVX DPTR,A A;保存保存N1N1、N2N2中间字节和中间字节和 DEC R0DEC R0;修改加数修改加数N1N1的地址指针内容的地址指针内容 MOV DPTRMOV DPTR,#0053H#0053H;修改加数;修改加数N2N2的地址指针内容的地址指针内容 MOVX AMOVX A,DPTRDPTR;取取N2N2的高字节的高字节 ADDC AADDC A,R0R0;N1N
21、1、N2N2高字节带中间字节和进位相加高字节带中间字节和进位相加 MOVX DPTRMOVX DPTR,A A;保存保存N1N1、N2N2高字节和高字节和 MOV 00HMOV 00H,C C;高字节和的高字节和的进进位送位送00H00H位保存位保存 ENDEND 思考:修改加数思考:修改加数N2N2的数据地址指针的数据地址指针DPTRDPTR的内容可否采用的内容可否采用 DEC DPTRDEC DPTR指令?指令?第14页,本讲稿共71页例:例:设设内部内部RAM 40HRAM 40H,41H41H单单元中分元中分别别存放存放8 8位二位二进进制数,制数,现分别现分别取取这这两个两个单单元中
22、的半元中的半个个字字节节,合并成一个,合并成一个新新字字节节存放在存放在42H42H单单元元中中。要求如下:要求如下:42H42H单单元元新字节的低半字节取自新字节的低半字节取自40H40H单元的低半字节,而高半字节取自单元的低半字节,而高半字节取自41H41H单元的低半字节。单元的低半字节。解解:(:(1 1)分析任务:拆字、合字)分析任务:拆字、合字第15页,本讲稿共71页 (2 2)算法:逻辑运算)算法:逻辑运算 (3 3)程序结构:顺序)程序结构:顺序 (4 4)数据类型:单字节、二进制、无符号数)数据类型:单字节、二进制、无符号数 (5 5)数据结构:升序或降序排列)数据结构:升序或
23、降序排列 (6 6)程序设计流程框图;)程序设计流程框图;第16页,本讲稿共71页 (7 7)程序清单;)程序清单;ORG 2000HORG 2000H S START:MOV R1TART:MOV R1,#40H#40H;初始化数据指针;初始化数据指针R1R1的内容的内容 MOV AMOV A,R1R1;取取40H40H单元内容送单元内容送A A ANL A ANL A,#0FH#0FH;保留;保留40H40H单元内容低单元内容低4 4位位 INC R1INC R1;修改数据指针修改数据指针R1R1的内容的内容 XCH AXCH A,R1R1;(A)(A)与与R1R1内容互换内容互换 ANL
24、 AANL A,#0FH#0FH;保留;保留41H41H单元内容低四位单元内容低四位 SWAP ASWAP A;41H41H单元内容高低半字节互换单元内容高低半字节互换 ORL AORL A,R1R1;合字生成新字节合字生成新字节 INC R1INC R1;修改数据指针修改数据指针R1R1的内容的内容 MOV R1MOV R1,A A;新字节送新字节送42H42H单元保存单元保存 ENDEND作业题:作业题:上例中其它条件不变,要求如下:上例中其它条件不变,要求如下:42H42H单单元元新字节的低半字节取自新字节的低半字节取自40H40H单元的低半字节,而高半字节取自单元的低半字节,而高半字节
25、取自41H41H单元的高半字节。单元的高半字节。第17页,本讲稿共71页(1 1)单分支程序)单分支程序 单分支程序单分支程序是通是通过过条件条件转转移指令移指令实现实现的,即根据条件的,即根据条件对对程序的程序的执执行行进进行判断,行判断,满满足条件足条件则进则进行程序行程序转转移,不移,不满满足条件程序就足条件程序就顺顺序序执执行。行。在在MCS-51MCS-51指令系指令系统统中,可利用中,可利用JZJZ,JNZJNZ,CJNECJNE,DJNZDJNZ,JCJC,JNCJNC,JBJB,JNBJNB,JBCJBC等指令,完成等指令,完成为为0 0、为为1 1、为为正正、为负为负以及相等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编语言 程序设计
限制150内