bueno, en el manual del Curso Avanzado de Microntroladores PIC, de la editorial Cekit existe una rutina convertidora BIN2BCD bastante simple:
unidad es el registro que contiene el valor BIN, ese mismo registro lo usaras como unidad en BCD al finalizar la rutina.
con_BCD clrf decena ;Sub convertidor de Binario a BCD
movlw .10
repite subwf unidad, f
btfss status, c
goto sum1
incf decena, f
goto repite
sum1 addwf unidad, f
return ;Este return si estas llamando usando call, debes
;kitarlo si usas goto