Aqui tienes una rutina que transforma 8 dígitos en BCD a un binario de 32 bits. Se puede modificar fácilmente para tu caso:
Codigo:
;*********************************************************************
;DEC2BIN: Tranforma el código bcd de 8 digitos en uno binario
; de 32 bits y lo guarda en los registros dividendox
;USO DE MEMORIA: temp0 --> contador de bits
; temp1 --> contador de dígitos
; disp0 --> Dígito LSB en BCD
; -----
;
; disp7 --> Dígito MSB en BCD
; dividenco6 --> Byte LSB en Binario
; -----
;
; dividenco3 --> Byte MSB en Binario (32 bits)
;*********************************************************************
dec2bin movlw d"32"
movwf temp0 ;Contador de bits
d2bbck1 movlw disp0-1 ;Puntero al digito msb
movwf fsr
movlw 0x08
movwf temp1 ;Contador de dígitos
movlw d"10"
bcf status,c ;Borra el carry
d2bbck2 incf fsr,f
btfsc status,0
addwf indf,f ;Add 10 if "1" bit from prev digit
rrf indf,f ;Shift out LSB of digit
decfsz temp1,f ;Siguiente dígito
goto d2bbck2
rrf dividendo3,f ;Shift in carry from digits
rrf dividendo4,f
rrf dividendo5,f
rrf dividendo6,f
decfsz temp0,f ;Siguiente bit
goto d2bbck1
return