Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: [Kayser] en 18 Enero 2013, 19:32 pm



Título: Sumas de 32 bits con registros de 16
Publicado por: [Kayser] en 18 Enero 2013, 19:32 pm
Hola gente ando estudiando ensamblador y no comprendo como se harian las sumas que exceden las capacidades de los registros. Como se deberia efectuar una suma de por ejemplo 240.000 mas 300.000 con registros de 16 bits? Si alguien puede explicarmelo y poner un codigo comentado seria de gran ayuda. Un saludo


Título: Re: Sumas de 32 bits con registros de 16
Publicado por: MCKSys Argentina en 18 Enero 2013, 23:18 pm
Fijate esto: http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/ (http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/)

Explica como hacer operaciones de 64 bits en 32. La idea es similiar a operar numeros de 32 bits en 16...


Título: Re: Sumas de 32 bits con registros de 16
Publicado por: [Kayser] en 19 Enero 2013, 13:43 pm
Gracias por responder MCKSys Argentina! Pero la informacion esta en ingles... Puedes ponerme un codigo de ejemplo? Un saludo


Título: Re: Sumas de 32 bits con registros de 16
Publicado por: 3mp3z@ndo en 19 Enero 2013, 14:44 pm
Lo harías utilizando la instrucción ADC, para tener en cuenta el bit de acarreo.

Te pongo un pequeño ejemplo:

Código
  1. int _tmain(int argc, _TCHAR* argv[])
  2. {
  3.  
  4. int num1= 240000, num2= 300000, resultado;
  5.  
  6. __asm{
  7. mov ax, word ptr num1
  8.  
  9.        add ax, word ptr num2
  10.  
  11. mov word ptr resultado, ax
  12.  
  13. mov ax, word ptr num1+2
  14.  
  15. adc ax, word ptr num2+2
  16.  
  17. mov word ptr resultado+2, ax
  18. }
  19. cout << num1 << "+" << num2 << "=" << resultado << endl;
  20. return 0;
  21. }
  22.  

Un saludo


Título: Re: Sumas de 32 bits con registros de 16
Publicado por: [Kayser] en 20 Enero 2013, 12:55 pm
Lo que no me queda claro es que pasa al sumar la parte baja y la parte alta... Cuando se suman tanto la parte alta por un lado como la parte baja por el otro se produciran mas de un acarreo cada vez a medida que se suman los numeros no?