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
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...
Gracias por responder MCKSys Argentina! Pero la informacion esta en ingles... Puedes ponerme un codigo de ejemplo? Un saludo
Lo harías utilizando la instrucción ADC, para tener en cuenta el bit de acarreo.
Te pongo un pequeño ejemplo:
int _tmain(int argc, _TCHAR* argv[])
{
int num1= 240000, num2= 300000, resultado;
__asm{
mov ax, word ptr num1
add ax, word ptr num2
mov word ptr resultado, ax
mov ax, word ptr num1+2
adc ax, word ptr num2+2
mov word ptr resultado+2, ax
}
cout << num1 << "+" << num2 << "=" << resultado << endl;
return 0;
}
Un saludo
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?