Autor Tema: Division entera y funcion mod en 8 bits  (Leído 8231 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado fzurita

  • PIC10
  • *
  • Mensajes: 33
Division entera y funcion mod en 8 bits
« en: 13 de Marzo de 2008, 11:13:52 »
Necesito separar un numero de 3 cifras (maximo) en sus digitos individuales...es decir, si tengo el 435 (en binario) , separarlo en 4, 3 y 5 (binarios). Se me ocurre  lo siguiente:

C=(NUMERO/10)/10    ;para las centena..       
D=(NUMERO/10)%10        ;decena...
U=NUMERO%10                ; y unidad.

%: operador MOD
10=numero diez, pero que debiera ser 00001010, como binario de 8 bits.

Lo que no se es como implementar en assembler la division entera en 8 bits y la funcion MOD, en este caso utilizaria registros de 8 bits para las variables (NUMERO, C, D, U), pues pienso utilizar un PIC 16F628A...en este subforo solo he encontrado un link de microchip para una division "double precision"...pero que la verdad no entendi mucho.  Por favor si me pudieran echar una mano con este proyecto se los agradeceria.

saludos




Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Division entera y funcion mod en 8 bits
« Respuesta #1 en: 13 de Marzo de 2008, 11:48:20 »
Veamos a ver si te entendí, cuando hablas del 435 te refieres al 435 en decimal verdad? digo, tu mencionaste específicamente en binario pero supongo que te refieres a que lo tienes guardado en una variable de 16 bits pero el valor es 435 decimal en vez de ser un texto ASCII.

Si estoy en lo correcto y te interpreté bien, lo que estas buscando es convertir el número en BCD.  Si mal no recuerdo en piclist hay rutinas para pasar de binario a bcd.    Es una forma mucho más eficiente y directa de obtener cada dígito y no meterte en la complejidad de dividir en assembler!



- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado fzurita

  • PIC10
  • *
  • Mensajes: 33
Re: Division entera y funcion mod en 8 bits
« Respuesta #2 en: 13 de Marzo de 2008, 13:06:56 »
Hola maunix..sí, me refería al numero decimal (para explicar el ejemplo), pero que en realidad es un binario que debo recibirlo desde la puerta serial del 16F628A (registro RCREG), el cual es de 8 bits.
Entonces resumiendo debo tomar este numero de 8 bits (que representa un decimal), y separarlo en 3 registros de 8 bits cada uno, para la centena, decena y unidad, del numero decimal que este representa.

Mas claro todavia: 10010110 (numero decimal 150, que para mi esta bien representar como maximo, y me alcanzan los 8 bits)

Entonces los registros serian:

C=00000001 (decimal 1)
D=00000101 (decimal 5)
U=00000000 (decimal 0)


Eso que me dices de pasar a BCD no lo sé  ...buscaré en el link que me das...
Espero que haya quedado mas claro



Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Division entera y funcion mod en 8 bits
« Respuesta #3 en: 13 de Marzo de 2008, 17:06:30 »
Hola maunix..sí, me refería al numero decimal (para explicar el ejemplo), pero que en realidad es un binario que debo recibirlo desde la puerta serial del 16F628A (registro RCREG), el cual es de 8 bits.
Pasa que mencionaste el número 435 que no es de 8 bits, entonces ya no me cerraban las cosas

Entonces resumiendo debo tomar este numero de 8 bits (que representa un decimal), y separarlo en 3 registros de 8 bits cada uno, para la centena, decena y unidad, del numero decimal que este representa.

Mas claro todavia: 10010110 (numero decimal 150, que para mi esta bien representar como maximo, y me alcanzan los 8 bits)

Entonces los registros serian:

C=00000001 (decimal 1)
D=00000101 (decimal 5)
U=00000000 (decimal 0)


Eso que me dices de pasar a BCD no lo sé  ...buscaré en el link que me das...
Espero que haya quedado mas claro

Si, pasando a BCD y luego acomodando un poco las cosas podrás hacer lo que quieres, te sugiero que leas sobre el formato BCD, y si tienes dudas vuelvas a preguntar :)

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)