|  | 
 
 发表于 2005-8-24 14:55:46
|
显示全部楼层 
三字节的十六进制整数转换三字节的BCD码| 
很简单 ;4字节转5字节BCD 输入R4/R5/R6/R7
 输出:30-35H;
 看一下我的
 B_2:  CLR   A  ; ;BCD码初始化
 CLR  C
 MOV  30H, A
 MOV  31H, A
 MOV  32H, A
 MOV  33H, A
 MOV  34H, A
 MOV  R2,#20H ;  ;转换双字节十六进制整数
 HB3:  MOV  A,R7 ;  ;从高端移出待转换数的一位到 CY 中
 RLC  A
 MOV  R7,A
 MOV  A,R6
 RLC  A
 MOV  R6,A
 MOV  A,R5
 RLC  A
 MOV  R5,A
 MOV  A,R4
 RLC  A
 MOV  R4,A
 MOV  A, 34H ;  ;BCD码带进位自身相加,相当于乘2
 ADDC  A,34H
 DA  A  ; ;十进制调整
 MOV  34H,A
 MOV  A,33H
 ADDC  A,33H
 DA   A
 MOV  33H,A
 MOV  A,32H
 ADDC  A,32H
 DA   A
 MOV  32H,A
 MOV  A,31H
 ADDC  A,31H
 DA   A
 MOV  31H,A
 MOV  A,30H
 ADDC  A,30H
 DA  A
 MOV  30H,A   ;;双字节十六进制数的万位数不超过6,不用调整
 DJNZ  R2,HB3 ;  ;处理完16bit
 RET
 | 
 |