Mình đã có đoạn code này. Xin được post lên đây để các bạn cùng tham khảo :
Code:
B6_BCD:
bcf STATUS,0 ; clear the carry bit
movlw .48
movwf count
clrf r0
clrf r1
clrf r2
clrf r3
clrf r4
clrf r5
clrf r6
clrf r7
loop48
rlf L_byte2, F
rlf L_byte1, F
rlf M_byte2, F
rlf M_byte1, F
rlf H_byte2, F
rlf H_byte1, F
rlf r7, F
rlf r6, F
rlf r5, F
rlf r4, F
rlf r3, F
rlf r2, F
rlf r1, F
rlf r0, F
;
decfsz count, F
goto adjDEC
RETLW 0
;
adjDEC
movlw r7
movwf FSR
call adjBCD
movlw r6
movwf FSR
call adjBCD
movlw r5
movwf FSR
call adjBCD
movlw r4
movwf FSR
call adjBCD
;
movlw r3
movwf FSR
call adjBCD
;
movlw r2
movwf FSR
call adjBCD
;
movlw r1
movwf FSR
call adjBCD
;
movlw r0
movwf FSR
call adjBCD
goto loop48
;
adjBCD
movlw 3
addwf INDF,W
movwf temp
btfsc temp,3 ; test if result > 7
movwf INDF
movlw 30
addwf INDF,W
movwf temp
btfsc temp,7 ; test if result > 7
movwf INDF ; save as MSD
RETLW 0
Note : Kết quả chuyển đổi để trong [r0:r7], trong đó r0 là MSB, r7 là LSB. Số cần chuyển đổi (6byte hex) để trong [H_byte1:H_byte2:M_byte1:M_byte2:L_byte1:L_byte2]. H_byte1 là MSB, L_Byte2 là LSB.