Grundlagen der 8086-Architektur: Flags, Segmente & Interrupts
Eingeordnet in Informatik
Geschrieben am in
mit einer Größe von 3,88 KB
Die Flags des 8086-Prozessors
Von den neun Flags ändern sechs nach der Ausführung vieler arithmetischer und logischer Instruktionen ihren Zustand. Die sechs Flags sind:
- C (Carry): Zeigt einen Übertrag nach einer Addition oder ein Borgen nach einer Subtraktion an. Das Carry-Flag signalisiert zudem Fehlerzustände bei bestimmten Programmen und Verfahren.
- P (Parity): Ist 0 für ungerade Parität und 1 für gerade Parität.
- A (Auxiliary Carry): Zeigt einen Übertrag oder ein Borgen von Bit 3 auf Bit 4 an.
- Z (Zero): Gibt an, ob das Ergebnis einer Operation Null ist. Wenn Z = 1, ist das Ergebnis Null; wenn Z = 0, ist es ungleich Null.
- S (Sign): Gibt das Vorzeichen des Ergebnisses nach Addition oder Subtraktion an. Wenn S = 1, ist das Ergebnis negativ; wenn S = 0, ist es positiv.
- O (Overflow): Tritt bei der Addition oder Subtraktion vorzeichenbehafteter Zahlen auf, wenn das Ergebnis die Kapazität der Maschine überschreitet.
Die anderen drei Flags dienen der Steuerung des Mikroprozessors:
- T (Trap): Dieser Modus wird von Debuggern verwendet, um Instruktionen einzeln auszuführen und deren Wirkung auf Register und Speicher zu beobachten.
- I (Interrupt): Der Zustand dieses Flags wird durch die Instruktionen STI (Set Interrupts) und CLI (Clear Interrupts) gesteuert.
- D (Direction): Steuert die Auswahl von Autoincrement oder Autodecrement der DI- oder SI-Register für String-Instruktionen.
Segmente und Adressierung
Ein Segment ist ein spezieller Speicherbereich, der an einer Absatzgrenze beginnt, also an einer durch 16 (10H) teilbaren Adresse. Der 8086 definiert vier Segmente:
- DS: Data Segment
- SS: Stack Segment
- CS: Code Segment
- ES: Extra Segment
Alle Speicheradressen beziehen sich auf die Startadresse eines Segments. Der Abstand in Bytes von der Segmentadresse wird als Offset bezeichnet.
Hinweis: Ein Programm kann ein oder mehrere Segmente enthalten, die fast überall im Speicher liegen, in der Größe variieren und in beliebiger Reihenfolge angeordnet sein können.
Adressierungsarten
Diese Prozessoren unterstützen 27 Adressierungsarten, darunter:
- Inhärente Adressierung: Der Operand ist in der Instruktion implizit (z. B. Multiplikation mit AX).
- Registeradressierung: Der Operand befindet sich in einem Register des Mikroprozessors.
- Sofortadressierung: Der Operand ist ein direkter Zahlenwert innerhalb der Instruktion.
Was sind Interrupts?
Interrupts sind Routinen oder Befehlssätze, die vom Prozessor, dem BIOS oder dem Betriebssystem definiert sind. Sie werden durch ein Programm (Software-Interrupts) oder ein Hardware-Ereignis (Hardware-Interrupts) ausgelöst.
Arten von Interrupts
- Hardware: Im BIOS implementiert.
- Software: Durch das Betriebssystem definiert.
Zweck
Sie dienen der Steuerung, Verwaltung und Kommunikation zwischen Programmen, Hardware und Betriebssystem, z. B. für die Ein-/Ausgabe-Steuerung oder das Dateisystem.
Speicherort
Sie befinden sich im unteren Speicherbereich zwischen den Adressen 0000:0000 und 0000:0400. Dieser Bereich wird als Interrupt-Vektor-Tabelle bezeichnet.
Identifikation und Ausführung
Interrupts werden durch eine hexadezimale Zahl identifiziert (z. B. 10H). In Assembler wird ein Interrupt mit der INT-Instruktion ausgeführt. Hardware-Interrupts können nicht direkt per Software aufgerufen werden.