版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;将进进位标志志移入结结果
37、中XCHHA,RR3DJNNZR2,BHDD0;共计计算小小数ADDDA,#0B00H;剩余余部分达达到否否?JNCCBHDD1;四舍舍INCCR3;五入入BHD11:MOVVA,RR3;取结结果RETT ()标号号: 功功能:双双字节码码小数转转换成双双字节十十六进制制小数入口条件件:待转转换的双双字节码码小数在在R4、R5中中。出口信息息:转换换后的双双字节十十六进制制小数在在R2、R3中中。*影响资源源:PSSW、AA、R22R66 堆栈栈需求: 字节BHD22:MOVVR6,#100H;准备备计算两两个字节节小数BHD33:MOVVA,RR5;按十十进制倍倍增ADDDA,RR5DAAM
38、OVVR5,AMOVVA,RR4ADDDCA,RR4DAAMOVVR4,AMOVVA,RR3;将进进位标志志移入结结果中RLCCAMOVVR3,AMOVVA,RR2RLCCAMOVVR2,ADJNNZR6,BHDD3;共计计算小数MOVVA,RR4ADDDA,#0B00H;剩余余部分达达到否否?JNCCBHDD4;四舍舍INCCR3;五入入MOVVA,RR3JNZZBHDD4INCCR2BHD44:RETT () 标号: 功功能:求求单字节节十六进进制无符符号数据据块的极极值入口条件件:数据据块的首首址在DDPTRR中,数数据个数数在R77中。出口信息息:最大大值在RR6中,地址在在R2RR3
39、中;最小值值在R77中,地地址在RR4R55中。影响资源源:PSSW、AA、B、R1R7 堆堆栈需求求: 字节节MM:MOVVB,RR7;保存存数据个个数MOVVXA,DPTTR;读取取第一个个数据MOVVR6,A;作为为最大值值的初始始值MOVVR7,A;也作作为最小小值的初初始值MOVVA,DDPL;取第第一个数数据的地地址MOVVR3,A;作为为最大值值存放地地址的初初始值MOVVR5,A;也作作为最小小值存放放地址的的初始值值MOVVA,DDPHMOVVR2,AMOVVR4,AMOVVA,BB;取数数据个数数DECCA;减一一,得到到需要比比较的次次数JZMMEE;只有有一个数数据,不
40、不需要比比较MOVVR1,A;保存存比较次次数PUSSHDPLL;保护护数据块块的首址址PUSSHDPHHMM1:INCCDPTTR;指向向一个新新的数据据MOVVXA,DPTTR;读取取这个数数据MOVVB,AA;保存存SETTBC;与最最大值比比较SUBBBA,RR6JCMM22;不超超过当前前最大值值,保持持当前最最大值MOVVR6,B;超过过当前最最大值,更新最最大值存存放地址址MOVVR2,DPHH;同时时更新最最大值存存放地址址MOVVR3,DPLLSJMMPMM33MM2:MOVVA,BB;与最最小值比比较CLRRCSUBBBA,RR7JNCCMM33;大于于或等于于当前最最小值
41、,保持当当前最小小值MOVVR7,B;更新新最小值值MOVVR4,DPHH;更新新最小值值存放地地址MOVVR5,DPLLMM3:DJNNZR1,MM11;处理理完全部部数据POPPDPHH;恢复复数据首首址POPPDPLLMME:RETT () 标号: 功能:求单字字节十六六进制有有符号数数据块的的极值入口条件件:数据据块的首首址在DDPTRR中,数数据个数数在R77中。出口信息息:最大大值在RR6中, 地址址在R22R3中中;最小小值在RR7中,地址在在R4RR5中。影响资源源:PSSW、AA、B、R1R7 堆栈需需求: 字字节MMS:MOVVB,RR7;保存存数据个个数MOVVXA,DP
42、TTR;读取取第一个个数据MOVVR6,A;作为为最大值值的初始始值MOVVR7,A;也作作为最小小值的初初始值MOVVA,DDPL;取第第一个数数据的地地址MOVVR3,A;作为为最大值值存放地地址的初初始值MOVVR5,A;也作作为最小小值存放放地址的的初始值值MOVVA,DDPHMOVVR2,AMOVVR4,AMOVVA,BB;取数数据个数数DECCA;减一一,得到到需要比比较的次次数JZMMSSE;只有有一个数数据,不不需要比比较MOVVR1,A;保存存比较次次数PUSSHDPLL;保护护数据块块的首址址PUSSHDPHHMMS11:INCCDPTTR;调整整数据指指针MOVVXA,D
43、PTTR;读取取一个数数据MOVVB,AA;保存存SETTBC;与最最大值比比较SUBBBA,RR6JZMMSS4;相同同,不更更新最大大值JNBBOV,MMSS2;差未未溢出,符号位位有效CPLLACCC.7;差溢溢出,符符号位取取反MMS22:JBACCC.7,MMSS4;差差为负,不更新新最大值值MOVVR6,B;更新新最大值值MOVVR2,DPHH;更新新最大值值存放地地址MOVVR3,DPLLSJMMPMMSS7MMS44:MOVVA,BB;与最最小值比比较CLRRCSUBBBA,RR7JNBBOV,MMSS6;差未未溢出,符号位位有效CPLLACCC.7;差溢溢出,符符号位取取反M
44、MS66:JNBBACCC.7,MMSS7;差差为正,不更新新最小值值MOVVR7,B;更新新最小值值MOVVR4,DPHH;更新新最小值值存放地地址MOVVR5,DPLLMMS77:DJNNZR1,MMSS1;处理理完全部部数据POPPDPHH;恢复复数据首首址POPPDPLLMMSEE:RETT () 标号: 功能能:顺序序查找()单字字节表格格入口条件件:待查查找的内内容在AA中,表表格首址址在DPPTR中中,表格格的字节节数在RR7中。出口信息息:OVV=0时时,顺序序号在累累加器AA中;OOV=11时,未未找到。影响资源源:PSSW、AA、B、R2、R6 堆堆栈需求求: 字节节FDS
45、11:MOVVB,AA;保存存待查找找的内容容MOVVR2,#0;顺序序号初始始化(指指向表首首)MOVVA,RR7;保存存表格的的长度MOVVR6,AFD111:MOVVA,RR2;按顺顺序号读读取表格格内容MOVVCA,A+DDPTRRCJNNEA,BB,FDD12;与待查查找的内内容比较较CLRROV;相同同,查找找成功MOVVA,RR2;取对对应的顺顺序号RETTFD122:INCCR2;指向向表格中中的下一一个内容容DJNNZR6,FD111;查完完全部表表格内容容SETTBOV;未查查找到,失败RETT () 标号: 功能能:顺序序查找()双字字节表格格入口条件件:查找找内容在在R
46、4、R5中中,表格格首址在在DPTTR中,数据总总个数在在R7中中。出口信息息:OVV=0时时顺序号号在累加加器A中中,地址址在DPPTR中中;OVV=1时时未找到到。影响资源源:PSSW、AA、R22、R66、DPPTR 堆栈需需求: 字字节FDS22:MOVVA,RR7;保存存表格中中数据的的个数MOVVR6,AMOVVR2,#0;顺序序号初始始化(指指向表首首)FD211:CLRRA;读取取表格内内容的高高字节MOVVCA,A+DDPTRRXRLLA,RR4;与待待查找内内容的高高字节比比较JNZZFD222MOVVA,#1;读取取表格内内容的低低字节MOVVCA,A+DDPTRRXRL
47、LA,RR5;与待待查找内内容的低低字节比比较JNZZFD222CLRROV;相同同,查找找成功MOVVA,RR2;取对对应的顺顺序号RETT FD222:INCCDPTTR;指向向下一个个数据INCCDPTTRINCCR2;顺序序号加一一DJNNZR6,FD221;查完完全部数数据SETTBOV;未查查找到,失败RETT () 标号: 功能:对分查查找()单字节节无符号号增序数数据表格格入口条件件:待查查找的内内容在累累加器AA中,表表格首址址在DPPTR中中,字节节数在RR7中。出口信息息:OVV=0 时,顺顺序号在在累加器器A中;OV=1 时时,未找找到。影响资源源:PSSW、AA、B、
48、R2、R3、R4 堆堆栈需求求: 字节节FDD11:MOVVB,AA;保存存待查找找的内容容MOVVR2,#0;区间间低端指指针初始始化(指指向第一一个数据据)MOVVA,RR7DECCAMOVVR3,A;区间间高端指指针初始始化(指指向最后后一个数数据)FD611:CLRRC;判断断区间大大小MOVVA,RR3SUBBBA,RR2JCFD669;区间间消失,查找失失败RRCCA;取区区间大小小的一半半ADDDA,RR2;加上上区间的的低端MOVVR4,A;得到到区间的的中心MOVVCA,A+DDPTRR;读取取该点的的内容CJNNEA,BB,FDD65;与待查查找的内内容比较较CLRROV;
49、相同同,查找找成功MOVVA,RR4;取顺顺序号RETT FD655:JCFD668;该点点的内容容比待查查找的内内容大否否?MOVVA,RR4;偏大大,取该该点位置置DECCA;减一一MOVVR3,A;作为为新的区区间高端端SJMMPFD661;继续续查找FD688:MOVVA,RR4;偏小小,取该该点位置置INCCA;加一一MOVVR2,A;作为为新的区区间低端端SJMMPFD661;继续续查找FD699:SETTBOV;查找找失败RETT () 标号: 功能:对分查查找()双字节节无符号号增序数数据表格格入口条件件:查找找内容在在R4、R5中中,表格格首址在在DPTTR中,数据个个数在R
50、R7中。出口信息息:OVV=0 时顺序序号在累累加器AA中,址址在DPPTR中中;OVV=1 时未找找到。影响资源源:PSSW、AA、B、R1R7、DPTTR 堆堆栈需求求: 字节节FDD22:MOVVR2,#0;区间间低端指指针初始始化(指指向第一一个数据据)MOVVA,RR7DECCAMOVVR3,A;区间间高端指指针初始始化,指指向最后后一个数数据MOVVR6,DPHH;保存存表格首首址MOVVR7,DPLLFD811:CLRRC;判断断区间大大小MOVVA,RR3SUBBBA,RR2JCFD889;区间间消失,查找失失败RRCCA;取区区间大小小的一半半ADDDA,RR2;加上上区间的
51、的低端MOVVR1,A;得到到区间的的中心MOVVDPHH,R66CLRRC;计算算区间中中心的地地址RLCCAJNCCFD882INCCDPHHFD822:ADDDA,RR7MOVVDPLL,AJNCCFD883INCCDPHHFD833:CLRRA;读取取该点的的内容的的高字节节MOVVCA,A+DDPTRRMOVVB,RR4;与待待查找内内容的高高字节比比较CJNNEA,BB,FDD84;不相同同MOVVA,#1;读取取该点的的内容的的低字节节MOVVCA,A+DDPTRRMOVVB,RR5CJNNEA,BB,FDD84;与待查查找内容容的低字字节比较较MOVVA,RR1;取顺顺序号CL
52、RROV;查找找成功RETTFD844:JCFD886;该点点的内容容比待查查找的内内容大否否?MOVVA,RR1;偏大大,取该该点位置置DECCA;减一一MOVVR3,A;作为为新的区区间高端端SJMMPFD881;继续续查找FD866:MOVVA,RR1;偏小小,取该该点位置置INCCA;加一一MOVVR2,A;作为为新的区区间低端端SJMMPFD881;继续续查找FD899:MOVVDPHH,R66;相同同,恢复复首址MOVVDPLL,R77SETTBOV;查找找失败RETT () 标号: 功能能:求单单字节十十六进制制无符号号数据块块的平均均值入口条件件:数据据块的首首址在DDPTRR
53、中,数数据个数数在R77中。出口信息息:平均均值在累累加器AA中。影响资源源:PSSW、AA、R22R66 堆堆栈需求求: 字节节DDM11:MOVVA,RR7;保存存数据个个数MOVVR2,APUSSHDPHHPUSSHDPLLCLRRA;初始始化累加加和MOVVR4,AMOVVR5,ADM111:MOVVXA,DPTTR;读取取一个数数据ADDDA,RR5;累加加到累加加和中MOVVR5,AJNCCDM112INCCR4DM122:INCCDPTTR;调整整指针DJNNZR2,DM111;累加加完全部部数据LCAALLD4557;求平平均值(R4RR5RR7R3)MOVVA,RR3;取平平
54、均值POPPDPLLPOPPDPHHRETT () 标号: 功能能:求双双字节十十六进制制无符号号数据块块的平均均值入口条件件:数据据块的首首址在DDPTRR中,双双字节数数据总个个数在RR7中。出口信息息:平均均值在RR4、RR5中。影响资源源:PSSW、AA、R22R66 堆栈需需求: 字字节DDM22:MOVVA,RR7;保存存数据个个数MOVVR2,A;初始始化数据据指针PUSSHDPLL;保持持首址PUSSHDPHHCLRRA;初始始化累加加和MOVVR3,AMOVVR4,AMOVVR5,ADM200:MOVVXA,DPTTR;读取取一个数数据的高高字节MOVVB,AAINCCDPT
55、TRMOVVXA,DPTTR;读取取一个数数据的低低字节INCCDPTTRADDDA,RR5;累加加到累加加和中MOVVR5,AMOVVA,BBADDDCA,RR4MOVVR4,AJNCCDM221INCCR3DM211:DJNNZR2,DM220;累加加完全部部数据POPPDPHH;恢复复首址POPPDPLLLJMMPDV331;求RR3R44R5R7R4RR5,得得到平均均值 () 标号: 功能:求单字字节数据据块的(异或)校验和和入口条件件:数据据块的首首址在DDPTRR中,数数据的个个数在RR6、RR7中。出口信息息:校验验和在累累加器AA中。影响资源源:PSSW、AA、B、R4R7
56、堆栈栈需求: 字节XR1:MOVVR4,DPHH;保存存数据块块的首址址MOVVR5,DPLLMOVVA,RR7;双字字节计数数器调整整JZXR110INCCR6XR100:MOVVB,#0;校验验和初始始化XR111:MOVVXA,DPTTR;读取取一个数数据XRLLB,AA;异或或运算INCCDPTTR;指向向下一个个数据DJNNZR7,XR111;双字字节计数数器减一一DJNNZR6,XR111MOVVDPHH,R44;恢复复数据首首址MOVVDPLL,R55MOVVA,BB;取校校验和RETT () 标号: 功能:求双字字节数据据块的(异或)校验和和入口条件件:数据据块的首首址在DDP
57、TRR中,双双字节数数据总个个数在RR6、RR7中。出口信息息:校验验和在RR2、RR3中。影响资源源:PSSW、AA、R22R77 堆栈需需求: 字字节XR2:MOVVR4,DPHH;保存存数据块块的首址址MOVVR5,DPLLMOVVA,RR7;双字字节计数数器调整整JZXR220INCCR6XR200:CLRRA;校验验和初始始化MOVVR2,AMOVVR3,AXR211:MOVVXA,DPTTR;读取取一个数数据的高高字节XRLLA,RR2;异或或运算MOVVR2,AINCCDPTTRMOVVXA,DPTTR;读取取一个数数据的低低字节XRLLA,RR3;异或或运算MOVVR3,AIN
58、CCDPTTR;指向向下一个个数据DJNNZR7,XR221;双字字节计数数器减一一DJNNZR6,XR221MOVVDPHH,R44;恢复复数据首首址MOVVDPLL,R55RETT () 标号: 功能能:单字字节无符符号数据据块排序序(增序序)入口条件件:数据据块的首首址在RR0中,字节数数在R77中。出口信息息:完成成排序(增序)影响资源源:PSSW、AA、R22R66 堆栈需需求: 字字节SORTT:MOVVA,RR7MOVVR5,A;比较较次数初初始化SRT11:CLRRF0;交换换标志初初始化MOVVA,RR5;取上上遍比较较次数DECCA;本遍遍比上遍遍减少一一次MOVVR5,A
59、;保存存本遍次次数MOVVR2,A;复制制到计数数器中JZSRTT5;若为为零,排排序结束束MOVVA,RR0;保存存数据指指针MOVVR6,ASRT22:MOVVA,R0;读取取一个数数据MOVVR3,AINCCR0;指向向下一个个数据MOVVA,R0;再读读取一个个数据MOVVR4,ACLRRCSUBBBA,RR3;比较较两个数数据的大大小JNCCSRTT4;顺序序正确(增序或或相同),不必必交换SETTBF0;设立立交换标标志MOVVA,RR3;将两两个数据据交换位位置MOVVR00,ADECCR0MOVVA,RR4MOVVR00,AINCCR0;指向向下一个个数据SRT44:DJNNZ
60、R2,SRTT2;完成成本遍的的比较次次数MOVVA,RR6;恢复复数据首首址MOVVR0,AJBF0,SRTT1;本遍遍若进行行过交换换,则需需继续排排序SRT55:RETT;排序序结束ENDD (二) 浮浮点运算算子程序序库及其其使用说说明 本浮点点子程序序库有三三个不同同层次的的版本,以便适适应不同同的应用用场合: 小小型库(FQ551A.ASMM):只只包含浮浮点加、减、乘乘、除子子程序。 中中型库(FQ551B.ASMM):在在小型库库的基础础上再增增加绝对对值、倒倒数、比比较、平平方、开平方、数制转转换等子子程序。 大大型库(FQ551.AASM):包含含本说明明书中的的全部子子程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁排水设计与施工技术规范
- 城市临时供水施工方案与质量保证
- 高铁乘务服务标准及培训资料
- 企业内部审计实施方案及风险评估
- 户外徒步装备准备维护方案
- 2026年南阳农业职业学院单招职业适应性考试题库附答案详解(满分必刷)
- 2026年南京旅游职业学院单招综合素质考试题库及答案详解(易错题)
- 2026年南京科技职业学院单招职业适应性测试题库带答案详解(突破训练)
- 产品设计方案评审表功能需求覆盖版
- 客户服务标准化流程设计方案
- 2026年内蒙古商贸职业学院单招职业技能考试题库含答案详解(研优卷)
- 中级消防设施操作员新教材试题及答案
- 医院各种知情同意书(3篇)
- 节后复工安全教育课件
- 早产儿经口喂养共识解读
- 原料基础知识培训课件
- 无人机内部培训课件模板
- 集团纪检监察培训制度
- 绿电直连政策及新能源就近消纳项目电价机制分析
- 2026年CCNA认证考试模拟题库试卷
- 《中国养老金精算报告2025-2050》原文
评论
0/150
提交评论