310 likes | 482 Views
Comunidad quetzalcoatl INTEGRANTES: JhONATHAN ( Itzmin ) HIRAM(EHECATL) RUBEN(t epiltzín ). . . . . . . . . OF DF IF SF ZF CF. 2.2 Registro de Banderas.
E N D
Comunidad quetzalcoatlINTEGRANTES:JhONATHAN(Itzmin)HIRAM(EHECATL)RUBEN(tepiltzín)
. . . . . . . . OF DF IF SF ZF CF 2.2 Registro de Banderas • Conjunto de bits que nos daninformaciónsobre el estado del procesador y sobre el resultado de la últimaoperaciónefectuada. • Es el únicoregistroaccesible 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
Bandera de Acarreo. • CF (CarryFlag, 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 (ParityFlag, 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 • MovAx, FFFFh • MovBx, 1h • ADD Ax,Bx • PF=1
Ejemplo Paridad • MovAL, 4Fh • MovBL, 40h • ADD AL,BL • PF=0
Ejemplo Paridad • MovAx, 1 • MovBx, 0 • ADD Ax,Bx • PF=1
Bandera de Acarreo Auxiliar. • AF (AuxiliarycarryFlag, 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 • MovBl, 2H • Div Al, Bl • AF=1
Ejemplo acarreo auxiliar • Mov Al, 45H • MovBl, 2H • Div Al, Bl • AF=1
Ejemplo acarreo auxiliar • Mov Al, 70H • MovBl, 2H • Div Al, Bl • AF=0
Bandera de Zero. • ZF (ZeroFlag, 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 = 100ECX = 200SUB EAX,EAX ; Resultado = 0 ZF = 1ADD EAX,ECX ; Resultado = 200 ZF = 0Cambiar 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 JNEJB por JAetcal 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 (SignFlag, 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 SignFlag • MovAx, 1H • MovBx, 2H • Sub Ax, Bx • -1 • SF=0
Ejemplo SignFlag • MovAx, 2H • MovBx, 4H • Sub Ax, Bx • -2 • SF=0
Ejemplo SignFlag • MovAx, 2H • MovBx, 2H • ADD Ax, Bx • 4 • SF=1
Bandera de Trampa. • TF (TrapFlag, 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 (InterruptFlag, 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 (DirectionFlag, 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á "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".
Bandera de Desbordamiento. • OF (Overflowflag, 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/2add al, 1;hay overflow, al= 128
Ejemplo Overflow • mov al, 140/2add al, 1;hay overflow, al= 71
Ejemplo Overflow • mov al, 25/2add al, 1;No hay overflow, al= 13