《MCS-51单片机实用子程序库.docx》由会员分享,可在线阅读,更多相关《MCS-51单片机实用子程序库.docx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机实用子程序库(年版) 周 航 慈 目前已有若干版本的子程序库公开发表,它们各有特色。笔者在1988年也编制了两个子程序库库(定点点子程序序库和浮浮点子程程序库),并在在相容性性、透明明性、容容错性和和算法优优化方面作了一一些工作作。本程程序库中中的开平平方算法法为笔者者研究的的快速逼逼近算法法,它能能达到牛牛顿迭代法同样样的精度度,而速速度加快快二十倍倍左右,超过双双字节定定点除法法的速度度。经过过八年来来全国广大用户户的实际际使用,反馈了了不少信信息,陆陆续扩充充了一些些新的子子程序,纠正了了一些隐隐含错误,成为为现在这这个最新新版本。 本子程程序库对对单片片机应用用程序设设计技术术一
2、书书附录中中的子程程序库作作了重大大修订: ()按当前前流行的的以 IIBM PC 为主机机的开发发系统对对汇编语语言的规规定,将将原子程程序库的标号和和位地址址进行了了调整,读者不不必再进进行修改改,便可可直接使使用。 ()对浮点点运算子子程序库库进行了了进一步步的测试试和优化化,对十十进制浮浮点数和和二进制制浮点数的相相互转换换子程序序进行了了彻底改改写,提提高了运运算精度度和可靠靠性。 ()新增添添了若干干个浮点点子程序序(传送送、比较较、清零零、判零零等),使编写写数据处处理程序的工工作变得得更简单单直观。 在使用用说明中中开列了了最主要要的几项项:标号号、入口口条件、出口信信息、影影
3、响资源源、堆栈栈需求,各各项目的的意义请请参阅单片机机应用程程序设计计技术第六章章 6.3.77 节的的内容。程序清单中开开列了四四个栏目目:标号号、指令令、操作作数、注注释。为为方便读读者理解解,注释释尽力详详细。 子程序序库的使使用方法法如下: 将将子程序序库全部部内容链链接在应应用程序序之后,统一编编译即可可。优点点是简单单方便,缺点是程序序太长,大量无无关子程程序也包包含在其其中。 仅仅将子程程序库中中的有关关部分内内容链接接在应用用程序之之后,统统一编译译即可。有些子子程序需要调调用一些些低级子子程序,这些低低级子程程序也应应该包含含在内。优点是是程序紧紧凑,缺缺点是需要对子子程序库
4、库进行仔仔细删节节。 (一一) 定点运运算子程程序库及及其使用用说明 定点运运算子程程序库文文件名为为DQ551.AASM,为便于于使用,先将有有关约定定说明如如下: 多多字节定定点操作作数:用用R00或R1来表示示存放在在由R00或R11指示的的连续单单元中的的数据。地址址小的单单元存放放数据的的高字节节。例如如:RR0=12334566H,若若(R00)=330H,则(330H)=122H,(31HH)=334H,(322H)=56HH。 运运算精度度:单次次定点运运算精度度为结果果最低位位的当量量值。 工工作区:数据工工作区固固定在PPSW、A、BB、R22R77,用户户只要不不在工作作
5、区中存存放无关的或非非消耗性性的信息息,程序序就具有有较好的的透明性性。 () 标标号: 功能:多字节节码加法法入口条件件:字节节数在RR7中,被加数数在RR0中中,加数数在RR1中中。出口信息息:和在在R00中,最高位位进位在在CY中中。影响资源源:PSSW、AA、R22 堆栈栈需求: 字节BCDAA:MOVVA,RR7;取字字节数至至R2中中MOVVR2,AADDDA,RR0;初始始化数据据指针MOVVR0,AMOVVA,RR2ADDDA,RR1MOVVR1,ACLRRCBCD11:DECCR0;调整整数据指指针DECCR1MOVVA,R0ADDDCA,R1;按字字节相加加DAA;十进进制
6、调整整MOVVR00,A;和存存回RR0中中DJNNZR2,BCDD1;处理理完所有有字节RETT () 标标号: 功能:多字节节码减法法入口条件件:字节节数在RR7中,被减数数在RR0中中,减数数在RR1中中。出口信息息:差在在R00中,最高位位借位在在CY中中。影响资源源:PSSW、AA、R22、R33 堆栈栈需求: 字节BCDBB:LCAALLNEGG1;减数数R11十进进制取补补LCAALLBCDDA;按多多字节码码加法处处理CPLLC;将补补码加法法的进位位标志转转换成借借位标志志MOVVF0,C;保护护借位标标志LCAALLNEGG1;恢复复减数R1的原始始值MOVVC,FF0 ;
7、恢复借借位标志志RETTNEG11:MOVVA,RR0;RR1十十进制取取补子程程序入口口XCHHA,RR1;交换换指针XCHHA,RR0LCAALLNEGG;通过过R00实现现R11取补补MOVVA,RR0XCHHA,RR1;换回回指针XCHHA,RR0RETT () 标标号: 功功能:多多字节码码取补入口条件件:字节节数在RR7中,操作数数在RR0中中。出口信息息:结果果仍在R0中。影响资源源:PSSW、AA、R22、R33 堆栈栈需求: 字节NEG:MOVVA,RR7;取(字节数数减一)至R22中DECCAMOVVR2,AMOVVA,RR0;保护护指针MOVVR3,ANEG00:CLRR
8、CMOVVA,#99HHSUBBBA,R0;按字字节十进进制取补补MOVVR00,A;存回回R00中INCCR0;调整整数据指指针DJNNZR2,NEGG0;处理理完(RR2)字字节MOVVA,#9AHH;最低低字节单单独取补补SUBBBA,R0MOVVR00,AMOVVA,RR3;恢复复指针MOVVR0,ARETT () 标标号: 功能:多字节节码左移移十进制制一位(乘十)入口条件件:字节节数在RR7中,操作数数在RR0中中。出口信息息:结果果仍在R0中,移移出的十十进制最最高位在在R3中中。影响资源源:PSSW、AA、R22、R33 堆栈栈需求: 字节BRLNN:MOVVA,RR7;取字字
9、节数至至R2中中 MOVVR2,AADDDA,RR0;初始始化数据据指针MOVVR0,AMOVVR3,#0;工作作单元初初始化BRL11:DECCR0;调整整数据指指针MOVVA,R0;取一一字节SWAAPA;交换换十进制制高低位位MOVVR00,A;存回回MOVVA,RR3;取低低字节移移出的十十进制高高位XCHHDA,R0;换出出本字节节的十进进制高位位MOVVR3,A;保存存本字节节的十进进制高位位DJNNZR2,BRLL1;处理理完所有有字节RETT () 标标号: 功功能:双双字节二二进制无无符号数数乘法入口条件件:被乘乘数在RR2、RR3中,乘数在在R6、R7中中。出口信息息:乘积
10、积在R22、R33、R44、R55中。影响资源源:PSSW、AA、B、R2R7 堆栈需需求: 字字节MULDD:MOVVA,RR3;计算算R3乘乘R7MOVVB,RR7MULLABMOVVR4,B;暂存存部分积积MOVVR5,AMOVVA,RR3;计算算R3乘乘R6MOVVB,RR6MULLABADDDA,RR4;累加加部分积积MOVVR4,ACLRRAADDDCA,BBMOVVR3,AMOVVA,RR2;计算算R2乘乘R7MOVVB,RR7MULLABADDDA,RR4;累加加部分积积MOVVR4,AMOVVA,RR3ADDDCA,BBMOVVR3,ACLRRARLCCAXCHHA,RR2;
11、计算算R2乘乘R6MOVVB,RR6MULLABADDDA,RR3;累加加部分积积MOVVR3,AMOVVA,RR2ADDDCA,BBMOVVR2,ARETT () 标标号: 功功能:双双字节二二进制无无符号数数平方入口条件件:待平平方数在在R2、R3中中。出口信息息:结果果在R22、R33、R44、R55中。影响资源源:PSSW、AA、B、R2R5 堆栈需需求: 字字节MUL22:MOVVA,RR3;计算算R3平平方MOVVB,AAMULLABMOVVR4,B;暂存存部分积积MOVVR5,AMOVVA,RR2;计算算R2平平方MOVVB,AAMULLABXCHHA,RR3;暂存存部分积积,并
12、换换出R22和R33XCHHA,BBXCHHA,RR2MULLAB;计算算2R2R3CLRRCRLCCAXCHHA,BBRLCCAJNCCMU220INCCR2;累加加溢出量量MU200:XCHHA,BB;累加加部分积积ADDDA,RR4MOVVR4,AMOVVA,RR3ADDDCA,BBMOVVR3,ACLRRAADDDCA,RR2MOVVR2,ARETT () 标标号: 功能:双字节节二进制制无符号号数除法法入口条件件:被除除数在RR2、RR3、RR4、RR5中,除数在在R6、R7中中。出口信息息:OVV=0 时,双双字节商商在R22、R33中,OOV=11 时溢溢出。影响资源源:PSSW
13、、AA、B、R1R7 堆栈需需求: 字字节DIVDD:CLRRC;比较较被除数数和除数数MOVVA,RR3SUBBBA,RR7MOVVA,RR2SUBBBA,RR6JCDVDD1SETTBOV;溢出出RETTDVD11:MOVVB,#10HH;计算算双字节节商DVD22:CLRRC;部分分商和余余数同时时左移一一位MOVVA,RR5RLCCAMOVVR5,AMOVVA,RR4RLCCAMOVVR4,AMOVVA,RR3RLCCAMOVVR3,AXCHHA,RR2RLCCAXCHHA,RR2MOVVF0,C;保存存溢出位位CLRRCSUBBBA,RR7;计算算(R22R3R6RR7)MOVVR1
14、,AMOVVA,RR2SUBBBA,RR6ANLLC,/F0;结果果判断JCDVDD3MOVVR2,A;够减减,存放放新的余余数MOVVA,RR1MOVVR3,AINCCR5;商的的低位置置一DVD33:DJNNZB,DDVD22;计算算完十六六位商(R4RR5)MOVVA,RR4;将商商移到RR2R33中MOVVR2,AMOVVA,RR5MOVVR3,ACLRROV;设立立成功标标志RETT () 标标号: 功功能:双双字节二二进制无无符号数数除以单单字节二二进制数数入口条件件:被除除数在RR4、RR5中,除数在在R7中中。出口信息息:OVV=0 时,单单字节商商在R33中,OOV=11 时
15、溢溢出。影响资源源:PSSW、AA、R33R77 堆栈栈需求: 字节D4577:CLRRCMOVVA,RR4SUBBBA,RR7JCDV550SETTBOV;商溢溢出RETTDV500:MOVVR6,#8;求平平均值(R4RR5RR7R3)DV511:MOVVA,RR5RLCCAMOVVR5,AMOVVA,RR4RLCCAMOVVR4,AMOVVF0,CCLRRCSUBBBA,RR7ANLLC,/F0JCDV552MOVVR4,ADV522:CPLLCMOVVA,RR3RLCCAMOVVR3,ADJNNZR6,DV551MOVVA,RR4;四舍舍五入ADDDA,RR4JCDV553SUBBBA
16、,RR7JCDV554DV533:INCCR3DV544:CLRROVRETT () 标标号: 功能:三字节节二进制制无符号号数除以以单字节节二进制制数入口条件件:被除除数在RR3、RR4、RR5中,除数在在R7中中。出口信息息:OVV=0 时,双双字节商商在R44、R55中,OOV=11 时溢溢出。影响资源源:PSSW、AA、B、R2R7 堆栈需需求: 字字节DV311:CLRRCMOVVA,RR3SUBBBA,RR7JCDV330SETTBOV;商溢溢出RETTDV300:MOVVR2,#100H;求RR3R44R5R7R4RR5DM233:CLRRCMOVVA,RR5RLCCAMOVVR
17、5,AMOVVA,RR4RLCCAMOVVR4,AMOVVA,RR3RLCCAMOVVR3,AMOVVF0,CCLRRCSUBBBA,RR7ANLLC,/F0JCDM224MOVVR3,AINCCR5DM244:DJNNZR2,DM223MOVVA,RR3;四舍舍五入ADDDA,RR3JCDM225SUBBBA,RR7JCDM226DM255:INCCR5MOVVA,RR5JNZZDM226INCCR4DM266:CLRROVRETT ;商商在R44R5中中 () 标号: 功能:双字节节二进制制有符号号数乘法法(补码码)入口条件件:被乘乘数在RR2、RR3中,乘数在在R6、R7中中。出口信息息
18、:乘积积在R22、R33、R44、R55中。影响资源源:PSSW、AA、B、R2R7 堆栈需需求: 字字节MULSS:MOVVR4,#0;清零零R4RR5MOVVR5,#0LCAALLMDSS;计算算结果的的符号和和两个操操作数的的绝对值值LCAALLMULLD;计算算两个绝绝对值的的乘积SJMMPMDSSE;用补补码表示示结果 () 标号: 功能能:双字字节二进进制有符符号数除除法(补补码)入口条件件:被除除数在RR2、RR3、RR4、RR5中,除数在在R6、R7中中。出口信息息:OVV=0时时商在RR2、RR3中,OV=1时溢溢出。影响资源源:PSSW、AA、B、R1R7 堆栈需需求: 字
19、字节DIVSS:LCAALLMDSS;计算算结果的的符号和和两个操操作数的的绝对值值PUSSHPSWW;保存存结果的的符号LCAALLDIVVD;计算算两个绝绝对值的的商JNBBOV,DVSS1;溢出出否?POPPACCC;溢出出,放去去结果的的符号,保留溢溢出标志志RETTDVS11:POPPPSWW;未溢溢出,取取出结果果的符号号MOVVR4,#0MOVVR5,#0MDSEE:JBF0,MDSS2;用补补码表示示结果CLRROV;结果果为正,原码即即补码,计算成成功RETTMDS:CLRRF0;结果果符号初初始化MOVVA,RR6;判断断第二操操作数的的符号JNBBACCC.7,MDSS1
20、;为为正,不不必处理理CPLLF0;为负负,结果果符号取取反XCHHA,RR7;第二二操作数数取补,得到其其绝对值值CPLLAADDDA,#1XCHHA,RR7CPLLAADDDCA,#0MOVVR6,AMDS11:MOVVA,RR2;判断断第一操操作数或或运算结结果的符符号JNBBACCC.7,MDSS3;为为正,不不必处理理CPLLF0;为负负,结果果符号取取反MDS22:MOVVA,RR5;求第第一操作作数的绝绝对值或或运算结结果的补补码CPLLAADDDA,#1MOVVR5,AMOVVA,RR4CPLLAADDDCA,#0MOVVR4,AMOVVA,RR3CPLLAADDDCA,#0M
21、OVVR3,AMOVVA,RR2CPLLAADDDCA,#0MOVVR2,AMDS33:CLRROV;运算算成功RETT () 标号: 功能:双字节节二进制制无符号号数开平平方(快快速)入口条件件:被开开方数在在R2、R3中中。出口信息息:平方方根仍在在R2、R3中中,整数数部分的的位数为为原数的的一半,其余为为小数。影响资源源:PSSW、AA、B、R2R7 堆栈需需求: 字字节SH2:MOVVA,RR2ORLLA,RR3JNZZSH220RETT;被开开方数为为零,不不必运算算SH200:MOVVR7,#0;左规规次数初初始化MOVVA,RR2SH222:ANLLA,#0C00H;被开开方数
22、高高字节小小于否?JNZZSQRRH;不小小于,左左规格化化完成,转开方方过程CLRRC;每左左规一次次,被开开方数左左移两位位MOVVA,RR3RLCCAMOVVF0,CCLRRCRLCCAMOVVR3,AMOVVA,RR2MOVVACCC.7,CMOVVC,FF0RLCCARLCCAMOVVR2,AINCCR7;左规规次数加加一SJMMPSH222;继续续左规 () 标号: 功能:四字节节二进制制无符号号数开平平方(快快速)入口条件件:被开开方数在在R2、R3、R4、R5中中。出口信息息:平方方根在RR2、RR3中,整数部部分的位位数为原原数的一一半,其其余为小小数。影响资源源:PSSW、
23、AA、B、R2R7 堆栈需需求: 字字节SH4:MOVVA,RR2ORLLA,RR3ORLLA,RR4ORLLA,RR5JNZZSH440RETT;被开开方数为为零,不不必运算算SH400:MOVVR7,#0;左规规次数初初始化MOVVA,RR2SH411:ANLLA,#0C00H;被开开方数高高字节小小于否?JNZZSQRRH;不小小于,左左规格化化完成MOVVR6,#2;每左左规一次次,被开开方数左左移两位位SH422:CLRRC;被开开方数左左移一位位MOVVA,RR5RLCCAMOVVR5,AMOVVA,RR4RLCCAMOVVR4,AMOVVA,RR3RLCCAMOVVR3,AMOV
24、VA,RR2RLCCAMOVVR2,ADJNNZR6,SH442;被开开方数左左移完两两位INCCR7;左规规次数加加一SJMMPSH441;继续续左规SQRHH:MOVVA,RR2 ;规格化化后高字字节按折折线法分分为三个个区间ADDDA,#57HHJCSQRR2ADDDA,#45HHJCSQRR1ADDDA,#24HHMOVVB,#0E33H;第一一区间的的斜率MOVVR4,#800H;第一一区间的的平方根根基数SJMMPSQRR3SQR11:MOVVB,#0B22H;第二二区间的的斜率MOVVR4,#0AA0H;第二区区间的平平方根基基数SJMMPSQRR3SQR22:MOVVB,#8D
25、HH;第三三区间的的斜率MOVVR4,#0DD0H;第三区区间的平平方根基基数SQR33:MULLAB;与区区间基点点的偏移移量乘区区间斜率率MOVVA,BBADDDA,RR4;累加加到平方方根的基基数上MOVVR4,AMOVVB,AAMULLAB;求当当前平方方根的幂幂XCHHA,RR3;求偏偏移量(存放在在R2RR3中)CLRRCSUBBBA,RR3MOVVR3,AMOVVA,RR2SUBBBA,BBMOVVR2,ASQR44:SETTBC;用减减奇数法法校正一一个字节节的平方方根MOVVA,RR4;当前前平方根根的两倍倍加一存存入R55R6中中RLCCAMOVVR6,ACLRRARLCC
26、AMOVVR5,AMOVVA,RR3;偏移移量小于于该奇数数否?SUBBBA,RR6MOVVB,AAMOVVA,RR2SUBBBA,RR5JCSQRR5;小于于,校正正结束,已达到到一个字字节的精精度INCCR4;不小小于,平平方根加加一MOVVR2,A;保存存新的偏偏移量MOVVR3,BSJMMPSQRR4;继续续校正SQR55:MOVVA,RR4;将一一个字节节精度的的根存入入R2XCHHA,RR2RRCCAMOVVF0,C;保存存最终偏偏移量的的最高位位MOVVA,RR3MOVVR5,A;将最最终偏移移量的低低八位存存入R55中MOVVR4,#8;通过过(R55R6R2)求根的的低字节节
27、SQR66:CLRRCMOVVA,RR3RLCCAMOVVR3,ACLRRCMOVVA,R55SUBBBA,RR2JBF0,SQRR7JCSQRR8SQR77:MOVVR5,AINCCR3SQR88:CLRRCMOVVA,RR5RLCCAMOVVR5,AMOVVF0,CDJNNZR4,SQRR6;根的的第二字字节计算算完,在在R3中中MOVVA,RR7;取原原被开方方数的左左规次数数JZSQRRE;未左左规,开开方结束束SQR99:CLRRC;按左左规次数数右移平平方根,得到实实际根MOVVA,RR2RRCCAMOVVR2,AMOVVA,RR3RRCCAMOVVR3,ADJNNZR7,SQRR
28、9SQREE:RETT () 标号: 功功能:单单字节十十六进制制数转换换成双字字节ASSCIII码入口条件件:待转转换的单单字节十十六进制制数在累累加器AA中。出口信息息:高四四位的AASCIII码在在A中,低四位位的ASSCIII码在BB中。影响资源源:PSSW、AA、B 堆栈需需求: 字字节HASCC:MOVVB,AA;暂存存待转换换的单字字节十六六进制数数LCAALLHASS1;转换换低四位位XCHHA,BB;存放放低四位位的ASSCIII码SWAAPA;准备备转换高高四位HAS11:ANLLA,#0FHH;将累累加器的的低四位位转换成成ASCCII码码ADDDA,#90HHDAAAD
29、DDCA,#40HHDAARETT () 标号: 功能能:ASSCIII码转换换成十六六进制数数入口条件件:待转转换的AASCIII码(30HH399H或441H46HH)在AA中。出口信息息:转换换后的十十六进制制数(000H0FHH)仍在在累加器器A中。影响资源源:PSSW、AA 堆栈栈需求: 字节ASCHH:CLRRCSUBBBA,#30HHJNBBACCC.4,ASHH1SUBBBA,#7ASH11:RETT () 标号: 功能:单字节节十六进进制整数数转换成成单字节节码整数数入口条件件:待转转换的单单字节十十六进制制整数在在累加器器A中。出口信息息:转换换后的码码整数(十位和和个位)
30、仍在累累加器AA中,百百位在RR3中。影响资源源:PSSW、AA、B、R3 堆栈需需求: 字字节HBCDD:MOVVB,#1000;分离离出百位位,存放放在R33中DIVVABMOVVR3,AMOVVA,#10;余数数继续分分离十位位和个位位XCHHA,BBDIVVABSWAAPAORLLA,BB;将十十位和个个位拼装装成码RETT () 标号: 功能能:双字字节十六六进制整整数转换换成双字字节码整整数入口条件件:待转转换的双双字节十十六进制制整数在在R6、R7中中。出口信息息:转换换后的三三字节码码整数在在R3、R4、R5中中。影响资源源:PSSW、AA、R22R77 堆栈栈需求: 字节HB
31、2:CLRRA;码初初始化MOVVR3,AMOVVR4,AMOVVR5,AMOVVR2,#100H;转换换双字节节十六进进制整数数HB3:MOVVA,RR7;从高高端移出出待转换换数的一一位到CCY中RLCCAMOVVR7,AMOVVA,RR6RLCCAMOVVR6,AMOVVA,RR5;码带带进位自自身相加加,相当当于乘ADDDCA,RR5DAA;十进进制调整整MOVVR5,AMOVVA,RR4ADDDCA,RR4DAAMOVVR4,AMOVVA,RR3ADDDCA,RR3MOVVR3,A;双字字节十六六进制数数的万位位数不超超过,不用调调整DJNNZR2,HB33;处理理完RETT ()
32、标号: 功能能:单字字节十六六进制小小数转换换成单字字节码小小数入口条件件:待转转换的单单字节十十六进制制小数在在累加器器A中。出口信息息:CYY=0时时转换后后的码小小数仍在在A中。CY=1时原原小数接接近整数数。影响资源源:PSSW、AA、B 堆栈需需求: 字字节HBD:MOVVB,#1000;原小小数扩大大一百倍倍MULLABRLCCA;余数数部分四四舍五入入CLRRAADDDCA,BBMOVVB,#10;分离离出十分分位和百百分位DIVVABSWAAPAADDDA,BB;拼装装成单字字节码小小数DAA;调整整后若有有进位,原小数数接近整整数RETT () 标标号: 功能:双字节节十六进
33、进制小数数转换成成双字节节码小数数入口条件件:待转转换的双双字节十十六进制制小数在在R2、R3中中。出口信息息:转换换后的双双字节码码小数仍仍在R22、R33中。影响资源源:PSSW、AA、B、R2、R3、R4、R5 堆栈需需求: 字字节HBD22:MOVVR4,#4;四位位十进制制码HBD33:MOVVA,RR3;原小小数扩大大十倍MOVVB,#10MULLABMOVVR3,AMOVVR5,BMOVVA,RR2MOVVB,#10MULLABADDDA,RR5MOVVR2,ACLRRAADDDCA,BBPUSSHACCC;保存存溢出的的一位十十进制码码DJNNZR4,HBDD3;计算算完四位位
34、十进制制码POPPACCC;取出出万分位位MOVVR3,APOPPACCC;取出出千分位位SWAAPAORLLA,RR3;拼装装成低字字节码小小数MOVVR3,APOPPACCC;取出出百分位位MOVVR2,APOPPACCC;取出出十分位位SWAPPAORLLA,RR2;拼装装成高字字节码小小数MOVVR2,ARETT ()标号号: 功能:单字节节码整数数转换成成单字节节十六进进制整数数入口条件件:待转转换的单单字节码码整数在在累加器器A中。出口信息息:转换换后的单单字节十十六进制制整数仍仍在累加加器A中中。影响资源源:PSSW、AA、B、R4 堆栈需需求: 字字节BCDHH:MOVVB,#
35、10HH;分离离十位和和个位DIVVABMOVVR4,B;暂存存个位MOVVB,#10;将十十位转换换成十六六进制MULLABADDDA,RR4;按十十六进制制加上个个位RETT ()标号号: 功能:双字节节码整数数转换成成双字节节十六进进制整数数入口条件件:待转转换的双双字节码码整数在在R2、R3中中。出口信息息:转换换后的双双字节十十六进制制整数仍仍在R22、R33中。影响资源源:PSSW、AA、B、R2、R3、R4 堆栈需需求: 字字节BH2:MOVVA,RR3;将低低字节转转换成十十六进制制LCAALLBCDDHMOVVR3,AMOVVA,RR2;将高高字节转转换成十十六进制制LCAA
36、LLBCDDHMOVVB,#1000;扩大大一百倍倍MULLABADDDA,RR3;和低低字节按按十六进进制相加加MOVVR3,ACLRRAADDDCA,BBMOVVR2,ARETT ()标号号: 功能:单字节节码小数数转换成成单字节节十六进进制小数数入口条件件:待转转换的单单字节码码数在累累加器AA中。出口信息息:转换换后的单单字节十十六进制制小数仍仍在累加加器A中中。影响资源源:PSSW、AA、R22、R33 堆栈栈需求: 字节BHD:MOVVR2,#8;准备备计算一一个字节节小数BHD00:ADDDA,AACC;按十十进制倍倍增DAAXCHHA,RR3RLCCA;将进进位标志志移入结结果中XCHHA,RR3DJNNZR2,BHDD0;共计计算小小数ADDDA,#0B00H;剩余余部分达达到否否?JNCCBHDD1;四舍舍INCCR3;五入入BHD11:MOVVA,RR3;取结结果RETT ()标号号: 功功能:双双字节码码小数转转换成双双字节十十六进制制小数入口条件件:待转转换的双双字节码码小数在在R4、R5中中。出口信息息:转