如何用软件实现DAA方法解析方案
来源:元器件交易网 作者:—— 时间:2012-03-19 15:22
2 定点运算子程序
(1)多字节压缩BCD码加法子程序ADBCD
加法在寄存器内直接完成,以R20为DAA工作单元。BCD码相加后,将和送到R20,调用ADAA子程序,实现对和的调整(返回主程序后再回送调整结果)。
(2)多字节压缩BCD码减法子程序SUBCD
减法在寄存器内直接完成,以R20为DAA工作单元。BCD码相减后,将差送至R20,调用SDAA子程序,实现对差的调整(返回主程序后再回送调整结果)。
(3)乘法子程序MUL16
操作:(R13,R12)×(R15,R14)→ R17,R16,R15,R14
采用字乘字无符号数运算。采取逐次右移部分积和乘数,当乘数移出位等于1时将被乘数加入部分积的方法完成计算。可视为16位整数×16位整数→32位整数,也可视为16位整数×16位小数→16位整数,或视为16位小数×16位小数→32位小数。可加上舍入处理。
(4)除法子程序DIV16
操作:(R17,R16,R15,R14)÷(R13,R2)→R15,R14
采用双字除以字无符号数运算。采取逐次左移被除数与除数相减、试商、记商的方法完成计算。可视为双字型整数÷字型整数→字型整数,也可视为小数÷小数→ 小数。要求 (R17,R16)<(R13,R12)。可加上舍入处理,但要注意可能产生舍入溢出(例如$7FFFC000÷$8000=$FFFF.8,舍入取整即产生溢出)。
(5)开平方子程序SQR
操作:(R17,R16,R15,R14)→R14,R13,R12
可视为双字型整数X(≤4294967295)开平方,因有舍入处理,方根最大可达$10000(如X=$FFFF0000开平方即属此),故用3字节存储平方根。也可视为定点小数开平方,将X自最高位起每2位进行分割,采用摸拟手算的方法(X每左移2位试出1位根)开平方。
3 定点数制转换子程序
该组子程序由定点整数二翻十、定点整数十翻二、定点小数二翻十和定点小数十翻二等4个子程序组成,分别称为CONV1、CONV2、CONV3和CONV4。由于AVRAT90系列单片机只有字节乘字节指令,计算功能不强,故采用移位调整法实现多字节数据的数制转换。其中,整数二翻十子程序CONV1和小数十翻二子程序CONV4采取左移调整的方法,而整数十翻二子程序CONV2和小数二翻十子程序CONV3采用右移调整的方法。不论左移还是右移,调整总是对十进制数进行,其目的是使十进制数的移位规则符合于二进制数移位规则:左移1位值增倍,右移1位值折半。当某位BCD中的最高位(8)左移移入高位BCD中时,按二进制数看待应为16,而按十进制数相邻位看待只能为10,故要做加6调整。另外,左移过程中若出现非法BCD码时也要对其调整。BCD码左移只不过是BCD码相加的特例,故调用 BCD码相加调整子程序ADAA1就可完全解决左移调整问题。当右移BCD码时,若某位BCD中的1移入低位BCD最高位,按二进制数看待,1折半应为 0.5,而低位BCD中最高位值为0.8,故要做减3(即0.3)调整。因8421BCD码其各位之权(某位上的1所代表的实际数值)分别为8、4、2和 1,若只在本码位内部移动,则符合左移1位值增倍、右移1位值折半的规则,故不须调整。
本组定点运算及数制转换子程序为适应大多数应用场合而设,具体使用时可加以修改。如整数二翻十时,二进制数不超过$FFFF,为提高运行速度,可将二进制数改为二字节,十进制数改为3字节,并将移位循环次数(R21)改为16。如数据精度不够,可把乘法子程序改为3字节乘3字节等等。
ADAA1为左移BCD码并对其进行调整的子程序。
RDAA为对右移后的BCD码进行测试、实施减3调整的子程序,以R20为工作单元。
注:开平方子程序SQR说明中,请将对开平方数R17、R16、R15、R14加上完整根号。
- •宇凡微13万转暴力风扇无刷电机集成驱动方案,加速市场布局2024-07-11
- •瑞萨电子推出R-Car S4入门套件 实现汽车网关系统的快速软件开发2023-07-11
- •大联大世平集团推出基于耐能Kneron产品的AI相机方案2023-06-15
- •大联大友尚集团推出基于CVITEK和SOI产品的网络摄像机(IPC)方案2023-02-16
- •尊湃通讯完成数亿人民币Pre-A轮融资,致力于提供全系列Wi-Fi芯片及解决方案2022-05-09
- •江苏:支持集成电路企业和软件企业加强知识产权运用2022-01-24
- •软件比芯片更赚钱?美式收购“两通”树大招风!2021-07-13
- •硬件or软件:“智算”时代 究竟谁更重要?2021-03-26
- •老榕树广告联盟移动推广CPC这点你必须知道2021-02-07
- •EDA公司芯华章获融资 部署下一代验证EDA系统和软件2020-11-09