第4章 MCS-51单片机汇编语言程序设计.ppt

上传人:hwp****526 文档编号:84382264 上传时间:2023-04-05 格式:PPT 页数:51 大小:1.58MB
返回 下载 相关 举报
第4章 MCS-51单片机汇编语言程序设计.ppt_第1页
第1页 / 共51页
第4章 MCS-51单片机汇编语言程序设计.ppt_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《第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、有符

26、号数的表示方法、有符号数的表示方法(1)原码表示法)原码表示法(2)补码表示法)补码表示法如果在一个无符号数中增加一个符号位,就可以表示数的正负。符号位为0表示该数是正数;符号位为1表示该数为负数。引入补码后,在数的前面加一位符号位,该位为0表示正数,为1表示负数。对于正数,数值表示法不变;对于负数,采用该数的补码来表示。4.3.1 定点数运算程序设计定点数运算程序设计第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-74-7】双字节数取补子程序双字节数取补子程序功能:(功能:(R4R5R4R5)取补)取补 (R4R5)(R4R5)入口:入口:R

27、4R5R4R5中存放被取补数中存放被取补数出口:出口:取补后数仍存放在取补后数仍存放在R4R5R4R5中中 程序清单:程序清单:CMPTCMPT:MOV MOV A,R5A,R5;取低;取低8 8位数位数 CPL CPL A A ADD ADD A,#1A,#1 MOV MOV R5,AR5,A;低;低8 8位取补后送位取补后送R5R5MOV MOV A,R4A,R4;取高;取高8 8位数位数CPL CPL A A;取反;取反ADDC ADDC A,#0A,#0;加进位位;加进位位MOV MOV R4,AR4,A;高;高8 8位数取补后送位数取补后送R4R4RET RET 第第四四章章 MMC

28、 CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计2.2.带符号数的移位带符号数的移位 在一个采用位置表示权的数制中,数的左移和右移操作在一个采用位置表示权的数制中,数的左移和右移操作分别等于乘以和除以基数的操作。由于一般带有符号的数的分别等于乘以和除以基数的操作。由于一般带有符号的数的最高位为符号位,故在执行算术移位操作时,必须保持最高最高位为符号位,故在执行算术移位操作时,必须保持最高位不变,需选择适当的数字移入空位置。以带符号的二进制位不变,需选择适当的数字移入空位置。以带符号的二进制数为例:数为例:1.1.正数:由于正数的符号位为正数:由于正数的符号位为0 0,故左移

29、或右移都移入,故左移或右移都移入0 0。2.原码表示的负数:由于负数的符号位为原码表示的负数:由于负数的符号位为1,故移位时符,故移位时符号不应参加移位,并保证左移或右移都移入号不应参加移位,并保证左移或右移都移入0。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-84-8】双字节原码左移一位子程序。双字节原码左移一位子程序。功能:(功能:(R2R3R2R3)左移一位)左移一位 (R2R3)(R2R3),不改变符号位,不改变符号位,不考虑溢出不考虑溢出入口:入口:原码双字节存放在原码双字节存放在R2R3R2R3中中出口:出口:左移后仍存放在左移

30、后仍存放在R2R3R2R3中中程序清单:程序清单:DRL1:MOV A,R3;取低;取低8位位 CLR C;清进位位;清进位位 RLC A;带进位左移;带进位左移 MOV R3,A;低;低8位左移一位送位左移一位送R3 MOV A,R2;取高;取高8位位 RLC A;带进位左移;带进位左移 MOV A.7,;恢复符号位;恢复符号位 MOV R2,A;高;高8位左移后送位左移后送R2RET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-94-9】双字节原码右移一位子程序。双字节原码右移一位子程序。功能:(功能:(R2R3R2R3)右移一位)右移一

31、位 (R2R3)(R2R3),不改变符号位,不改变符号位,不考虑溢出不考虑溢出入口:入口:原码双字节存放在原码双字节存放在R2R3R2R3中中出口:右出口:右移后仍存放在移后仍存放在R2R3R2R3中中程序清单:程序清单:DRR1:MOV A,R2;取高;取高8位位 MOV C,A.7;A.7送入送入CY CLR A.7 ;A.7位清位清0 RRC A;高;高8位带进位右移,恢位带进位右移,恢 复符号位复符号位 MOV R2,A MOV A,R3;取低;取低8位位 RRC A;低;低8位带进位右移一位位带进位右移一位 MOV R3,ARET第第四四章章 MMC CS S-5 51 1单单片片机

32、机汇汇编编语语言言程程序序设设计计3 3、补码表示的负数:、补码表示的负数:补码表示的负数的左移操作与原码相补码表示的负数的左移操作与原码相同,低位移入同,低位移入0 0。右移时,最高位应移入。右移时,最高位应移入1 1。【例例4-104-10】双字节补码右移一位子程序。双字节补码右移一位子程序。功能:(功能:(R2R3R2R3)右移一位)右移一位 (R2R3)(R2R3),不改变符号位,不改变符号位入口:入口:双字节补码存放在双字节补码存放在R2R3R2R3中中出口:右出口:右移后仍存放在移后仍存放在R2R3R2R3中中程序清单:程序清单:CRR1:MOV A,R2;取高;取高8位位 MOV

33、 C,A.7;暂存符号位;暂存符号位 RRC A ;高;高8位带进位右移,将符号位带进位右移,将符号 位移进位移进A.7 MOV R2,A;高;高8位移位后送位移位后送R2 MOV A,R3;取低;取低8位位 RRC A;低;低8位带进位右移位带进位右移 MOV R3,A;送;送R3RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.3.2 4.3.2 定点数加减运算定点数加减运算【例例4-114-11】双字节补码加法子程序。双字节补码加法子程序。功能:功能:(R2R3R2R3)+(R6R7R6R7)(R4R5)(R4R5)入口:入口:R2R3存

34、放被加数,存放被加数,R6R7存放加数存放加数出口:出口:结果存放在结果存放在R4R5R4R5中中 出口时出口时OV=1OV=1表示溢出表示溢出程序清单:程序清单:NADD:MOV A,R3;取被加数低;取被加数低8位位 ADD A,R7;与加数低;与加数低8位相加位相加 MOV R5,A;低;低8位之和送入位之和送入R5 MOV A,R2;取被加数高;取被加数高8位位ADDC A,R6;与加数高;与加数高8位带进位相加位带进位相加MOV R4,A;高;高8位和送位和送R4RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-124-12】双

35、字节补码减法子程序。双字节补码减法子程序。功能:功能:(R2R3R2R3)-(R6R7R6R7)(R4R5)(R4R5)入口:入口:R2R3存放被减数,存放被减数,R6R7存放减数存放减数出口:出口:结果存放在结果存放在R4R5R4R5中中 出口时出口时OV=1OV=1表示溢出表示溢出程序清单:程序清单:NADD:MOV A,R3;取被减数低;取被减数低8位位 CLR C;清进位位;清进位位 SUBB A,R7;低;低8位相减位相减 MOV R5,A;结果送;结果送R5 MOV A,R2;取被减数高;取被减数高8位位SUBB A,R6;高;高8位带借位相减位带借位相减MOV R4,A;结果送;

36、结果送R4RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.3.3 定点数乘法运算定点数乘法运算用重复加法作乘法的过程可叙述如下:用重复加法作乘法的过程可叙述如下:1.1.清清0 0累计积累计积2.2.从最低位开始检查各个乘数位。从最低位开始检查各个乘数位。3.3.如乘数位为如乘数位为1 1,加被乘数至累计积,否则不加。,加被乘数至累计积,否则不加。4.4.左移一位被乘数。左移一位被乘数。5.5.重复步骤(重复步骤(1 1)(4 4)n n次。(次。(n n为字长)。为字长)。实际用程序实现这一算法时,把乘数与结果联合组实际用程序实现这一算法时

37、,把乘数与结果联合组成一个双倍字长,将左移被乘数改为右移结果与乘数。成一个双倍字长,将左移被乘数改为右移结果与乘数。一方面可化简加法(只需要单字长运算),另一方面可一方面可化简加法(只需要单字长运算),另一方面可用右移来完成乘数最低位的检查,得到的乘积为双倍字用右移来完成乘数最低位的检查,得到的乘积为双倍字长。程序框图如图长。程序框图如图4-124-12所示。所示。1.1.无符号数二进制乘法无符号数二进制乘法第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-1

38、34-13】采用重复相加法的双字节无符号乘法。采用重复相加法的双字节无符号乘法。功能:(功能:(R2R3R2R3)(R6R7R6R7)(R4R5R6R7R4R5R6R7)入口:入口:R2R3R2R3中存放被乘数,中存放被乘数,R6R7R6R7中存放乘数中存放乘数出口:结果存放在出口:结果存放在R4R5 R6R7R4R5 R6R7中中程序框图如图程序框图如图4-134-13所示。所示。程序清单:程序清单:NMUL:MOV R4,#0 ;R4,R5清清0MOV R5,#0MOV R0,#16 ;16位二进制数位二进制数CLR CNMLP:MOV A,R4 ;CR4R5R6R7右移一位右移一位RRC

39、 AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计RRC A;C中为移出的乘数最低位中为移出的乘数最低位MOV R7,A;JNC NMLN ;C不为不为1,转,转NMLNMOV A,R5;C为为1,(R4R5)+(R2R3)ADD A,R3MOV R5,AMOV A,R4ADDC A,R2MOV R4,ANMLN:DJNZ R0,NMLP ;循环;循环16次次MOV A,R4 ;CR4R5R6R7再右移一位再右移一位RRC A 将将C移入

40、移入(R4).7MOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7RRC AMOV R7,ARET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计2.2.有符号数二进制乘法有符号数二进制乘法(1 1)原码乘法)原码乘法 对原码表示的带符号二进制数,按正数与正数相乘为正,对原码表示的带符号二进制数,按正数与正数相乘为正,正数与负数相乘为负,负数与负数相乘为正的原则,得出积正数与负数相乘为负,负数与负数相乘为正的原则,得出积的符号(计算机中可用异或操作得出积的符号),然后清的符号(计算机中可用

41、异或操作得出积的符号),然后清0 0符号位,执行不带符号位的乘法,最后送积的符号。符号位,执行不带符号位的乘法,最后送积的符号。设被乘数设被乘数A A的符的符号为号为A0A0,数值为,数值为A A,乘数乘数B B的符号位为的符号位为B0B0,数值为,数值为B B,积,积C C的的符号位为符号位为C0C0,数值,数值为为C C,这个算法可用,这个算法可用图图4-144-14来表示(图来表示(图中中F0F0为符号暂存位)。为符号暂存位)。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-144-14】原码有符号数双字节乘法。原码有符号数双字节乘法。功

42、能:(功能:(R2R3R2R3)(R6R7R6R7)(R4R5R6R7R4R5R6R7)入口:入口:R2R3R2R3中存放被乘数,中存放被乘数,R6R7R6R7中存放乘数中存放乘数出口:积存放在出口:积存放在R4R5 R6R7R4R5 R6R7中中说明:所有操作数均为原码,符号位在最高位。说明:所有操作数均为原码,符号位在最高位。本程序调用例本程序调用例4-134-13的无符号双字节乘法子程序。的无符号双字节乘法子程序。程序清单:程序清单:MULT:MOV A,R2;取被乘数高8位 XRL A,R6;与乘数高8位异或 MOV ,.7;暂存符号位 MOV F0,CMOV A,R2;取被乘数高8位

43、 CLR .;清符号位后送回R2 MOV R2,A MOV A,R6;取乘数高8位 CLR .;清符号位后送回R6 MOV R6,A ACALL NMUL;调用无符号乘法 MOV A,R4;取乘积的高8位 MOV ,0;送积的符号 MOV .,CMOV R4,A RET 第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计(2)(2)补码乘法补码乘法 采取先变成原码,采取先变成原码,然后执行乘法,再由然后执行乘法,再由符号标志确定乘积符符号标志确定乘积符号的方法。号的方法。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计

44、计3.MCS-513.MCS-51快速乘法快速乘法 MCS-51MCS-51快速乘法有一条乘法指令:快速乘法有一条乘法指令:MUL ABMUL AB。它执行。它执行(A)(A)(B)(B)BABA。它进行的是单字节乘以单字节,积为双字。它进行的是单字节乘以单字节,积为双字节的运算。由于单字节运算不能满足实际需要,故必需把节的运算。由于单字节运算不能满足实际需要,故必需把它扩展为双字节的乘法。扩展时可按照以字节为单位的竖它扩展为双字节的乘法。扩展时可按照以字节为单位的竖式乘法来编程序。式乘法来编程序。【例例4-15】无符号双字节快速乘法。无符号双字节快速乘法。功能:(功能:(R2R3R2R3)(

45、R6R7R6R7)(R4R5R6R7R4R5R6R7)入口:入口:R2R3R2R3中存放被乘数,中存放被乘数,R6R7R6R7中存放乘数中存放乘数出口:积存放在出口:积存放在R4R5 R6R7R4R5 R6R7中中计算及原理如下式:计算及原理如下式:【R2】【R3】【R6】【R7】【R3R7】H 【R3R7】L 【R2R7】H 【R2R7】L 【R3R6】H 【R3R6】L【R2R6】H【R2R6】L 【R4】【R5】【R6】【R7】第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计程序清单:程序清单:QMUL:MOV A,R3 MOV B,R7 MUL

46、AB;(;(R3)(R7)XCH A,R7;(;(R7)=(R3R7)L MOV R5,B;(;(R5)=(R3R7)H MOV B,R2 MUL AB ;(;(R2)(R7)ADD A,R5 MOV R4,A CLR A ADDC A,B MOV R5,A;(;(R5)=(R2R7)H MOV A,R6第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计MOV B,R3MUL AB;(;(R3)(R6)ADD A,R4XCH A,R6XCH A,B ADDC A,R5MOV R5,AMOV F0,C;暂存;暂存CyMOV A,R2MUL AB;(;(R2)

47、(R6)ADD A,R5 MOV R5,ACLR AMOV A.0,CMOV C,F0;加以前加法的进位;加以前加法的进位ADDC A,BMOV R4,A ;(R2R6)R4RET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计4.3.4 定点数除法运算定点数除法运算1.1.无符号二进制数除法无符号二进制数除法图4-16 比较除法流程图手算除法步骤第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计【例例4-164-16】采用比较采用比较的无符号双字节除法的无符号双字节除法。功能:功能:(R2R3R4R5R2R3R4R

48、5)(R6R7R6R7)(R4R5R4R5)余数为(余数为(R2R3R2R3)入口:入口:R2R3R4R5R2R3R4R5中存放中存放 被除数,被除数,R6R7R6R7中中 存放除数。存放除数。出口:商存放在出口:商存放在R4R5R4R5,余数存放在余数存放在R2R3R2R3 中。中。第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计程序清单:程序清单:NDIVI:MOV A,R3 ;先比较是否发生溢出;先比较是否发生溢出CLR CSUBB A,R7MOV A,R2SUBB A,R6JNC NDVE1MOV B,#16 ;无溢出,进行除法;无溢出,进行除法

49、NDVL1:CLR C ;执行左移一位,移入为;执行左移一位,移入为0 MOV A,R5 RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AXCH A,R2 ;(R3)R2,(R2)ARLC AXCH A,R2 ;(R3)A第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计 MOV F0,C;保存移出的最高位;保存移出的最高位 CLR C SUBB A,R7 ;(R3)(R7)R1 MOV R1,A MOV A,R2 SUBB A,R6 ;(R2)(R6)A JB F0,NDVM1 JC NDVD

50、1NDVM1:MOV R2,A ;执行减法(回送减法结果);执行减法(回送减法结果)MOV A,R1 MOV R3,A INC R5 ;上商;上商1NDVD1:DJNZ B,NDVL1 ;循环;循环16次次 CLR F0;正常出口;正常出口 RETNDVE1:SETB F0;溢出;溢出 RET第第四四章章 MMC CS S-5 51 1单单片片机机汇汇编编语语言言程程序序设设计计2.2.带符号二进制除法带符号二进制除法 (1)(1)原码除法:原码除法在除法前,先求出商的符号,然原码除法:原码除法在除法前,先求出商的符号,然后清零符号位,执行不带符号的除法,最后送商的符号。后清零符号位,执行不带

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com