- Distinguere tra flag di stato (condizione) e flag di controllo
- Configurare il comportamento della CPU tramite i flag di controllo
- Interpretare i segnali della ALU tramite i flag di stato
- Utilizzare il debugger di emu8086 per monitorare l'intero registro FLAGS
Il Registro dei Flags è un registro speciale a 16 bit dell'architettura x86, di cui solo 9 bit sono effettivamente utilizzati.
differenza degli altri registri (come AX o BX) che contengono dati numerici o indirizzi, il registro dei Flags funge da pannello di controllo e di segnalazione: ogni suo bit attivo è un "interruttore" indipendente che indica lo stato della CPU dopo un'operazione o ne condiziona il comportamento futuro.
Il registro dei Flag è l'unico registro della CPU dove ogni singolo bit ha un compito specifico. Per studiarli meglio, li dividiamo in due tabelle separate in base alla loro funzione.
Flag di Stato (Status Flags)
Questi 6 bit reagiscono automaticamente alle operazioni aritmetiche e logiche della ALU.
| Flag | Nome | Significato quando è impostato a 1 |
|---|---|---|
| CF | Carry Flag | Riporto (somma) o prestito (sottrazione) oltre il bit più significativo. |
| ZF | Zero Flag | Il risultato dell'operazione è esattamente zero. |
| SF | Sign Flag | Il risultato è negativo (copia il bit di segno MSB). |
| OF | Overflow Flag | Errore di segno: il risultato eccede il range dei numeri con segno. |
| PF | Parity Flag | Il numero di bit "1" nel byte meno significativo del risultato è pari. |
| AF | Auxiliary Carry | Riporto/Prestito tra il terzo e il quarto bit (usato per calcoli BCD). |
2. Flag di Controllo (Control Flags)
Questi 3 bit sono istruzioni impartite dal programmatore alla CPU per modificarne il modo di lavorare.
| Flag | Nome | Funzione |
|---|---|---|
| DF | Direction Flag | 0: Elaborazione stringhe in avanti. 1: Elaborazione stringhe all'indietro. |
| IF | Interrupt Flag | 1: La CPU risponde agli interrupt esterni. 0: Gli interrupt sono disabilitati. |
| TF | Trap Flag | Attiva la modalità Single Step: la CPU si ferma dopo ogni istruzione (usato dai debugger). |
Come visualizzare i flag in emu8086
- Scrivi il tuo programma nell'editor.
- Clicca sul tasto Emulate.
- Nella finestra in basso trovi il pulsante che ti permette di aprire la finestra dei flags: cliccalo e si aprirà la finestra con gli 8 flags in quanto il flag TF rimane nascosto.