====================================
【4位十进制整数转换为二进制整数子程序】
入口:十进制整数千位数RAM址存于R0,百位数、十位数、个位数RAM址依次加1;
返回值:转换所得二进制整数存于R3(高字节)R4(低字节)。
DtoB: MOV R2, #4 ;;R2←递减的循环次数初值
MOV A, @R0
MOV R4, A ;;R4←千位数
LP1 : MOV A, R4 ;;R3R4←(R3)(R4)*10
MOV B, #10
MUL AB
MOV R4, A
MOV B, #10
XCH A, B
XCH A, R3
MUL AB
ADD A, R3
XCH A, R4
INC R0 ;;RAM指针加1
ADD A, @R0 ;;R3R4←(R3)(R4)+((R0))
XCH A, R4
ADDC A, #0
MOV R3, A
DJNZ R2, LP1
RET
====================================
【双字节二进制整数转换为十进制整数BCD码子程序】
入口:二进制整数高字节存于R2,低字节存于R3
返回值:转换所得BCD码由高位至低位依次存于R4,R5,R6
BtoD: MOV R7, #16 ;;R7←递减的循环次数初值
MOV R4, #0 ;;结果寄存器清零
MOV R5, #0
MOV R6, #0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP2: CLR C
MOV A, R3
RLC A
MOV R3, A
MOV A, R2
RLC A
MOV R2, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A, R6
ADDC A, R6
DA A
MOV R6, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R5, A
ADDC A, R5
DA
MOV R5, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R4, A
ADDC A, R4
DA
MOV R4, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJNZ R7, LP2
RET
|