【單字節(jié)二進制整數(shù)轉換為BCD碼子程序】
;;入口:(A)= 二進制整數(shù),
;;出口:(R0)= 存放BCD碼的RAM首址指針。
BINtoBCD1:
MOV B, #100
DIV AB ;;A←百倍數(shù), B←余數(shù)
MOV @R0 A ;;RAM←百位數(shù)
INC R0 ;;RAM指針加1
MOV A, #10
XCH A, B ;;A←余數(shù), B←#10
DIV AB ;;A←十位數(shù),B←個位數(shù)
SWAP A ;;十位數(shù)高低半字節(jié)互換
ADD A, B ;;A←合成得BCD碼
MOV R0, A ;;RAM←轉換結果
【多個字節(jié)二進制整數(shù)轉換為BCD碼子程序】
;;入口:BIN_P是二進制數(shù)末字節(jié)地址指針,N是待轉換的字節(jié)數(shù),
;;出口:BCD_P是BCD碼個位數(shù)地址指針。
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 ;;調(diào)用轉換單字節(jié)轉換子程序
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
|