Autor
|
Tema: Duda con la bandera de desbordamiento (Leído 6,859 veces)
|
.:UND3R:.
|
Hola a todos, tengo la siguiente duda con la bandera de desbordamiento (OF)
tengo dos instrucciones: mov ax,7FF0h add al,10h ; CF=1 SF=0 ZF=1 0F=0
11110000 00010000 100000000
mov al,80 add al,80 ; CF=1 SF=0 ZF=1 0F=1
10000000 10000000 100000000
Mi duda es por qué la diferencia, tengo entendido que es el resultado de un xor del bit que es acarreado a MSB con el que bit que se acarrea hacia a fuera de MSB
por lo que en ambos sería xor 1,0 (1=bit acarreado hacia afuera de MSB y 0=bit acarreado hacia MSB) por lo que en resumen en ambos casos se activaría la bandera OF
Saludos
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
_Enko
|
Directo del manual de Intel. The ADD instruction performs integer addition. It evaluates the result for both signed and unsigned integer operands and sets the OF and CF flags to indicate a carry (overflow) in the signed or unsigned result, respectively
Sacamos parte del texto que esconde la respuesta The ADD instruction performs integer addition. It evaluates the result for both signed and unsigned integer operands and sets the OF and CF respectively
Eso seria: CARRY para enteros positivos sin signo OVERFLOW para enteros con signo. 80 + 80 > 128, por eso hay overflow. char signed: -128 to 127 unsigned: 0 to 255
Para crear el rango negativo supongo que el rango es ese: 0: -128 128: 0 255: 127 (editado: no, no lo es, ver post abajo) mov al, 255/2 add al, 1 ;hay overflow, al= 128 mov al, 255 add al, 1 ;hay carry, al=0
Saludos
|
|
« Última modificación: 22 Noviembre 2011, 03:41 am por _Enko »
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
hola! tengo una duda respecto al tema , entonces eso quiere decir que si trabajamos con partes de un registro y aplicamos operaciones aritmeticas y si en una operacion aritmetica hay acarreo entonces por lo que e visto AH no se modifica eso quiere decir que lo tomamos y si queremos que tenga logica de una suma con acarreo, debemos sumarle ese acarreo "manualmente" ? porque por lo que e visto siempre hay acarreo en las dos operaciones
|
|
« Última modificación: 22 Noviembre 2011, 00:06 am por RHL »
|
En línea
|
|
|
|
.:UND3R:.
|
Ahora entiendo claramente
byte con signo: -128 a +127 bytes sin signo: 0 a 255
pero mi duda es por qué el 80 es considerado un byte con signo?
cuando es y cuando no es considerado un valor con signo o sin signo?
Saludos
PD: recién me inicio, _Enko tú lo sabes
Saludos
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
cuando el limite de un valor en binario osea el primer bit ( el bit mas significativo ) es 1 algo que me fije es que en las instrucciones de .:UND3R:., estas: mov al,80 add al,80 80 esta en base 10 osea que en hexadecimal es 50, por eso 80h 50d = 80h ( -128 ) = 1000 0000b _Enko corrijeme...
|
|
|
En línea
|
|
|
|
_Enko
|
Ahora que estoy en casa, me pude armar la tabla: mov al, -128;al = 80h mov al, -2 ;al = FEh mov al, -1; ;al = FFh mov al, 0 ;al = 0h mov al, 127 ;al = 7F mov al, 128 ;al = 80h mov al, 255 ;al = FFh
Fijate que -128 y 128 tienen el mismo valor: 80h. y tambien -1 y 255 valen FFh. Ahora la respuesta a tus dos preguntas: Es el programador quien decide como tratarlos. En el caso de un lenguaje de alto nivel como C, ya existe un tipo de dato predefinido que es con o sin signo. En ensamblador el tipo de datos es el mismo BYTE, WORD, DWORD pero depende de como lo armes tu: mov eax, 80h cmp eax, 128 ;ZF set, son iguales cmp eax, -128;ZF set, son iguales
Rara vez he usado enteros con signo. Normalmente en ensamblador se utilizan enteros positivos cosa que el valor se refleje en el registro. Porque generalmente, cuando me ha tocado hacer algo con signo, tambien era un numero real, cosa que para eso esta la FPU.
|
|
« Última modificación: 22 Noviembre 2011, 03:39 am por _Enko »
|
En línea
|
|
|
|
.:UND3R:.
|
Ahora todo aclarado, saludos RHL y _Enko
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Desbordamiento
Programación Visual Basic
|
LeandroA
|
4
|
3,285
|
1 Noviembre 2009, 06:22 am
por LeandroA
|
|
|
Un ataque informático hace que una web foral muestre una bandera española
Noticias
|
wolfbcn
|
2
|
2,360
|
6 Diciembre 2010, 09:51 am
por тαптяα
|
|
|
Crear una bandera
Diseño Gráfico
|
Attaque77
|
2
|
6,737
|
22 Marzo 2011, 16:50 pm
por peib0l
|
|
|
Duda con la bandera [z]
Ingeniería Inversa
|
chEEtos
|
8
|
5,421
|
30 Noviembre 2011, 01:30 am
por chEEtos
|
|
|
Bucle controlado por bandera
Programación C/C++
|
Katerina Dobreva
|
2
|
4,295
|
2 Noviembre 2014, 16:49 pm
por Katerina Dobreva
|
|