EFLAGS
Das EFLAGS (Programmstatus und Kontrollregister) Register ist 32 Bit groß, wobei jedes Bit ein Flag repräsentiert. Es beinhaltet Status-Informationen über das laufende Programm und erlaubt anwendungsbasierte Prozessorkontrolle. Das Register kann nicht komplett verändert werden, es können nur die einzelnen Flags gesetzt oder gelöscht werden, meistens auch nur indirekt, in der Form das ein aufgerufener Befehl ein Flag als nebeneffekt ändert.
Inhaltsverzeichnis
Aufbau des EFLAGS-Registers
Im folgenden steht (X) für Systemflag, (S) für Statusflag und (C) für Controlflag
| Bit | Beschreibung |
|---|---|
| 22-31 | Reserviert, nicht verändern |
| 21 | ID - ID Flag (X) |
| 20 | VIP - Virtual Interrupt Pending (X) |
| 19 | VIF - Virtual Interrupt Flag (X) |
| 18 | AC - Alignment Check (X) |
| 17 | VM - Virtual 8086 Mode (X) |
| 16 | RF - Resume Flag (X) |
| 15 | Reserviert, nicht ändern |
| 14 | NT - Nested Task Flag (X) |
| 13 - 12 | IOPL - I/O Privilege Level (X) |
| 11 | OF - Overflow Flag (S) |
| 10 | DF - Direction Flag (C) |
| 9 | IF - Interrupt Enable Flag (X) |
| 8 | TF - Trap Flag (X) |
| 7 | SF - Sign Flag (S) |
| 6 | ZF - Zero Flag (S) |
| 5 | Reserviert, nicht ändern |
| 4 | AF - Auxiliary Carry Flag (S) |
| 3 | Reserviert, nicht ändern |
| 2 | PF - Parity Flag (S) |
| 1 | Reserviert, nicht ändern |
| 0 | CF - Carry Flag (S) |
Statusflags
Die Statusflags (Bits 0,2,4,6,7,11) geben das Ergebnis einer Arithmetischen Operation an (z. B.: ADD, SUB, MUL, DIV). Verwendet werden sie normalerweise in Verbindung mit bedingten Sprüngen, sets, movs, und loops (Jcc, SETcc, MOVcc, LOOPcc; cc = conditional code).
CF - Carry Flag (Bit 0)
Zeigt einen Overflow bei unsigned-Arithmetik an
PF - Parity Flag (Bit 2)
Gesetzt wenn das niederwertige Byte des Ergebnisses eine gerade Anzahl an 1er Bits enthält.
AF - Adjust Flag (Bit 4)
Gesetzt wenn ein Übertrag von Bit 3 stattgefunden hat.
Wird hauptsächlich für BCD Berechnungen verwendet.
ZF - Zero Flag (Bit 6)
Gesetzt wenn das Ergebnis 0 ist.
SF - Sign Flag (Bit 7)
Entspricht dem höherwertigsten Bit des Ergebnisses, also dem Vorzeichenbit bei signed-Berechnungen.
0 steht für einen positiven Wert und 1 für einen negativen.
OF - Overflow Flag (Bit 11)
Gesetzt wenn ein Overflow bei einer signed-Zahl stattgefunden hat.
Controlflags
DF - Direction Flag (Bit 10)
Gibt die Richtung bei Stringoperationen an.
Wenn 0 wird der Zeiger inkrementiert, bei 1 dekrementiert.
Systemflags
Befehle zum direkten Verändern
- PUSHF
- PUSHFD
- POPF
- POPFD
- LAHF
- SAHF