Hola, aqui os dejo una rutina para convertir 32 bits en binario (cuatro registros), a 10 digitos BCD. Osea resolucion para aburrir...
LIST p=16F84A
#INCLUDE "p16f84a.inc"
RADIX HEX
contador1 EQU H"0C"
R0 EQU H"0D" ;resultado BCD parte baja
R1 EQU H"0E"
R2 EQU H"0F"
R3 EQU H"10"
R4 EQU H"11" ;resultado BCD parte alta
byte0 EQU H"12" ;parte baja en binario
byte1 EQU H"13"
byte2 EQU H"14"
byte3 EQU H"15" ;parte alta en binario
temp EQU H"16"
ORG 0
goto INICIO
ORG 5
INICIO
B2_BCD bcf STATUS,C ;Borra el carry
movlw .32
movwf contador1
clrf R4
clrf R3
clrf R2
clrf R1
clrf R0
loop rlf byte0,f ;parte baja binario
rlf byte1,f
rlf byte2,f
rlf byte3,f ;parte alta binario
rlf R0,f
rlf R1,f
rlf R2,f
rlf R3,f
rlf R4,f
decfsz contador1,f
goto adjDEC
return
adjDEC movlw R0
movwf FSR
call adjBCD
movlw R1
movwf FSR
call adjBCD
movlw R2
movwf FSR
call adjBCD
movlw R3
movwf FSR
call adjBCD
movlw R4
movwf FSR
call adjBCD
goto loop
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
return
end