16位二进制转换为十进制

;1. 将 THO , TL0 中的数转换为十进制
; 从高位到底位存于 35H , 36H , 37H , 38H , 39H
;
;
;
ZH2: MOV R0, TL0
MOV R1, TH0
CLR A
MOV R2, A ;先清零
MOV R3, A
MOV R4, A
MOV R5, #16 ;共转换十六位数
LOOP: CLR C
MOV A, R0 ;从待转换数的高端移出一位到Cy
RLC A
MOV R0, A
MOV A,R1
RLC A
MOV R1, A
MOV A, R4 ;送到BCD码的低端
ADDC A, R4 ;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A,R3
ADDC A, R3
DA A
MOV R3, A
MOV A,R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP ;共转换十六位数
;-------至此,已经把TH1 TL1中的数字,转换成BCD码,送到了R2 R3 R4。
;-------下面,分别存入R4 R3 R2 R1 R0。
MOV A,R4
MOV B, #16
DIV AB
MOV R1, A
MOV R0, B
MOV A, R2
MOV R4, A
MOV A,R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B
MOV 35H,R4
MOV 36H,R3
MOV 37H,R2
MOV 38H,R1
MOV 39H,R0
RET











2. 将 THO , TL0 中的数转换为十进制
从高位到底位存于 35H , 36H , 37H , 38H , 39H






CL3: MOV 35H,TH0
MOV 36H,TL0
ACALL CL4
ACALL CL5
ACALL CL6
ACALL CL7
ACALL CL9
RET
CL4: CLR CY
MOV R0,#35H
MOV R1,#40H
MOV R2,#2
DE1: MOV A,@R0
MOV B,#100
DIV AB
MOV @R1,A
MOV A,B
MOV B,#10
DIV AB
INC R1
MOV @R1,A
INC R1
MOV @R1,B
INC R0
INC R1
DJNZ R2,DE1
RET
CL5: MOV R0,#42H
MOV R1,#53H
MOV R3,#3
MOV 3AH,#0
DE2: MOV A,@R0
MOV B,#6
MUL AB
ADD A,3AH
MOV B,#10
DIV AB
MOV @R1,B
MOV 3AH,A
DEC R0
DEC R1
DJNZ R3,DE2
MOV 50H,A
RET
CL6: MOV R0,#42H
MOV R1,#4DH
MOV R3,#3
MOV 3AH,#0
DE3: MOV A,@R0
MOV B,#5
MUL AB
ADD A,3AH
MOV B,#10
DIV AB
MOV @R1,B
MOV 3AH,A
DEC R0
DEC R1
DJNZ R3,DE3
MOV 4AH,A
RET
CL7: MOV R0,#42H
MOV R1,#49H
MOV R3,#3
MOV 3AH,#0
DE4: MOV A,@R0
MOV B,#2
MUL AB
ADD A,3AH
MOV B,#10
DIV AB
MOV @R1,B
MOV 3AH,A
DEC R0
DEC R1
DJNZ R3,DE4
MOV 46H,A
RET
CL9: MOV A,45H
ADD A,53H
MOV B,#10
DIV AB
MOV 39H,B
ADD A,44H
ADD A,4DH
ADD A,52H
MOV B,#10
DIV AB
MOV 38H,B
ADD A,43H
ADD A,49H
ADD A,4CH
ADD A,51H
MOV B,#10
DIV AB
MOV 37H,B
ADD A,48H
ADD A,4BH
ADD A,50H
MOV B,#10
DIV AB
MOV 36H,B
ADD A,47H
ADD A,4AH
MOV B,#10
DIV AB
MOV 35H,B
RET













相关文档
最新文档