Escolar Documentos
Profissional Documentos
Cultura Documentos
indica o estado do microprocessador aps a execuo de cada instruo; conjunto de bits individuais, cada qual indicando alguma propriedade; subdividem-se em: Flags de Estado (status) e Flags de Controle. organizao: 1 registrador de 16 bits 6 FLAGS de estado 3 FLAGS de controle 7 bits no utilizados (sem funo)
15 14 13 12
11 10 9 OF DF IF
8 7 TF SF
6 ZF
4 AF
2 PF
0 CF
Nome Carry Flag Parity Flag Auxiliary Carry Zero Flag Sign Flag Overflow Flag
Flags de estado Smbolo Funo/caracterstica CF Indicador de "vai-um" PF Indicador de nmero PAR de 1's no byte inferior AF Indicador de "vai-um" para operaes em BCD ZF Indicador de "zero" na ltima operao SF Indicador de resultado negativo OF Indicador de erro de transbordamento
Obs: o emprego dos Flags de Controle ser discutido juntamente com operaes com arrays e interrupes.
Cap4.2
Overflow ->
ocorre porque a representao dos nmeros est limitada a uma certa faixa
Qualquer operao aritmtica que tenha como resultado um nmero fora da faixa de representao, estar produzindo Overflow. O resultado armazenado no registrador destino estar truncado e ter, portanto, um valor incorreto.
Tem-se dois Flags que podem indicar overflow: CF e OF CF -> indica se h um vai-um para fora do Bit Mais Significativo do nmero MSB (most significant bit) OF -> testa o vem-um que chega e o vai-um gerado no MSB: se iguais (0 e 0 ou 1 e 1) -> OF = 0 se diferentes, OF = 1
Cap4.3
ADD AL,BL
FFh 01h
->
Logo aps a execuo da instruo: CF = 1 , indicado em negrito; OF = 0 , pois no MSB o "vem-um" igual ao "vai-um" (ambos 1).
ADD AL,BL
7Fh 7Fh
->
Logo aps a execuo da instruo: CF = 0 , indicado em negrito; OF = 1 , pois no MSB o "vem-um" diferente do "vai-um".
-> ->
Cap4.4
4.3 Como as instrues afetam os Flags Algumas instrues, imediatamente aps a sua execuo: afetam todos os Flags; afetam apenas alguns; no afetam nenhum. Instruo MOV XCHG LEA ADD/SUB INC/DEC NEG Exemplos: ADD AX,BX FFFFh FFFFh FFFEh ;onde ambos AX e BX valem FFFFh 1111 1111 1111 1111 b 1111 1111 1111 1111 b 1 1111 1111 1111 1110 b CF = 1 PF = 0 AF = 1 SF = 1 ZF = 0 OF = 0 Flags afetados nenhum nenhum nenhum todos todos, exceto CF que no afetado todos, CF=1 se o resultado no for zero
Como resultado:
Como resultado:
Cap4.5
O programa DEBUG O programa DEBUG do DOS prov um meio de depurao de programas em Linguagem Montadora e permite acompanhar a modificao do contedo de registradores (inclusive o de Flags). Escrevendo um programa de teste e verificao dos Flags:
TITLE PROGRAMA PARA VERIFICACAO DOS FLAGS ; ;usado no DEBUG para verificar o registradores de Flags ; .MODEL SMALL .STACK 100H .CODE MOV AX,4000H ;AX = 4000h - valor inicial de AX ADD AX,AX ;AX = 8000h (4000h + 4000h = 8000h) SUB AX,0FFFFH ;AX = 8001h (8000h - FFFFh = 8001h) NEG AX ;AX = 7FFFh (C2 de 8001h) INC AX ;AX = 8000h (7FFFh + 0001h = 8000h) MOV AH,4CH INT 21H ;saida para o DOS END
Acesso ao DEBUG: C:\ DEBUG <nome_do_programa>.EXE alguns comandos de linha do DEBUG -r -> "registers", para exibir o contedo dos registradores -t -> "trace", para executar linha por linha -g -> "go", para ir at o fim -q -> "quit", para sair do DEBUG
Cap4.6
(aqui falta pgina colada com o programa extrado da tela do DOS: consulte a apostila do curso, disponvel no Xerox)
Cap4.7
Smbolo quando 1 Flag de Estado CF PF AF ZF SF OF Flag de Controle DF IF CY (carry) PE (parity even - PAR) AC (auxiliary carry) ZR (zero) NG (negativo) OV (overflow) DN (down - para baixo) EI (permite interrupo)
Smbolo quando 0 NC (no carry) PO (parity odd - IMPAR) NA (no aux. carry) NZ (no zero) PL (plus - positivo) NV (no overflow) UP (up - para cima) DI (desabilita interup.)