Buenas, estoy teniendo algun problema al restar dos registros de 32 bits en ASM del x86 (con Visual C++ 6.0):
;eax = 2
;ebx = -2147483648
sub eax, ebx
Al hacer esto, el eax devuelve con -2147483646. ¿No deberia devolver un numero positivo? Parece que solo opera con los 16 bits mas bajos.
(Nota: Los numeros estan en decimal)
Está operando en 32bits, pero te sales de rango, ya que el valor de un entero 32 bits está entre [ -2147483647 , 2147483648 ]
Link: http://home.att.net/~jackklein/c/inttypes.html#int
Si, era eso. Me di cuenta al poco de poner el post, porque se estaba activando el bit de overflow.
Gracias de todos modos.