Autor Tema: Como dividir dos numeros con assembler  (Leído 21726 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Bombillo

  • PIC10
  • *
  • Mensajes: 11
Como dividir dos numeros con assembler
« 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...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como dividir dos numeros con assembler
« Respuesta #1 en: 07 de Enero de 2008, 20:08:43 »
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??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Bombillo

  • PIC10
  • *
  • Mensajes: 11
Re: Como dividir dos numeros con assembler
« Respuesta #2 en: 07 de Enero de 2008, 20:42:43 »
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

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Como dividir dos numeros con assembler
« Respuesta #3 en: 07 de Enero de 2008, 21:07:17 »
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!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Como dividir dos numeros con assembler
« Respuesta #4 en: 07 de Enero de 2008, 21:09:31 »
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, claro!)
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Como dividir dos numeros con assembler
« Respuesta #5 en: 07 de Enero de 2008, 22:19:33 »
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!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Como dividir dos numeros con assembler
« Respuesta #6 en: 07 de Enero de 2008, 23:02:46 »
Hola.También, se puede hacer rotando el bit a la izquierda.

 Sugerencia:

Este tema debería estar en assemblerr, no en offtopic.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Como dividir dos numeros con assembler
« Respuesta #7 en: 08 de Enero de 2008, 01:52:10 »
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, y espero te sirvan

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.