zjjhtony 发表于 2019-3-5 08:58 还是不懂啊,比如 a3=0101 a2=0100 a1=1000 a0=1001,求大侠解读这个计算过程 |
zjjhtony 发表于 2019-3-5 08:58 我想看的就是你这样的解答,真棒 |
1、4位的BCD码转二进制数计算公式: a3,a2,a1,a0四位BCD码,转成的二进制数=a3*1000+a2*100+a1*10+a0 2、这段程序就是完成这个转换的过程的。 3、怎么完成这个呢? 分成3个步骤: NO1: (a3)*10+a2 NO2: ((a3)*10+a2)*10+a1 NO3: (((a3)*10+a2)*10+a1)*10+a0 =a3*1000+a2*100+a1*10+a0 要进过3个循环。每个循环都是16位数乘以10(8位数),再加上另外一个数。中间需要考虑进位。 怎么完成这个循环呢? 十六位数AB(A代表高8位,B代表低8位)乘以10(8位数)再加上另外一个数D的计算方法: 高位字节=A*10+(B*10+D)的进位(有进位加1,无进位加0) 低位字节=B*10+D 4、在第一个循环中,要将A3看出16位数,高位字节是0,所以R3=0. |
yzwzfyz 发表于 2019-3-3 20:25 还是不懂,取出来的不是BCD码吗?它乘以10是什么啊,求指导一下。 |
1、先取的是千位,3次循环,每次*10,合计*1000 2、次取的是百位,2次循环,每次*10,合计*100 3、再次取的是十位,1次循环,每次*10,合计*10 每次都将合计的结果放在R4R3中,最后加a0,不就OK了吗。 |