24位二进制转换为十进制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;1 .二十四位二进制转换为十进制;
; 二进制存放于 3BH , 3CH , 3DH ( 3BH 存放高位,3DH 存放低位);
; 十进制存放于 40H , 41H ...46H , 47H ( 40H 为个位,47H 为千万位)
ZH3: MOV R0, 3DH ;十六位二进制转换为十进制
MOV R1, 3CH
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 44H,R4
MOV 43H,R3
MOV 42H,R2
MOV 41H,R1
MOV 40H,R0
ZHJZ1:MOV R0,#3BH ;先转换低四位
MOV A,#00H
XCHD A,@R0
MOV R1,A ;A R1存低4位,3BH 存高四位
ACALL MULA6
MOV R2,A
ADD A,44H
MOV 44H,A
MOV A,R2
ADD A,40H
MOV 40H,A
MOV A,R1
ACALL MULA5
MOV R2,A
ADD A,43H
MOV 43H,A
MOV A,R2
ADD A,42H
MOV 42H,A
MOV A,R1
ACALL MULA3
ADD A,41H
MOV 41H,A
ACALL ZHSZ ;处理各个十进制数
MOV A,3BH ;再转换高4位
SWAP A
MOV R1,A
ADD A,46H
MOV 46H,A
MOV A,R1
ACALL MULA4
ADD A,44H
MOV 44H,A
MOV A,R1
ACALL MULA8
ADD A,43H
MOV 43H,A
MOV A,R1
ACALL MULA5
ADD A,42H
MOV 42H,A
MOV A,R1
ACALL MULA6
ADD A,40H
MOV 40H,A
MOV A,R1
ACALL MULA7
ADD A,41H
MOV 41H,A
ACALL ZHSZ ;处理各个十进制数
RET
ZHSZ: MOV R0,#40H
MOV R1,#7
MOV A,@R0
ZHS1: MOV B,#10
DIV AB
MOV @R0,B
INC R0
ADD A,@R0
DJNZ R1,ZHS1
MOV @R0,A
RET
MULA2:RL A
RET
MULA3:MOV B,#3
MUL AB
RET
MULA4:RL A
RL A
RET
MULA5:MOV B,#5
MUL AB
RET
MULA6:MOV B,#6
MUL AB
RET
MULA7:MOV B,#7
MUL AB
RET
MULA8:MOV B,#8
MUL AB
RET
MULA9:MOV B,#9
MUL AB
RET
;2 .二十四位二进制转换为十进制;
; 二进制存放于 3BH , 3CH , 3DH ( 3BH 存放高位,3DH 存放低位);
; 十进制存放于 40H , 41H ...46H , 47H ( 40H 为个位,47H 为千万位);
ZH3: MOV R0, 3DH ;先把十六位二进制转换为十进制
MOV R1, 3CH
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 44H,R4
MOV 43H,R3
MOV 42H,R2
MOV 41H,R1
MOV 40H,R0
ZHJZ1: MOV R0,#3BH ;先转换低四位
MOV A,#00H
XCHD A,@R0
MOV R1,A ;A R1存低4位,3BH 存高四位
MOV B,#6
MUL AB
MOV R2,A
ADD A,44H
MOV 44H,A
MOV A,R2
ADD A,40H
MOV 40H,A
MOV A,R1
MOV B,#5
MUL AB
MOV R2,A
ADD A,43H
MOV 43H,A
MOV A,R2
ADD A,42H
MOV 42H,A
MOV A,R1
MOV B,#3
MUL AB
ADD A,41H
MOV 41H,A
ACALL ZHSZ ;处理各个十进制数
MOV A,3BH ;再转换高4位
SWAP A
MOV R1,A
ADD A,46H
MOV 46H,A
MOV A,R1
MOV B,#4
MUL AB
ADD A,44H
MOV 44H,A
MOV A,R1
MOV B,#8
MUL AB
ADD A,43H
MOV 43H,A
MOV A,R1
MOV B,#5
MUL AB
ADD A,42H
MOV 42H,A
MOV A,R1
MOV B,#6
MUL AB
ADD A,40H
MOV 40H,A
MOV A,R1
MOV B,#7
MUL AB
ADD A,41H
MOV 41H,A
ACALL ZHSZ ;处理各个十进制数
RET
ZHSZ: MOV R0,#40H
MOV R1,#7
MOV A,@R0
ZHS1: MOV B,#10
DIV AB
MOV @R0,B
INC R0
ADD A,@R0
DJNZ R1,ZHS1
MOV @R0,A
RET