程式經過模擬除錯透過,如下所示:
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
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 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 R0, B
MOV R2, B
RET
程式經過模擬除錯透過,如下所示:
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
RET