原创 N位压缩BCD加法(C51大端算法代码---乱战修订版)

2007-3-14 13:06 4336 7 7 分类: MCU/ 嵌入式

/*------------------------------------------------------------------------
          N位压缩BCD加法(C51大端算法代码---乱战修订版)---雁舞白沙出题
此题目的讨论见 http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2464366
修订原因:旧程序在601+999=1600错为1000
          是由于ACC = One + Two + 1;编译加了2次,可能是顺序的问题。
    才造成了BCD调整错误。
    现修改为Two++;ACC = One + Two;
菜地公告:引用本文必须注明出处!!!
HotPower@126.com    2007.3.14 16:22于西安大雁塔菜地
------------------------------------------------------------------------*/
#include <REGX52.h>
#include "hotins.h"//选自HotPower的《Keil C51红杏出墙记》
/*----------------------------------------------------------------------------
若定义CodeTest则只测试16位BCD加法一种,否则将测试8/16/32/64位的BCD加法
-----------------------------------------------------------------------------*/
#define CodeTest//选择测试16位BCD加法一种


/*----------------------------------------------------------------------------
CodeMode=1:红杏出墙-代码长度130字节      DataAdd()绝对空间53个字节
                                         改天用纯汇编看看有多大的差距
           有空和邓苗同志挑战一下纯汇编的~~~
CodeMode=2:利用C51的标志-代码长度154字节 DataAdd()空间比CodeMode1多24个字节
CodeMode=3:正规战-代码长度180字节   DataAdd()空间比CodeMode1多50个字节
注意:不应该测试代码总长度,因为hotins.h要干“坏事”~~~所以应该比较绝对空间大小
-----------------------------------------------------------------------------*/
#define CodeMode 1//选择DataAdd()代码编程模式


/*----------------------------------------------------------------------------
在KeilC51中定义idata数据类型,可能会使代码简洁,因为Keil用了间接寻址.
当然这不利于代码的移植,不过在KeilC51的特定环境下还是很必要的~~~
注意:所长打PP~~~
-----------------------------------------------------------------------------*/
点击下载: BCD.RAR(内含hotins.h头文件) rar


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条