Hola, hacer una division en un byte es más que sencillo:
Tienes que hacer un bucle deresta: por ejemplo 128/8
le restas 8 a 128 tantas veces como sea necesario hasta que el resultado sea menor a 8, ese resultado es el resto y la cantidad de veces que haces la resta es el resultado de la división.
-Dividir el contenido de W por CTE (constante: #define CTE 0x08):
dividir
movwf reg1
movlw 0xff
movwf Resultado
clrf Resto
movlw CTE
div incf Resultado
subwf reg1,F
btfsc STATUS,C
goto div
movlw CTE
addwf reg1,W
movwf Resto
return
Facilmente puedes reemplazar la constante por una variable DIVISOR:
Donde dice movlw CTE pones movf DIVISOR,W
Luego con el resto puedes hacer otra operación para transformarlo en tus decimales:
bcf STATUS,C
rlf Resto
bcf STATUS,C
rlf Resto
bcf STATUS,C
rlf Resto ;Multiplicar por 8
movf Resto,W
addwf Resto,F
addwf Resto,F ;Hasta aqui multiplicaste por 10
movf Resto,W
call dividir ;Divides de nuevo el resto multiplicado por 10
Repites esta ultima operación para la cantidad de decimales que quieras.
Espero que te ayude.