【单字节二进制整数转换为BCD码子程序】
;;入口:(A)= 二进制整数,
;;出口:(R0)= 存放BCD码的RAM首址指针。
BINtoBCD1:
MOV B, #100
DIV AB ;;A←百倍数, B←余数
MOV @R0 A ;;RAM←百位数
INC R0 ;;RAM指针加1
MOV A, #10
XCH A, B ;;A←余数, B←#10
DIV AB ;;A←十位数,B←个位数
SWAP A ;;十位数高低半字节互换
ADD A, B ;;A←合成得BCD码
MOV R0, A ;;RAM←转换结果
【多个字节二进制整数转换为BCD码子程序】
;;入口:BIN_P是二进制数末字节地址指针,N是待转换的字节数,
;;出口:BCD_P是BCD码个位数地址指针。
BINtoBCDn:
MOV R1, BCD_P
MOV R2, N
INC R2
CLR A
BB0:
MOV @R1, A
INC R1
DJNZ R2, BB0
MOV A, N
MOV B, #8
MUL AB
MOV R3, A
BB3:
MOV R0, BIN_P
ACALL BINtoBCD1 ;;调用转换单字节转换子程序
MOV R2, N
CLR C
BB1:
MOV A, @R0
RLC A
MOV @R0, A
INC R0
DJNZ R2, BB1
MOV R2, N
INC R2
MOV R1, BCD_P
BB2:
MOV A, @R1
ADDC A, @R1
DA A
MOV @R1, A
INC R1
DJNZ R2, BB2
DJNZ R3, BB3
RET
|