2.2 Registro de Banderas
• Conjunto de bits que nos dan información sobre el
estado del procesador y sobre el resultado de la
última operación efectuada.
• Es el único registro accesible a nivel de bits.
• Algunos de estos bits son:
– CF: Carry flag - ZF: Zero flag
– SF: Sign flag
- OF: Overflow
flag
– IF: Interrupt flag - DF: Direction
flag
........
OF DF IF SF ZF CF
Bandera de Acarreo.

CF (Carry Flag, bit 0): Si vale 1, indica
que hubo "arrastre" (en caso de suma) o
"préstamo" (en caso de resta). Este
indicador es usado por instrucciones
que suman o restan números que
ocupan varios bytes. Las instrucciones
de rotación pueden aislar un bit de la
memoria o de un registro poniéndolo en
el CF.
Ejemplo Acarreo
MOV AL,FF H
 MOV BL,55 H
 ADD AL,BL


CF=1
Ejemplo Acarreo
MOV CL,99 H
 MOV AH,AC H
 ADD CL,AH


CF=1
Ejemplo Acarreo
MOV BH,011 H
 MOV BL,42 H
 ADD BH,BL


CF=0
Bandera de Paridad.

PF (Parity Flag, bit 2): Si vale uno, el
resultado tiene paridad par, es decir, un
número par de bits a 1. Este indicador
se puede utilizar para detectar errores
en transmisiones.
Ejemplo Paridad
Mov Ax, FFFFh
 Mov Bx, 1h
 ADD Ax,Bx
 PF=1

Ejemplo Paridad
Mov AL, 4Fh
 Mov BL, 40h
 ADD AL,BL
 PF=0

Ejemplo Paridad
Mov Ax, 1
 Mov Bx, 0
 ADD Ax,Bx
 PF=1

Bandera de Acarreo Auxiliar.

AF (Auxiliary carry Flag, bit 4): Si vale 1,
indica que hubo "arrastre" o "préstamo"
del nibble (cuatro bits) menos
significativo al nibble más significativo.
Este indicador se usa con las
instrucciones de ajuste decimal.
Ejemplo acarreo auxiliar
Mov Al, 37H
 Mov Bl, 2H
 Div Al, Bl


AF=1
Ejemplo acarreo auxiliar
Mov Al, 45H
 Mov Bl, 2H
 Div Al, Bl


AF=1
Ejemplo acarreo auxiliar
Mov Al, 70H
 Mov Bl, 2H
 Div Al, Bl


AF=0
Bandera de Zero.

ZF (Zero Flag, bit 6): Si este indicador
vale 1, el resultado de la operación es
cero.
Zero Flag Ejemplo:

un caso es cuando restamos dos números iguales, adjunto un ejemplo:
EAX = 100
ECX = 200
SUB EAX,EAX ; Resultado = 0 ZF = 1
ADD EAX,ECX ; Resultado = 200 ZF = 0
Cambiar la bandera Z es distinto a invertir el salto, ya que la
modificación de la bandera generará un cambio del comportamiento
del ejecutable sólo en tiempo de ejecución, a diferencia de invertir un
salto como por ejemplo:
JE por JNE
JB por JA
etc
al ser guardados los cambios del ejecutable generaremos un cambio
permanente
Ejemplo bandera zero
Mov AH, FF H
 Mov CL, FF H
 SUB AH, CL


ZF=1
Ejemplo bandera zero
Mov BH, 01 H
 DEC BH


ZF=0
Ejemplo bandera zero
Mov BL, 55 H
 Mov AL, 55 H
 SUB AL, BL


ZF=1
Bandero de Asigno.

SF (Sign Flag, bit 7): Refleja el bit más
significativo del resultado. Como los
números negativos se representan en la
notación de complemento a dos, este bit
representa el signo: 0 si es positivo, 1 si
es negativo.
Ejemplo Sign Flag
Mov Ax, 1H
 Mov Bx, 2H
 Sub Ax, Bx
 -1
 SF=0

Ejemplo Sign Flag
Mov Ax, 2H
 Mov Bx, 4H
 Sub Ax, Bx
 -2
 SF=0

Ejemplo Sign Flag
Mov Ax, 2H
 Mov Bx, 2H
 ADD Ax, Bx
4
 SF=1

Bandera de Trampa.

TF (Trap Flag, bit 8): Si vale 1, el
procesador está en modo paso a paso.
En este modo, la CPU automáticamente
genera una interrupción interna después
de cada instrucción, permitiendo
inspeccionar los resultados del
programa a medida que se ejecuta
instrucción por instrucción.
Bandera de Interrupcion.

IF (Interrupt Flag, bit 9): Si vale 1, la
CPU reconoce pedidos de interrupción
externas. Si vale 0, no se reconocen
tales interrupciones
Bandera de Direccion.

DF (Direction Flag, bit 10): Si vale 1, las
instrucciones con cadenas sufrirán
"auto-decremento", esto es, se
procesarán las cadenas desde las
direcciones más altas de memoria hacia
las más bajas. Si vale 0, habrá "autoincremento", lo que quiere decir que las
cadenas se procesarán de "izquierda a
derecha".
Bandera de Desbordamiento.

OF (Overflow flag, bit 11): Si vale 1,
hubo un desborde en una operación
aritmética con signo, esto es, un dígito
significativo se perdió debido a que
tamaño del resultado es mayor que el
tamaño del destino.
Ejemplo Overflow

mov al, 255/2
add al, 1
;hay overflow, al= 128
Ejemplo Overflow

mov al, 140/2
add al, 1
;hay overflow, al= 71
Ejemplo Overflow

mov al, 25/2
add al, 1
;No hay overflow, al= 13
GRACIAS
Descargar

Diapositiva 1 - wiki