TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Bombillo en 07 de Enero de 2008, 19:46:02
-
Buenas tardes amigos. Como puedo hacer para dividir dos numeros con assembler? Espero que me puedan ayudar. Gracias...
-
Creo que no sirve de mucho así, que tal si quiero dividir un número de 16 bits en uno de ocho??
Ejemplo:
16356 / 4
Si lo haces con restas, debes tener unas cuantas iteracciones, no ??
Sirve eso entonces??
-
Con restas sucesivas hasta donde ya no alcances.
Ejemplo: 25/4
25 - 4 = 21 (alcanzó 1 vez)
21 - 4 = 17 (alcanzó 2 veces)
17 - 4 = 13 (alcanzó 3 veces)
13 - 4 = 9 (alcanzó 4 veces)
9 - 4 = 5 (alcanzó 5 veces)
5 - 4 = 1 (alcanzó 6 veces) Resultado
1 - 4 = -3 (ya no alcanzó) Residuo
Resultado = 6, Residuo = 1
OK Gracias amigo por la ayuda. Ya tengo la idea de como desarrollar el assembler
-
Así es, el procedimiento es el mismo así sean números de 24 bits ó de 32 bits. Por ejemplo, las rutinas de Microchip para dividir un número de 16 bits en uno de ocho toman entre 176 y 294 ciclos de instrucción,
Miercoles!!!! :shock:
Nunca crei que fuese tan burdo el sistema. Claro, de ASM no tengo ni idea, pero pense que las rutinas de division serian algo mas sofisticadas, como por ejemplo una implementacion de un algoritmo parecido al que se usa para dividir a mano, pero en binario.....
Me has sorprendido! :)
Un abrazo!
-
Me referia a algo asi:
División de números binarios
La división en binario es similar a la decimal, la única diferencia es que a la hora de hacer las restas, dentro de la división, estas deben ser realizadas en binario. Por ejemplo, vamos a dividir 100010010 (274) entre 1101 (13):
100010010 |1101
——————
- 0000 010101
———————
10001
- 1101
———————
01000
- 0000
———————
10000
- 1101
———————
00111
- 0000
———————
01110
- 1101
———————
00001
(Sacado de la wikipedia (http://es.wikipedia.org/wiki/Sistema_binario#Divisi.C3.B3n_de_n.C3.BAmeros_binarios), claro!)
-
Vos sabes que no use nunca ASM en los PICs. En la epoca de las Commodore, hice algunas rutinas en el ASM del 6510 o 6502 (ya ni el numero del micro me acuerdo). Si bien es una pesadilla, esta bueno para aguzar el ingenio.
Voy a ver si me hago tiempo de darle una mirada a esas AN de Microchip. Aunque posiblemente nunca necesite hacer una division en binario usando ASM, no esta demas ver como se resuelve un problema aparentemente simple, pero que para ser eficiente requiere una gran dosis de sapiencia.
Saludos!
-
Hola.También, se puede hacer rotando el bit a la izquierda.
Sugerencia:
Este tema debería estar en assemblerr, no en offtopic.
-
En Almacén de Assembler, hay unas rutinas de mi autoría, una para dividir y una multiplicar, que están bien comentadas.
Te dejo el Link (http://www.todopic.com.ar/foros/index.php?topic=17479.0), y espero te sirvan
Salud 8)