版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MCS-51单片机实用子程序库(一)内容目前已有若干版本的子程序库公开发表,它们各有特色。本程序库中的开平方算法为快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。本子程序库对单片机应用程序设计技术一书附录中的子程序库作了重大修订:DDD按当前流行的以IBMPC为主机的开发系统对汇编语言的规定,读者不必再进行修改,便可直接使用。(皿对浮点运算子程序库进行了进一步的测试和优化,对十进制浮点数和二进制浮点数的相互转换子程序进行了彻底改写,提高了运算精度和可靠性。(叮新增添了若干个浮点子程序(传送、比较、清零、判零等),使编写数据处理程序的工作变得更简单直观
2、。在使用说明中开列了最主要的几项:标号、入口条件、出口信息、影响资源、堆栈需求,各项目的意义请参阅单片机应用程序设计技术第六章6.3.7节的内容。程序清单中开列了四个栏目:标号、指令、操作数、注释。为方便读者理解,注释尽力详细。子程序库的使用方法如下:叮将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。叮仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。(一)叮皿皿定点运算子程序库及其使用说明定点运算子程序库
3、文件名为DQ51.ASM,为便于使用,先将有关约定说明如下:叮多字节定点操作数:用R0或R1来表示存放在由R0或R1指示的连续单元中的数据。地址小的单元存放数据的高字节。例如:R0=123456H,若(R0)=30H,则(30H)=12H,(31H)=34H,(32H)=56H。叮运算精度:单次定点运算精度为结果最低位的当量值。叮工作区:数据工作区固定在PSW、A、B、R2DR7,用户只要不在工作区中存放无关的或非消耗性的信息,程序就具有较好的透明性。DDD标号:DDDD功能:多字节码加法入口条件:字节数在R7中,被加数在R0中,加数在R1中。出口信息:和在R0中,最高位进位在CY中。影响资源
4、:PSW、A、R2堆栈需求:叮节BCDA:MOVA,R7;取字节数至R2中MOVR2,AADDA,R0;初始化数据指针MOVR0,AMOVA,R2ADDA,R1MOVR1,ACLRCBCD1:DECR0;调整数据指针DECR1MOVA,R0ADDCA,R1;按字节相加DAA;十进制调整MOVRO,A;和存回RO中DJNZR2,BCD1;处理完所有字节RETR1中。ODD标号:DDDDR1中。入口条件:字节数在R7中,被减数在RO中,减数在出口信息:差在RO中,最高位借位在CY中。ODDO:PSW、ADR2、R3堆栈需求:口字节BCDB:LCALLNEG1;减数R1十进制取补LCALLBCDA;
5、按多字节码加法处理CPLC;将补码加法的进位标志转换成借位标志MOVFO,C;保护借位标志LCALLNEG1;恢复减数R1的原始值MOVC,FO;恢复借位标志RETNEG1:MOVA,R0;R1十进制取补子程序入口XCHA,R1;交换指针XCHA,ROLCALLNEG;通过RO实现R1取补MOVA,ROXCHA,R1;换回指针XCHA,RORETODD标号:DDD功能:多字节码取补入口条件:字节数在R7中,操作数在RO中。出口信息:结果仍在RO中。影响资源:PSW、A、R2、R3堆栈需求:D字节NEG:MOVA,R7;取0字节数减一D至R2中DECAMOVR2,AMOVA,RO;保护指针MOV
6、R3,ANEG0:CLRCMOVA,#99HSUBBA,R0;按字节十进制取补MOVRO,A;存回RO中INCR0;调整数据指针DJNZR2,NEGO;处理完(MOVA,#9AH;最低字节单独取补SUBBA,ROMOVRO,AMOVA,R3;恢复指针MOVRO,ARETODD标号:DDDDR2)字节功能:多字节UM码左移十进制一位(乘十D入口条件:字节数在R7中,操作数在RO中。出口信息:结果仍在RO中,移出的十进制最高位在ODDO:PSW、ADR2、R3堆栈需求:口字节BRLN:MOVA,R7;取字节数至R2中MOVR2,AADDA,RO;初始化数据指针MOVRO,AMOVR3,#O;工作单
7、元初始化BRL1:DECRO;调整数据指针MOVA,RO;取一字节SWAPA;交换十进制高低位MOVRO,A;存回MOVA,R3;取低字节移出的十进制高位XCHDA,RO;换出本字节的十进制高位MOVR3,A;保存本字节的十进制高位DJNZR2,BRL1;处理完所有字节RETR3中。ODD标号:DDDD功能:双字节二进制无符号数乘法入口条件:被乘数在R2DR3中,乘数在R6DR7中。出口信息:乘积在R2DR3DR4DR5中。ODDO:PSWDADBDR2DR7堆栈需求:口字节MULD:MOVA,R3;计算R3乘R7MOVB,R7MULABMOVR4,B;暂存部分积MOVR5,AMOVA,R3;
8、计算R3乘R6MOVB,R6MULABADDA,R4;累加部分积MOVR4,ACLRAADDCA,BMOVR3,AMOVA,R2;计算R2乘R7MOVB,R7MULABADDA,R4;累加部分积MOVR4,AMOVA,R3ADDCA,BMOVR3,ACLRARLCAXCHA,R2;计算R2乘R6MOVB,R6MULABADDA,R3;累加部分积MOVR3,AMOVA,R2ADDCA,BMOVR2,ARETDDD标号:DDDD功能:双字节二进制无符号数平方入口条件:待平方数在R2、R3中。出口信息:结果在R2、R3、R4、R5中。口字节ODDO:PSW、A、B、R2DR5堆栈需求:口字节MUL2
9、:MOVA,R3;计算R3平方MOVB,AMULABMOVR4,B;暂存部分积MOVR5,AMOVA,R2;计算R2平方MOVB,AMULABXCHA,R3;暂存部分积,并换出R2和R3XCHA,BXCHA,R2MULAB;计算2DR2DR3CLRCRLCAXCHA,BRLCAJNCMU20INCR2;累加溢出量MU20:XCHA,B;累加部分积ADDA,R4MOVR4,AMOVA,R3ADDCA,BMOVR3,ACLRAADDCA,R2MOVR2,ARETR6、R7中。OV=1R6、R7中。OV=1时溢出。口字节入口条件:被除数在R2、R3、R4、R5中,除数在出口信息:OV=0时,双字节商
10、在R2、R3中,ODDO:PSW、A、B、R1DR7堆栈需求:DIVD:CLRC;比较被除数和除数MOVA,R3SUBBA,R7MOVA,R2SUBBA,R6JCDVD1SETBOV;溢出RETDVD1:MOVB,#10H;计算双字节商DVD2:CLRC;部分商和余数同时左移一位MOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AXCHA,R2RLCAXCHA,R2MOVF0,C;保存溢出位CLRCSUBBA,R7;计算(R2R3R6R7)MOVR1,AMOVA,R2SUBBA,R6ANLC,/F0;结果判断JCDVD3MOVR2,A;够
11、减,存放新的余数MOVA,R1MOVR3,AINCR5;商的低位置一DVD3:DJNZB,DVD2;计算完十六位商(R4R5)MOVA,R4;将商移到R2R3中MOVR2,AMOVA,R5MOVR3,ACLROV;设立成功标志RETDDD标号:DDDD功能:双字节二进制无符号数除以单字节二进制数入口条件:被除数在R4、R5中,除数在R7中。出口信息:OV=0时,单字节商在R3中,OV=1时溢出。ODDO:PSW、ADR3DR7堆栈需求:口字节D457:CLRCMOVA,R4SUBBA,R7JCDV50SETBOV;商溢出RETDV50:MOVR6,#8;求平均皿R4R5DR7DDR3)DV51
12、:MOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVF0,CCLRCSUBBA,R7ANLC,/F0JCDV52MOVR4,ADV52:CPLCMOVA,R3RLCAMOVR3,ADJNZR6,DV51MOVA,R4;四舍五入ADDA,R4JCDV53SUBBA,R7JCDV54DV53:INCR3DV54:CLROVRETDDD标号:DDDD功能:三字节二进制无符号数除以单字节二进制数入口条件:被除数在R3、R4、R5中,除数在R7中。出口信息:OV=0时,双字节商在R4、R5中,OV=1时溢出。ODDO:PSW、A、B、R2DR7堆栈需求:口字节DV31:CLRCMOVA,R3SUBBA,R7JCDV30SETBOV;商溢出RETDV30:MOVR2,#10H;求R3R4R5DR7DDR4R5DM23:CLRCMOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AMOVF0,CCLRCSUBBA,R7ANLC,/F0JCDM24MOVR3,AINCR5DM24:DJNZR2,DM23MOVA,R3;四舍五入ADDA,R3JCDM25SUBBA,R7JCDM26DM25:INCR5MOVA,R5JNZDM26INCR4DM26:CLROVRET;商在R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 思维游戏课程设计
- 我做的乐器课程设计
- 四年级数学(上)计算题专项练习及答案汇编
- 2024年度文化创意产业员工薪酬与知识产权合同3篇
- 2024年度第二节专用合同条款:XX教育机构合作协议3篇
- 2024年开发商工程质量投诉调解与赔偿协议3篇
- 2024年度地暖系统安装与智能控制系统集成承包合同3篇
- 《基于深度学习的混合轮系齿轮箱故障诊断方法研究》
- 冷藏车运输与冷链物流行业市场机会与挑战并存考核试卷
- 福建省闽侯县第六中学2017-2018学年高一物理上学期第一次月考试题(含解析)
- 湘少版三年级下册英语单词默写1(附单元标题句)
- 试制过程记录表
- 2024届浙江省宁波市镇海区镇海中学高一物理第一学期期末质量检测试题含解析
- 道路运输安全生产目标责任书
- 高中音乐-《锦鸡出山》教学课件设计
- 国开大学2023年01月11026《经济学(本)》期末考试答案
- 初中历史复习策略
- 常用介电常数
- 随班就读案例
- 智能制造工程训练中心建设方案
- 国家开放大学《管理学基础》形考任务4参考答案
评论
0/150
提交评论