Pregunta: | 24815 - NUMEROS NEGATIVOS EN ENSAMBLADOR |
Autor: | Raul Rocha |
estoy eleborando un programa en lenguaje ensamblador sobre las operacione aritmeticas basica con numeros enteros pero no he podido hacerlo funcionar con numeros negativos. soy un principiante en este lenguaje gracias por su ayuda |
Respuesta: | Manuel Redondo |
Para utilizar números negativos en binario, se tienen que complementar a 2. Es decir, reservar un bit para el signo. De hecho, todo esto lo hace el compilador y tú no te tienes que preocupar de nada. Pero, si quieres programar a más bajo nivel, necesariamente tienes que complementar a 2 (hay procesadores que tienen instrucciones específicas). |
Respuesta: | Paul Guerra |
Para utilizar números enteros negativos se procede como si fuese cualquier otro número:
mov eax, -5 mov dword ptr [ebx], -50 ... Hay que tener en cuenta que los números negativos no se diferencian de los números positivos. Por lo que el código del programa es el que define cómo hay que tratarlos. Para aclarar las cosas: mov eax, -5 mov ebx, 2 cmp eax,ebx ja salto ;El salto se produce, aunque nosotros no queremos que salte ... salto: ... Lo correcto sería: mov eax, -5 mov ebx, 2 cmp eax,ebx jg salto ;El salto no se produce ... salto: ... La instrucción JA (Jump if Above) no diferencia entre positivos y negativos, aunque JG (Jump if Greater) sí lo hace. |