【單字節二進制整數轉換為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
|