第4章 MCS-51单片机汇编语言程序设计.ppt
《第4章 MCS-51单片机汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章 MCS-51单片机汇编语言程序设计.ppt(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第四章第四章 MCS-51MCS-51单片机汇编语言程序设计单片机汇编语言程序设计【学习目的和要求】了解汇编语言程序设计中的顺序结构、分支结构、循环结构程序和子程序的设计方法。掌握代码转换和算术运算程序的基本编程方法和一些常用的子程序段,能正确地使用MCS-51指令编制汇编语言程序。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.1 4.1 汇编语言程序设计方法汇编语言程序设计方法4.2 4.2 代码转换类程序代码转换类程序4.3 4.3 运算类程序运算类程序第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.
2、1 汇编语言程序设计方法汇编语言程序设计方法汇编语言特点:汇编语言特点:高效、便捷高效、便捷用汇编语言编写一个程序的过程分为用汇编语言编写一个程序的过程分为3 3步:步:(1)分析课题,确定计算方法、运算步骤和顺序,画出流分析课题,确定计算方法、运算步骤和顺序,画出流程图。程图。(2)确定数据,包括工作单元的数量,分配存放单元。确定数据,包括工作单元的数量,分配存放单元。(3)按所使用计算机的指令系统,根据流程图编写汇编语按所使用计算机的指令系统,根据流程图编写汇编语言程序。言程序。基本结构形式:基本结构形式:顺序结构、循环结构、分支结构、子程序结构。顺序结构、循环结构、分支结构、子程序结构。
3、第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计1、顺序程序、顺序程序顺序程序的特点和设计方法:顺序程序的特点和设计方法:1.结构比较简单,按程序编写顺序依次执行,程结构比较简单,按程序编写顺序依次执行,程序流向不变。序流向不变。2.使用数据传送类指令较多,程序中没有控制转使用数据传送类指令较多,程序中没有控制转移类指令。移类指令。3.可作为复杂程序中的某一组成部分。可作为复杂程序中的某一组成部分。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-1】双字节二进制数求补。双字节二进制数求补。程序说明:对程序
4、说明:对R3(高高8位位)、R2(低低8位位)中的二进制定中的二进制定 点数取反加点数取反加1即可得到其补码。即可得到其补码。程序清单:程序清单:BINPL:MOV A,R2 CPL A;低位字节取反;低位字节取反ADD A,#01H;加;加1 MOV R2,A;低位字节补码送;低位字节补码送R2 MOV A,R3 CPL A;高位字节取反;高位字节取反 ADDC A,#00H;加进位;加进位 MOV R3,A ;高位字节补码送;高位字节补码送R3 RET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计2分支程序分支程序分支程序的特点和设计方法:分支程序
5、的特点和设计方法:1.程序中包含无条件转移、条件转移和散转指令。程序中包含无条件转移、条件转移和散转指令。2.单分支程序有一个入口、两个出口,一般用无条件转单分支程序有一个入口、两个出口,一般用无条件转移和条件转移指令来实现。其结构形式有两种:一种移和条件转移指令来实现。其结构形式有两种:一种是当条件满足时,执行是当条件满足时,执行A段处理程序,否则执行段处理程序,否则执行B段段处理程序。另一种是当条件满足时,跳过处理程序。另一种是当条件满足时,跳过A段处理程段处理程序,直接执行序,直接执行B段处理程序,否则顺序执行段处理程序,否则顺序执行A段和段和B段处理程序。段处理程序。3.分支程序的出口
6、有两个以上时,一般用散转指令来实分支程序的出口有两个以上时,一般用散转指令来实现。其实现方法有四种,分别是转移指令表法、地址现。其实现方法有四种,分别是转移指令表法、地址偏移量表法、转向地址表法和利用偏移量表法、转向地址表法和利用RET指令法。指令法。4.分支程序允许嵌套,即一个分支接一个分支,形成树分支程序允许嵌套,即一个分支接一个分支,形成树状多分支结构。状多分支结构。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-2】设变量设变量x存放在存放在VAR单元之中,函数单元之中,函数值值 y存放在存放在FUNC中,按下式给中,按下式给y赋值赋值
7、:程序清单:程序清单:VAR EQU 30HFUNC EQU 31HSTART:MOV A,VAR ;取;取xJZ COMP ;为;为0,转,转COMPJNB ACC.7,POSI ;0,转,转POSIMOV A,#0FFH ;0,-1送入送入ASJMP COMPPOSI:MOV A,#01H ;+1送入送入ACOMP:MOV FUNC,AEND第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-3】32个分支转移程序。根据入口条件转移到个分支转移程序。根据入口条件转移到32个个 目的地址。目的地址。入口入口:(R3)转移目的地址的序号转移目的地址
8、的序号00H-1FH。出口:转移到相应子程序入口。出口:转移到相应子程序入口。程序清单:程序清单:MP:MOV A,R3 ;取序号;取序号RL A ;序号乘;序号乘2 MOV DPTR,#JTAB ;32个子程序个子程序 首地址送首地址送DPTR JMP A+DPTR ;根据序号转移;根据序号转移JTAB:AJMP ROUT00 ;32个子程序首地址个子程序首地址 AJMP ROUT01 AJMP ROUT31 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计3循环程序循环程序包括:包括:循环初始化、循环处理、循环控制循环初始化、循环处理、循环控制图4-
9、4 循环程序流程图的两种组织方式第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计循环程序的特点和设计方法:循环程序的特点和设计方法:1.结构紧凑,占用存储单元较少,程序中间有分支。结构紧凑,占用存储单元较少,程序中间有分支。2.2.凡是分支程序中可以使用的控制转移指令,循环程序一般凡是分支程序中可以使用的控制转移指令,循环程序一般都都 3.可以使用。可以使用。4.3.循环控制有多种形式,较常用的是计数循环和条件循环两循环控制有多种形式,较常用的是计数循环和条件循环两种种5.形式。形式。分类:分类:单重循环程序、多重循环程序单重循环程序、多重循环程序第第四
10、四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-4】若若Xi均为单字节数,并按均为单字节数,并按i(i=1n)的顺序存放在内部的顺序存放在内部 RAM从从50H开始的单元中,开始的单元中,n放在放在R2中,要求将它们中,要求将它们 的和的和(双字节双字节)放在放在R3、R4中。中。程序清单:程序清单:ADD1:MOV R3,#00H ;清和存储单元;清和存储单元 MOV R4,#00H MOV R2,#n ;置循环计数初值;置循环计数初值MOV R0,#50HLOOP:MOV A,R4 ;取部分和低位;取部分和低位 ADD A,R0 ;与;与Xi相加
11、相加 MOV R4,A INC R0 ;Xi地址加地址加1 CLR A ADDC A,R3 ;低位字节向高位进位;低位字节向高位进位 MOV R3,A DJNZ R2,LOOP;未加完继续重复;未加完继续重复 END入口:入口:Xi存放在从存放在从50H开始的单元;开始的单元;n放在放在R2中。中。出口:和存放于出口:和存放于R3、R4中中第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-5】已知已知8051单片机使用的晶振为单片机使用的晶振为6MHz,要求设计一,要求设计一 个软件延时程序,延时时间为个软件延时程序,延时时间为10ms。延时程序
12、的延时时间主要与所用晶振频率和延时程序中的循延时程序的延时时间主要与所用晶振频率和延时程序中的循环次数有关。由晶振频率为环次数有关。由晶振频率为6MHz6MHz可知,一个机器周期为可知,一个机器周期为2 2。入口:入口:(R0)=(R0)=毫秒数;毫秒数;(R1)=1ms(R1)=1ms延时预定值。延时预定值。出口:定时到,退出程序。出口:定时到,退出程序。程序清单:程序清单:ORG 2000H 周期数周期数MOV R0,#0AH ;毫秒数;毫秒数R0 1DL2:MOV R1,#MT ;1ms延时值延时值R1 1DL1:NOP 1NOP 1 DJNZ R1,DL1 ;1ms延时循环延时循环 2
13、 DJNZ R0,DL2 ;10ms延时循环延时循环 2END该延时程序实际上是一个双重循环程序。内循环的预定值MT尚需计算:(1+1+2)2 MT=1000(s)MT=125=7DH用7DH代替程序中的MT,则该程序执行后,能实现10ms的延时。若考虑其他指令的时间因素,则该段延时程序的精确延时时间应为:12 s+(1+2)2 s+(1+1+2)2 s 12510=10062(s)第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4、子程序设计、子程序设计子程序的特点和设计方法:子程序的特点和设计方法:1.子程序的第一条指令的地址成为子程序的入口地址,该
14、指子程序的第一条指令的地址成为子程序的入口地址,该指令前应有标号。令前应有标号。2.在主程序中用调用指令调用子程序,在子程序末尾用返回在主程序中用调用指令调用子程序,在子程序末尾用返回指令从子程序返回到主程序。指令从子程序返回到主程序。3.在子程序的开始,使用压栈指令把需要保护的内容压入堆在子程序的开始,使用压栈指令把需要保护的内容压入堆栈;在返回主程序前,使用弹出指令把堆栈中保护的内容栈;在返回主程序前,使用弹出指令把堆栈中保护的内容送回原来的寄存器或存储单元中。送回原来的寄存器或存储单元中。4.在子程序中尽量使用相对转移指令,以便子程序放在内存在子程序中尽量使用相对转移指令,以便子程序放在
15、内存的任何区域都能被主程序调用。的任何区域都能被主程序调用。5.子程序的入口参数由主程序通过相关的工作寄存器、特殊子程序的入口参数由主程序通过相关的工作寄存器、特殊功能寄存器、片内功能寄存器、片内RAM或堆栈等传递给子程序;子程序的或堆栈等传递给子程序;子程序的出口参数由子程序通过相关的工作寄存器、特殊功能寄存出口参数由子程序通过相关的工作寄存器、特殊功能寄存器、片内器、片内RAM或堆栈等传递给主程序。或堆栈等传递给主程序。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-6】用程序实现用程序实现 ,设,设a、b、c分别存于内部分别存于内部RAM
16、 的的30H、31H、32H 单元。单元。主程序清单:主程序清单:STAR:MOV A,30H ACALL SQR;调用查表子程序;调用查表子程序 MOV R1,A;暂存暂存R1中中 MOV A,31H ACALL SQR ;调查表子程序;调查表子程序 ADD A,R1;平方和存;平方和存A中中 MOV 32H,A SJMP$;等待;等待子程序清单:子程序清单:SQR:INC A ;加;加RET占的一个字节占的一个字节 MOVC A,A+PC ;查平方表;查平方表 RETTAB:DB 0,1,4,9,16 DB 25,36,49,64,81 END 子程序入口条件:子程序入口条件:(A)=待查
17、表的数。待查表的数。出口条件:出口条件:(A)=平方值。平方值。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.2 代码转换类程序代码转换类程序(1)双字节二进制数转换成双字节二进制数转换成BCD数。数。转换方法:转换方法:因为因为 所以将二进制数从最高位逐次左移入所以将二进制数从最高位逐次左移入BCD码寄存器的最低位,并且每次都码寄存器的最低位,并且每次都实现实现 的运算。共循环的运算。共循环16次,由次,由R7控制。控制。入口:入口:R3R2(16位无符号二进制整数位无符号二进制整数)。出口:出口:R6(万位万位)、R5(千位、百位千位、百位)、
18、R4(十值、个位十值、个位)存放存放5位位BCD码。码。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计程序清单:程序清单:BCBCD:CLR A ;BCD码寄存器清零码寄存器清零 MOV R4,A MOV R5,A MOV R6,A MOV R7,#10H ;设循环指针;设循环指针LP0:CLR C ;C清清0 MOV A,R2 ;取;取16位无符号数低字节位无符号数低字节RLC A ;低字节带进位左移;低字节带进位左移MOV R2,A ;左移结果保存在;左移结果保存在R2中中 MOV A,R3 ;取;取16位无符号数高字节位无符号数高字节 RLC A
19、 ;高字节带进位左移;高字节带进位左移 MOV R3,A ;左移结果保存在;左移结果保存在R3中中 MOV A,R4 ;实现;实现 的运算的运算 ADDC A,R4;(;(R4)+(R4)=(R4)2,带进位相加,带进位相加,C中为中为ai DA A;十进制调整;十进制调整MOV R4,AMOV A,R5ADDC A,R5;(;(R5)+(R5)=(R5)2DA A MOV R5,A MOV A,R6 ADDC A,R6;(;(R6)+(R6)=(R6)2 DA A MOV R6,ADJNZ R7,LP0RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设
20、设计计(2)BCD数转换成双字节二进制数。数转换成双字节二进制数。转换方法:转换方法:因为因为 ,而,而 运算可编成子程序。运算可编成子程序。入口:入口:R5(千位,百位千位,百位)、R4(十位,个位十位,个位)为为BCD码。码。出口:出口:R5R4(16位位无符号二进制整数无符号二进制整数)。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计程序清单:程序清单:BCDB:MOV A,R5 MOV R2,A ;取千位、百位;取千位、百位BCD码码ACALL BCDB1 ;调用子程序;调用子程序MOV B,#64H MUL AB;乘以;乘以100MOV R6
21、,A ;乘积低;乘积低8位送位送R6XCH A,B ;交换乘积高、低位;交换乘积高、低位MOVR5,A;乘积高位送;乘积高位送R5MOV A,R4;取十位、个位;取十位、个位BCD码码MOV R2,A;送入;送入R2 ACALL BCDB1 ;调用子程序;调用子程序ADD A,R6;加千位、百位乘积低;加千位、百位乘积低8位位MOV R4,A;送入;送入R4MOV A,R5;乘积高;乘积高8位送位送AADDC A,#00H;加进位位;加进位位MOV R5,A;存结果;存结果HERE:SJMPHERE子程序清单:子程序清单:BCDB1:MOV A,R2 ;取;取BCD码码 ANL A,#0F0H
22、 ;屏蔽低;屏蔽低4位位 SWAP A MOV B,#0AH MUL AB;高位;高位BCD码乘以码乘以10MOV R3,A ;乘积送;乘积送R3MOV A,R2 ;取;取BCD码码ANL A,#0FH ;屏蔽高;屏蔽高4位位ADD A,R3 ;高位加低位;高位加低位BCD码码MOV R2,A ;送;送R2RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计(3)4位二进制数转换为位二进制数转换为ASCII码。码。转换方法:转换方法:数字数字09的的ASCII码分别是码分别是30H39H;英文大写字母英文大写字母AF的的ASCII码分别是码分别是41
23、H46H。可见数字可见数字09的的ASCII码与数字值相差码与数字值相差30H。字母。字母AF的的ASCII码与其数值相差码与其数值相差37H。转换过程中,。转换过程中,若若4位二进制数小于位二进制数小于10,则此二进制数加上,则此二进制数加上30H,若大于或等于若大于或等于10,则加上,则加上37H。入口:入口:(R2)=4位二进制数。位二进制数。出口:出口:(R2)=转换后的转换后的ASCII码。码。程序清单:程序清单:BINASC:MOV A,R2 ;取;取4位二进制数位二进制数 ANL A,#0FH ;屏蔽高;屏蔽高4位位 CLR C CJNE A,#0AH,LP ;LP:JC LOO
24、P ;该数该数10转到转到LOOP ADD A,#07HLOOP:ADD A,#30H MOV R2,A ;ASCII码码(R2)RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计(4 4)ASCIIASCII码转换为码转换为4 4位二进制数。位二进制数。转换方法:转换方法:为为4位二进制数转换位二进制数转换为为ASCII码的逆过程。码的逆过程。入口:入口:(R2)=ASCII码。码。出口:出口:(R2)=转换后的二进制数。转换后的二进制数。程序清单:程序清单:ASCBIN:MOV A,R2 ;取;取ASCII码码 CLR C SUBB A,#30
25、H ;ASCII码减去码减去30H MOV R2,A ;得二进制数;得二进制数(R2)SUBB A,#0AH MOV A,R2 ;减减30H结果结果A JC LOOP ;10,再减去再减去07H LOOP:MOV R2,A ;存结果;存结果 RET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.3 运算类程序运算类程序定点数的表示方法:定点数的表示方法:定点数就是小数点固定的数。它可以分为整数、小数、定点数就是小数点固定的数。它可以分为整数、小数、混合小数等。按数的正负可分为无符号数和有符号数。混合小数等。按数的正负可分为无符号数和有符号数。1、有符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 MCS-51单片机汇编语言程序设计 MCS 51 单片机 汇编语言 程序设计
限制150内