很简单 ;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 |