MCS-51单片机实用子程序库

上传人:muj****520 文档编号:158107842 上传时间:2022-10-03 格式:DOCX 页数:124 大小:151.88KB
收藏 版权申诉 举报 下载
MCS-51单片机实用子程序库_第1页
第1页 / 共124页
MCS-51单片机实用子程序库_第2页
第2页 / 共124页
MCS-51单片机实用子程序库_第3页
第3页 / 共124页
资源描述:

《MCS-51单片机实用子程序库》由会员分享,可在线阅读,更多相关《MCS-51单片机实用子程序库(124页珍藏版)》请在装配图网上搜索。

1、单片机实用子程序库(年版) 周 航 慈 目目前已有有若干版版本的子子程序库库公开发发表,它它们各有有特色。笔笔者在119888年也编编制了两两个子程序库(定定点子程程序库和和浮点子子程序库库),并并在相容容性、透透明性、容容错性和和算法优优化方面作了一些些工作。本本程序库库中的开开平方算算法为笔笔者研究究的快速速逼近算算法,它它能达到到牛顿迭迭代法同样的的精度,而而速度加加快二十十倍左右右,超过过双字节节定点除除法的速速度。经经过八年年来全国国广大用户的的实际使使用,反反馈了不不少信息息,陆续续扩充了了一些新新的子程程序,纠纠正了一一些隐含含错误,成为现现在这个个最新版版本。 本本子程序序库对

2、单单片机应应用程序序设计技技术一一书附录录中的子子程序库库作了重重大修订订: ()按当当前流行行的以 IBMM PCC 为主主机的开开发系统统对汇编编语言的的规定,将将原子程程序库的标号和位位地址进进行了调调整,读读者不必必再进行行修改,便便可直接接使用。 ()对浮浮点运算算子程序序库进行行了进一一步的测测试和优优化,对对十进制制浮点数数和二进进制浮点数的相互互转换子子程序进进行了彻彻底改写写,提高高了运算算精度和和可靠性性。 ()新增增添了若若干个浮浮点子程程序(传传送、比比较、清清零、判判零等),使使编写数数据处理理程序的工作作变得更更简单直直观。 在在使用说说明中开开列了最最主要的的几项

3、:标号、入入口条件件、出口口信息、影影响资源源、堆栈栈需求,各项项目的意意义请参参阅单单片机应应用程序序设计技技术第第六章 6.33.7 节的内内容。程程序清单中开列列了四个个栏目:标号、指指令、操操作数、注注释。为为方便读读者理解解,注释释尽力详详细。 子子程序库库的使用用方法如如下: 将子子程序库库全部内内容链接接在应用用程序之之后,统统一编译译即可。优优点是简简单方便便,缺点是程序太太长,大大量无关关子程序序也包含含在其中中。 仅将将子程序序库中的的有关部部分内容容链接在在应用程程序之后后,统一一编译即即可。有有些子程程序需要调用用一些低低级子程程序,这这些低级级子程序序也应该该包含在在

4、内。优优点是程程序紧凑凑,缺点点是需要对子程程序库进进行仔细细删节。 (一) 定点点运算子子程序库库及其使使用说明明 定定点运算算子程序序库文件件名为DDQ511.ASSM,为为便于使使用,先先将有关关约定说说明如下下: 多字字节定点点操作数数:用R0或RR1来来表示存存放在由由R0或或R1指指示的连连续单元元中的数数据。地址小小的单元元存放数数据的高高字节。例例如:R0=12234556H,若若(R00)=330H,则则(300H)=12HH,(31H)=344H,(32HH)=556H。 运算算精度:单次定定点运算算精度为为结果最最低位的的当量值值。 工作作区:数数据工作作区固定定在PSS

5、W、AA、B、RR2RR7,用用户只要要不在工工作区中中存放无无关的或非消消耗性的的信息,程程序就具具有较好好的透明明性。 () 标号: 功能能:多字字节码加加法入口条件:字节数数在R77中,被被加数在在R00中,加加数在R1中。出口信息:和在R0中,最最高位进进位在CCY中。影响资源:PSWW、A、RR2 堆堆栈需求求: 字节节BCDA:MOVVA,RR7;取字字节数至至R2中中MOVR2,AADDA,RR0;初始始化数据据指针MOVR0,AMOVA,RR2ADDA,RR1MOVR1,ACLRCBCD1:DECCR0;调整整数据指指针DECR1MOVA,R0ADDCCA,R1;按字字节相加加

6、DAAA;十进进制调整整MOVR00,A;和存存回RR0中中DJNZZR2,BCDD1;处理理完所有有字节RET () 标号: 功能能:多字字节码减减法入口条件:字节数数在R77中,被被减数在在R00中,减减数在R1中。出口信息:差在R0中,最最高位借借位在CCY中。影响资源:PSWW、A、RR2、RR3 堆堆栈需求求: 字节节BCDB:LCAALLNEGG1;减数数R11十进进制取补补LCALLLBCDDA;按多多字节码码加法处处理CPLC;将补补码加法法的进位位标志转转换成借借位标志志MOVF0,C;保护护借位标标志LCALLLNEGG1;恢复复减数R1的原始始值MOVC,FF0 ;恢复借

7、借位标志志RETNEG1:MOVVA,RR0;RR1十十进制取取补子程程序入口口XCHA,RR1;交换换指针XCHA,RR0LCALLLNEGG;通过过R00实现现R11取补补MOVA,RR0XCHA,RR1;换回回指针XCHA,RR0RET () 标号: 功能:多字节节码取补补入口条件:字节数数在R77中,操操作数在在R00中。出口信息:结果仍仍在RR0中中。影响资源:PSWW、A、RR2、RR3 堆堆栈需求求: 字节节NEG:MOVVA,RR7;取(字字节数减减一)至至R2中中DECAMOVR2,AMOVA,RR0;保护护指针MOVR3,ANEG0:CLRRCMOVA,#99HHSUBBB

8、A,R0;按字字节十进进制取补补MOVR00,A;存回回R00中INCR0;调整整数据指指针DJNZZR2,NEGG0;处理理完(RR2)字字节MOVA,#9AHH;最低低字节单单独取补补SUBBBA,R0MOVR00,AMOVA,RR3;恢复复指针MOVR0,ARET () 标号: 功能能:多字字节码左左移十进进制一位位(乘十十)入口条件:字节数数在R77中,操操作数在在R00中。出口信息:结果仍仍在RR0中中,移出出的十进进制最高高位在RR3中。影响资源:PSWW、A、RR2、RR3 堆堆栈需求求: 字节节BRLN:MOVVA,RR7;取字字节数至至R2中中 MMOVR2,AADDA,RR

9、0;初始始化数据据指针MOVR0,AMOVR3,#0;工作作单元初初始化BRL1:DECCR0;调整整数据指指针MOVA,R0;取一一字节SWAPPA;交换换十进制制高低位位MOVR00,A;存回回MOVA,RR3;取低低字节移移出的十十进制高高位XCHDDA,R0;换出出本字节节的十进进制高位位MOVR3,A;保存存本字节节的十进进制高位位DJNZZR2,BRLL1;处理理完所有有字节RET () 标号: 功能:双字节节二进制制无符号号数乘法法入口条件:被乘数数在R22、R33中,乘乘数在RR6、RR7中。出口信息:乘积在在R2、RR3、RR4、RR5中。影响资源:PSWW、A、BB、R22

10、R77 堆栈栈需求: 字节MULD:MOVVA,RR3;计算算R3乘乘R7MOVB,RR7MULABMOVR4,B;暂存存部分积积MOVR5,AMOVA,RR3;计算算R3乘乘R6MOVB,RR6MULABADDA,RR4;累加加部分积积MOVR4,ACLRAADDCCA,BBMOVR3,AMOVA,RR2;计算算R2乘乘R7MOVB,RR7MULABADDA,RR4;累加加部分积积MOVR4,AMOVA,RR3ADDCCA,BBMOVR3,ACLRARLCAXCHA,RR2;计算算R2乘乘R6MOVB,RR6MULABADDA,RR3;累加加部分积积MOVR3,AMOVA,RR2ADDCCA

11、,BBMOVR2,ARET () 标号: 功能:双字节节二进制制无符号号数平方方入口条件:待平方方数在RR2、RR3中。出口信息:结果在在R2、RR3、RR4、RR5中。影响资源:PSWW、A、BB、R22R55 堆栈栈需求: 字节MUL2:MOVVA,RR3;计算算R3平平方MOVB,AAMULABMOVR4,B;暂存存部分积积MOVR5,AMOVA,RR2;计算算R2平平方MOVB,AAMULABXCHA,RR3;暂存存部分积积,并换换出R22和R33XCHA,BBXCHA,RR2MULAB;计算算2R2R3CLRCRLCAXCHA,BBRLCAJNCMU220INCR2;累加加溢出量量M

12、U20:XCHHA,BB;累加加部分积积ADDA,RR4MOVR4,AMOVA,RR3ADDCCA,BBMOVR3,ACLRAADDCCA,RR2MOVR2,ARET () 标号: 功能能:双字字节二进进制无符符号数除除法入口条件:被除数数在R22、R33、R44、R55中,除除数在RR6、RR7中。出口信息:OV=0 时时,双字字节商在在R2、RR3中,OOV=11 时溢溢出。影响资源:PSWW、A、BB、R11R77 堆栈栈需求: 字节DIVD:CLRRC;比较较被除数数和除数数MOVA,RR3SUBBBA,RR7MOVA,RR2SUBBBA,RR6JCDDVD11SETBBOV;溢出出R

13、ETDVD1:MOVVB,#10HH;计算算双字节节商DVD2:CLRRC;部分分商和余余数同时时左移一一位MOVA,RR5RLCAMOVR5,AMOVA,RR4RLCAMOVR4,AMOVA,RR3RLCAMOVR3,AXCHA,RR2RLCAXCHA,RR2MOVF0,C;保存存溢出位位CLRCSUBBBA,RR7;计算算(R22R3R6RR7)MOVR1,AMOVA,RR2SUBBBA,RR6ANLC,/F0;结果果判断JCDDVD33MOVR2,A;够减减,存放放新的余余数MOVA,RR1MOVR3,AINCR5;商的的低位置置一DVD3:DJNNZB,DDVD22;计算算完十六六位商

14、(RR4R55)MOVA,RR4;将商商移到RR2R33中MOVR2,AMOVA,RR5MOVR3,ACLROV;设立立成功标标志RET () 标号: 功能:双字节节二进制制无符号号数除以以单字节节二进制制数入口条件:被除数数在R44、R55中,除除数在RR7中。出口信息:OV=0 时时,单字字节商在在R3中中,OVV=1 时溢出出。影响资源:PSWW、A、RR3RR7 堆堆栈需求求: 字节节D457:CLRRCMOVA,RR4SUBBBA,RR7JCDDV500SETBBOV;商溢溢出RETDV50:MOVVR6,#8;求平平均值(RR4R55R77R3)DV51:MOVVA,RR5RLCA

15、MOVR5,AMOVA,RR4RLCAMOVR4,AMOVF0,CCLRCSUBBBA,RR7ANLC,/F0JCDDV522MOVR4,ADV52:CPLLCMOVA,RR3RLCAMOVR3,ADJNZZR6,DV551MOVA,RR4;四舍舍五入ADDA,RR4JCDDV533SUBBBA,RR7JCDDV544DV53:INCCR3DV54:CLRROVRET () 标号: 功能能:三字字节二进进制无符符号数除除以单字字节二进进制数入口条件:被除数数在R33、R44、R55中,除除数在RR7中。出口信息:OV=0 时时,双字字节商在在R4、RR5中,OOV=11 时溢溢出。影响资源:P

16、SWW、A、BB、R22R77 堆栈栈需求: 字节DV31:CLRRCMOVA,RR3SUBBBA,RR7JCDDV300SETBBOV;商溢溢出RETDV30:MOVVR2,#100H;求RR3R44R5R7R4RR5DM23:CLRRCMOVA,RR5RLCAMOVR5,AMOVA,RR4RLCAMOVR4,AMOVA,RR3RLCAMOVR3,AMOVF0,CCLRCSUBBBA,RR7ANLC,/F0JCDDM244MOVR3,AINCR5DM24:DJNNZR2,DM223MOVA,RR3;四舍舍五入ADDA,RR3JCDDM255SUBBBA,RR7JCDDM266DM25:INC

17、CR5MOVA,RR5JNZDM226INCR4DM26:CLRROVRET ;商在在R4RR5中 () 标号号: 功能能:双字字节二进进制有符符号数乘乘法(补补码)入口条件:被乘数数在R22、R33中,乘乘数在RR6、RR7中。出口信息:乘积在在R2、RR3、RR4、RR5中。影响资源:PSWW、A、BB、R22R77 堆栈栈需求: 字节MULS:MOVVR4,#0;清零零R4RR5MOVR5,#0LCALLLMDSS;计算算结果的的符号和和两个操操作数的的绝对值值LCALLLMULLD;计算算两个绝绝对值的的乘积SJMPPMDSSE;用补补码表示示结果 () 标号号: 功功能:双双字节二二

18、进制有有符号数数除法(补补码)入口条件:被除数数在R22、R33、R44、R55中,除除数在RR6、RR7中。出口信息:OV=0时商商在R22、R33中,OOV=11时溢出出。影响资源:PSWW、A、BB、R11R77 堆栈栈需求: 字节DIVS:LCAALLMDSS;计算算结果的的符号和和两个操操作数的的绝对值值PUSHHPSWW;保存存结果的的符号LCALLLDIVVD;计算算两个绝绝对值的的商JNBOV,DVSS1;溢出出否?POPACCC;溢出出,放去去结果的的符号,保保留溢出出标志RETDVS1:POPPPSWW;未溢溢出,取取出结果果的符号号MOVR4,#0MOVR5,#0MDSE

19、:JBF0,MDSS2;用补补码表示示结果CLROV;结果果为正,原原码即补补码,计计算成功功RETMDS:CLRRF0;结果果符号初初始化MOVA,RR6;判断断第二操操作数的的符号JNBACCC.7,MDSS1;为为正,不不必处理理CPLF0;为负负,结果果符号取取反XCHA,RR7;第二二操作数数取补,得得到其绝绝对值CPLAADDA,#1XCHA,RR7CPLAADDCCA,#0MOVR6,AMDS1:MOVVA,RR2;判断断第一操操作数或或运算结结果的符符号JNBACCC.7,MDSS3;为为正,不不必处理理CPLF0;为负负,结果果符号取取反MDS2:MOVVA,RR5;求第第一

20、操作作数的绝绝对值或或运算结结果的补补码CPLAADDA,#1MOVR5,AMOVA,RR4CPLAADDCCA,#0MOVR4,AMOVA,RR3CPLAADDCCA,#0MOVR3,AMOVA,RR2CPLAADDCCA,#0MOVR2,AMDS3:CLRROV;运算算成功RET () 标号号: 功能能:双字字节二进进制无符符号数开开平方(快快速)入口条件:被开方方数在RR2、RR3中。出口信息:平方根根仍在RR2、RR3中,整整数部分分的位数数为原数数的一半半,其余余为小数数。影响资源:PSWW、A、BB、R22R77 堆栈栈需求: 字节SH2:MOVVA,RR2ORLA,RR3JNZS

21、H220RET;被开开方数为为零,不不必运算算SH20:MOVVR7,#0;左规规次数初初始化MOVA,RR2SH22:ANLLA,#0C00H;被开开方数高高字节小小于否?JNZSQRRH;不小小于,左左规格化化完成,转转开方过过程CLRC;每左左规一次次,被开开方数左左移两位位MOVA,RR3RLCAMOVF0,CCLRCRLCAMOVR3,AMOVA,RR2MOVACCC.7,CMOVC,FF0RLCARLCAMOVR2,AINCR7;左规规次数加加一SJMPPSH222;继续续左规 () 标号号: 功能能:四字字节二进进制无符符号数开开平方(快快速)入口条件:被开方方数在RR2、RR3

22、、RR4、RR5中。出口信息:平方根根在R22、R33中,整整数部分分的位数数为原数数的一半半,其余余为小数数。影响资源:PSWW、A、BB、R22R77 堆栈栈需求: 字节SH4:MOVVA,RR2ORLA,RR3ORLA,RR4ORLA,RR5JNZSH440RET;被开开方数为为零,不不必运算算SH40:MOVVR7,#0;左规规次数初初始化MOVA,RR2SH41:ANLLA,#0C00H;被开开方数高高字节小小于否?JNZSQRRH;不小小于,左左规格化化完成MOVR6,#2;每左左规一次次,被开开方数左左移两位位SH42:CLRRC;被开开方数左左移一位位MOVA,RR5RLCAM

23、OVR5,AMOVA,RR4RLCAMOVR4,AMOVA,RR3RLCAMOVR3,AMOVA,RR2RLCAMOVR2,ADJNZZR6,SH442;被开开方数左左移完两两位INCR7;左规规次数加加一SJMPPSH441;继续续左规SQRH:MOVVA,RR2 ;规格化化后高字字节按折折线法分分为三个个区间ADDA,#57HHJCSSQR22ADDA,#45HHJCSSQR11ADDA,#24HHMOVB,#0E33H;第一一区间的的斜率MOVR4,#800H;第一一区间的的平方根根基数SJMPPSQRR3SQR1:MOVVB,#0B22H;第二二区间的的斜率MOVR4,#0AA0H;第

24、二区区间的平平方根基基数SJMPPSQRR3SQR2:MOVVB,#8DHH;第三三区间的的斜率MOVR4,#0DD0H;第三区区间的平平方根基基数SQR3:MULLAB;与区区间基点点的偏移移量乘区区间斜率率MOVA,BBADDA,RR4;累加加到平方方根的基基数上MOVR4,AMOVB,AAMULAB;求当当前平方方根的幂幂XCHA,RR3;求偏偏移量(存存放在RR2R33中)CLRCSUBBBA,RR3MOVR3,AMOVA,RR2SUBBBA,BBMOVR2,ASQR4:SETTBC;用减减奇数法法校正一一个字节节的平方方根MOVA,RR4;当前前平方根根的两倍倍加一存存入R55R6中

25、中RLCAMOVR6,ACLRARLCAMOVR5,AMOVA,RR3;偏移移量小于于该奇数数否?SUBBBA,RR6MOVB,AAMOVA,RR2SUBBBA,RR5JCSSQR55;小于于,校正正结束,已已达到一一个字节节的精度度INCR4;不小小于,平平方根加加一MOVR2,A;保存存新的偏偏移量MOVR3,BSJMPPSQRR4;继续续校正SQR5:MOVVA,RR4;将一一个字节节精度的的根存入入R2XCHA,RR2RRCAMOVF0,C;保存存最终偏偏移量的的最高位位MOVA,RR3MOVR5,A;将最最终偏移移量的低低八位存存入R55中MOVR4,#8;通过过(R55R6R2)求

26、求根的低低字节SQR6:CLRRCMOVA,RR3RLCAMOVR3,ACLRCMOVA,R55SUBBBA,RR2JBFF0,SSQR77JCSSQR88SQR7:MOVVR5,AINCR3SQR8:CLRRCMOVA,RR5RLCAMOVR5,AMOVF0,CDJNZZR4,SQRR6;根的的第二字字节计算算完,在在R3中中MOVA,RR7;取原原被开方方数的左左规次数数JZSSQREE;未左左规,开开方结束束SQR9:CLRRC;按左左规次数数右移平平方根,得得到实际际根MOVA,RR2RRCAMOVR2,AMOVA,RR3RRCAMOVR3,ADJNZZR7,SQRR9SQRE:RET

27、T () 标号号: 功能:单字节节十六进进制数转转换成双双字节AASCIII码入口条件:待转换换的单字字节十六六进制数数在累加加器A中中。出口信息:高四位位的ASSCIII码在AA中,低低四位的的ASCCII码码在B中中。影响资源:PSWW、A、BB 堆栈栈需求: 字节HASC:MOVVB,AA;暂存存待转换换的单字字节十六六进制数数LCALLLHASS1;转换换低四位位XCHA,BB;存放放低四位位的ASSCIII码SWAPPA;准备备转换高高四位HAS1:ANLLA,#0FHH;将累累加器的的低四位位转换成成ASCCII码码ADDA,#90HHDAAAADDCCA,#40HHDAAARET

28、 () 标号号: 功功能:AASCIII码转转换成十十六进制制数入口条件:待转换换的ASSCIII码(330H39HH或411H446H)在在A中。出口信息:转换后后的十六六进制数数(000H00FH)仍仍在累加加器A中中。影响资源:PSWW、A 堆栈需需求: 字字节ASCH:CLRRCSUBBBA,#30HHJNBACCC.4,ASHH1SUBBBA,#7ASH1:RETT () 标号号: 功能能:单字字节十六六进制整整数转换换成单字字节码整整数入口条件:待转换换的单字字节十六六进制整整数在累累加器AA中。出口信息:转换后后的码整整数(十十位和个个位)仍仍在累加加器A中中,百位位在R33中。

29、影响资源:PSWW、A、BB、R33 堆栈栈需求: 字节HBCD:MOVVB,#1000;分离离出百位位,存放放在R33中DIVABMOVR3,AMOVA,#10;余数数继续分分离十位位和个位位XCHA,BBDIVABSWAPPAORLA,BB;将十十位和个个位拼装装成码RET () 标号号: 功功能:双双字节十十六进制制整数转转换成双双字节码码整数入口条件:待转换换的双字字节十六六进制整整数在RR6、RR7中。出口信息:转换后后的三字字节码整整数在RR3、RR4、RR5中。影响资源:PSWW、A、RR2RR7 堆堆栈需求求: 字节节HB2:CLRRA;码初初始化MOVR3,AMOVR4,AM

30、OVR5,AMOVR2,#100H;转换换双字节节十六进进制整数数HB3:MOVVA,RR7;从高高端移出出待转换换数的一一位到CCY中RLCAMOVR7,AMOVA,RR6RLCAMOVR6,AMOVA,RR5;码带带进位自自身相加加,相当当于乘ADDCCA,RR5DAAA;十进进制调整整MOVR5,AMOVA,RR4ADDCCA,RR4DAAAMOVR4,AMOVA,RR3ADDCCA,RR3MOVR3,A;双字字节十六六进制数数的万位位数不超超过,不不用调整整DJNZZR2,HB33;处理理完RET () 标号号: 功功能:单单字节十十六进制制小数转转换成单单字节码码小数入口条件:待转换

31、换的单字字节十六六进制小小数在累累加器AA中。出口信息:CY=0时转转换后的的码小数数仍在AA中。CCY=11时原小小数接近近整数。影响资源:PSWW、A、BB 堆栈栈需求: 字节HBD:MOVVB,#1000;原小小数扩大大一百倍倍MULABRLCA;余数数部分四四舍五入入CLRAADDCCA,BBMOVB,#10;分离离出十分分位和百百分位DIVABSWAPPAADDA,BB;拼装装成单字字节码小小数DAAA;调整整后若有有进位,原原小数接接近整数数RET () 标号: 功能能:双字字节十六六进制小小数转换换成双字字节码小小数入口条件:待转换换的双字字节十六六进制小小数在RR2、RR3中。

32、出口信息:转换后后的双字字节码小小数仍在在R2、RR3中。影响资源:PSWW、A、BB、R22、R33、R44、R55 堆栈栈需求: 字节HBD2:MOVVR4,#4;四位位十进制制码HBD3:MOVVA,RR3;原小小数扩大大十倍MOVB,#10MULABMOVR3,AMOVR5,BMOVA,RR2MOVB,#10MULABADDA,RR5MOVR2,ACLRAADDCCA,BBPUSHHACCC;保存存溢出的的一位十十进制码码DJNZZR4,HBDD3;计算算完四位位十进制制码POPACCC;取出出万分位位MOVR3,APOPACCC;取出出千分位位SWAPPAORLA,RR3;拼装装成低

33、字字节码小小数MOVR3,APOPACCC;取出出百分位位MOVR2,APOPACCC;取出出十分位位SWAPPAORLA,RR2;拼装装成高字字节码小小数MOVR2,ARET ()标标号: 功能能:单字字节码整整数转换换成单字字节十六六进制整整数入口条件:待转换换的单字字节码整整数在累累加器AA中。出口信息:转换后后的单字字节十六六进制整整数仍在在累加器器A中。影响资源:PSWW、A、BB、R44 堆栈栈需求: 字节BCDH:MOVVB,#10HH;分离离十位和和个位DIVABMOVR4,B;暂存存个位MOVB,#10;将十十位转换换成十六六进制MULABADDA,RR4;按十十六进制制加上

34、个个位RET ()标标号: 功能能:双字字节码整整数转换换成双字字节十六六进制整整数入口条件:待转换换的双字字节码整整数在RR2、RR3中。出口信息:转换后后的双字字节十六六进制整整数仍在在R2、RR3中。影响资源:PSWW、A、BB、R22、R33、R44 堆栈栈需求: 字节BH2:MOVVA,RR3;将低低字节转转换成十十六进制制LCALLLBCDDHMOVR3,AMOVA,RR2;将高高字节转转换成十十六进制制LCALLLBCDDHMOVB,#1000;扩大大一百倍倍MULABADDA,RR3;和低低字节按按十六进进制相加加MOVR3,ACLRAADDCCA,BBMOVR2,ARET (

35、)标标号: 功能能:单字字节码小小数转换换成单字字节十六六进制小小数入口条件:待转换换的单字字节码数数在累加加器A中中。出口信息:转换后后的单字字节十六六进制小小数仍在在累加器器A中。影响资源:PSWW、A、RR2、RR3 堆堆栈需求求: 字节节BHD:MOVVR2,#8;准备备计算一一个字节节小数BHD0:ADDDA,AACC;按十十进制倍倍增DAAAXCHA,RR3RLCA;将进进位标志志移入结结果中XCHA,RR3DJNZZR2,BHDD0;共计计算小小数ADDA,#0B00H;剩余余部分达达到否否?JNCBHDD1;四舍舍INCR3;五入入BHD1:MOVVA,RR3;取结结果RET

36、()标标号: 功能:双字节节码小数数转换成成双字节节十六进进制小数数入口条件:待转换换的双字字节码小小数在RR4、RR5中。出口信息:转换后后的双字字节十六六进制小小数在RR2、RR3中。*影响资源:PSWW、A、RR2RR6 堆堆栈需求求: 字节节BHD2:MOVVR6,#100H;准备备计算两两个字节节小数BHD3:MOVVA,RR5;按十十进制倍倍增ADDA,RR5DAAAMOVR5,AMOVA,RR4ADDCCA,RR4DAAAMOVR4,AMOVA,RR3;将进进位标志志移入结结果中RLCAMOVR3,AMOVA,RR2RLCAMOVR2,ADJNZZR6,BHDD3;共计计算小数M

37、OVA,RR4ADDA,#0B00H;剩余余部分达达到否否?JNCBHDD4;四舍舍INCR3;五入入MOVA,RR3JNZBHDD4INCR2BHD4:RETT () 标号号: 功能:求单字字节十六六进制无无符号数数据块的的极值入口条件:数据块块的首址址在DPPTR中中,数据据个数在在R7中中。出口信息:最大值值在R66中,地地址在RR2R33中;最最小值在在R7中中,地址址在R44R5中中。影响资源:PSWW、A、BB、R11R77 堆栈需需求: 字字节MM:MMOVB,RR7;保存存数据个个数MOVXXA,DPTTR;读取取第一个个数据MOVR6,A;作为为最大值值的初始始值MOVR7,

38、A;也作作为最小小值的初初始值MOVA,DDPL;取第第一个数数据的地地址MOVR3,A;作为为最大值值存放地地址的初初始值MOVR5,A;也作作为最小小值存放放地址的的初始值值MOVA,DDPHMOVR2,AMOVR4,AMOVA,BB;取数数据个数数DECA;减一一,得到到需要比比较的次次数JZMMME;只有有一个数数据,不不需要比比较MOVR1,A;保存存比较次次数PUSHHDPLL;保护护数据块块的首址址PUSHHDPHHMM1:INCCDPTTR;指向向一个新新的数据据MOVXXA,DPTTR;读取取这个数数据MOVB,AA;保存存SETBBC;与最最大值比比较SUBBBA,RR6J

39、CMMM2;不超超过当前前最大值值,保持持当前最最大值MOVR6,B;超过过当前最最大值,更更新最大大值存放放地址MOVR2,DPHH;同时时更新最最大值存存放地址址MOVR3,DPLLSJMPPMM33MM2:MOVVA,BB;与最最小值比比较CLRCSUBBBA,RR7JNCMM33;大于于或等于于当前最最小值,保保持当前前最小值值MOVR7,B;更新新最小值值MOVR4,DPHH;更新新最小值值存放地地址MOVR5,DPLLMM3:DJNNZR1,MM11;处理理完全部部数据POPDPHH;恢复复数据首首址POPDPLLMME:RETT () 标号号: 功能能:求单单字节十十六进制制有符

40、号号数据块块的极值值入口条件:数据块块的首址址在DPPTR中中,数据据个数在在R7中中。出口信息:最大值值在R66中, 地址在在R2RR3中;最小值值在R77中,地地址在RR4R55中。影响资源:PSWW、A、BB、R11R77 堆栈栈需求: 字节MMS:MOVVB,RR7;保存存数据个个数MOVXXA,DPTTR;读取取第一个个数据MOVR6,A;作为为最大值值的初始始值MOVR7,A;也作作为最小小值的初初始值MOVA,DDPL;取第第一个数数据的地地址MOVR3,A;作为为最大值值存放地地址的初初始值MOVR5,A;也作作为最小小值存放放地址的的初始值值MOVA,DDPHMOVR2,AM

41、OVR4,AMOVA,BB;取数数据个数数DECA;减一一,得到到需要比比较的次次数JZMMMSEE;只有有一个数数据,不不需要比比较MOVR1,A;保存存比较次次数PUSHHDPLL;保护护数据块块的首址址PUSHHDPHHMMS1:INCCDPTTR;调整整数据指指针MOVXXA,DPTTR;读取取一个数数据MOVB,AA;保存存SETBBC;与最最大值比比较SUBBBA,RR6JZMMMS44;相同同,不更更新最大大值JNBOV,MMSS2;差未未溢出,符符号位有有效CPLACCC.7;差溢溢出,符符号位取取反MMS2:JBACCC.7,MMSS4;差差为负,不不更新最最大值MOVR6,

42、B;更新新最大值值MOVR2,DPHH;更新新最大值值存放地地址MOVR3,DPLLSJMPPMMSS7MMS4:MOVVA,BB;与最最小值比比较CLRCSUBBBA,RR7JNBOV,MMSS6;差未未溢出,符符号位有有效CPLACCC.7;差溢溢出,符符号位取取反MMS6:JNBBACCC.7,MMSS7;差差为正,不不更新最最小值MOVR7,B;更新新最小值值MOVR4,DPHH;更新新最小值值存放地地址MOVR5,DPLLMMS7:DJNNZR1,MMSS1;处理理完全部部数据POPDPHH;恢复复数据首首址POPDPLLMMSE:RETT () 标号号: 功功能:顺顺序查找找()单

43、单字节表表格入口条件:待查找找的内容容在A中中,表格格首址在在DPTTR中,表表格的字字节数在在R7中中。出口信息:OV=0时,顺顺序号在在累加器器A中;OV=1时,未未找到。影响资源:PSWW、A、BB、R22、R66 堆栈需需求: 字字节FDS1:MOVVB,AA;保存存待查找找的内容容MOVR2,#0;顺序序号初始始化(指指向表首首)MOVA,RR7;保存存表格的的长度MOVR6,AFD11:MOVVA,RR2;按顺顺序号读读取表格格内容MOVCCA,A+DDPTRRCJNEEA,BB,FDD12;与待查查找的内内容比较较CLROV;相同同,查找找成功MOVA,RR2;取对对应的顺顺序号

44、RETFD12:INCCR2;指向向表格中中的下一一个内容容DJNZZR6,FD111;查完完全部表表格内容容SETBBOV;未查查找到,失失败RET () 标号号: 功功能:顺顺序查找找()双双字节表表格入口条件:查找内内容在RR4、RR5中,表表格首址址在DPPTR中中,数据据总个数数在R77中。出口信息:OV=0时顺顺序号在在累加器器A中,地地址在DDPTRR中;OOV=11时未找找到。影响资源:PSWW、A、RR2、RR6、DDPTRR 堆栈栈需求: 字节FDS2:MOVVA,RR7;保存存表格中中数据的的个数MOVR6,AMOVR2,#0;顺序序号初始始化(指指向表首首)FD21:C

45、LRRA;读取取表格内内容的高高字节MOVCCA,A+DDPTRRXRLA,RR4;与待待查找内内容的高高字节比比较JNZFD222MOVA,#1;读取取表格内内容的低低字节MOVCCA,A+DDPTRRXRLA,RR5;与待待查找内内容的低低字节比比较JNZFD222CLROV;相同同,查找找成功MOVA,RR2;取对对应的顺顺序号RET FD22:INCCDPTTR;指向向下一个个数据INCDPTTRINCR2;顺序序号加一一DJNZZR6,FD221;查完完全部数数据SETBBOV;未查查找到,失失败RET () 标号号: 功能能:对分分查找()单单字节无无符号增增序数据据表格入口条件:

46、待查找找的内容容在累加加器A中中,表格格首址在在DPTTR中,字字节数在在R7中中。出口信息:OV=0 时时,顺序序号在累累加器AA中;OOV=11 时,未未找到。影响资源:PSWW、A、BB、R22、R33、R44 堆栈需需求: 字字节FDD1:MOVVB,AA;保存存待查找找的内容容MOVR2,#0;区间间低端指指针初始始化(指指向第一一个数据据)MOVA,RR7DECAMOVR3,A;区间间高端指指针初始始化(指指向最后后一个数数据)FD61:CLRRC;判断断区间大大小MOVA,RR3SUBBBA,RR2JCFFD699;区间间消失,查查找失败败RRCA;取区区间大小小的一半半ADDA

47、,RR2;加上上区间的的低端MOVR4,A;得到到区间的的中心MOVCCA,A+DDPTRR;读取取该点的的内容CJNEEA,BB,FDD65;与待查查找的内内容比较较CLROV;相同同,查找找成功MOVA,RR4;取顺顺序号RET FD65:JCFD668;该点点的内容容比待查查找的内内容大否否?MOVA,RR4;偏大大,取该该点位置置DECA;减一一MOVR3,A;作为为新的区区间高端端SJMPPFD661;继续续查找FD68:MOVVA,RR4;偏小小,取该该点位置置INCA;加一一MOVR2,A;作为为新的区区间低端端SJMPPFD661;继续续查找FD69:SETTBOV;查找找失败RET () 标号号: 功能能:对分分查找()双双字节无无符号增增序数据据表格入口条件:查找内内容在RR4、RR5中,表表格首址址在DPPTR中中,数据据个数在在R7中中。出口信息:OV=0 时时顺序号号在累加加器A中中,址在在DPTTR中;OV=1 时时未找到到。影响资源:PSWW、A、BB、R11R77、DPPTR 堆栈需需求: 字字节FDD2:MOVVR2,#0;区间间低端指指针初始始化(指指向第一一个数据据)MOVA,RR7DECAMOVR3,A;区间间高端指指针初

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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