Bitte aktiviere JavaScript!
8086/88 Assembler Register
Der Registersatz des 8086-Prozessoors

Der Mikroprozessor besitzt eine Reihe von Registern, in denen der Entwickler Daten oder Zwischenergebnisse ablegen kann. Beim 8086-Prozessor gibt es neben den allgemeinen Registern zudem noch Segmentregister, die zur Bildung von vollständigen Adressen benötigt werden.

Der Assemblerprogrammierer kann einen Prozessor als einen Satz von Registern ansehen, deren Inhalte sich mit dem Befehlsvorat auf ganz unterschiedliche Weise modifizieren lässt. In den Registern übergibt der Entwickler zum Beispiel die Operanden für arithmetische Operationen, oder er speichert temporäre Ergebnisse. Die Register sind sozusagen die Variablen.

Der 8086 kennt Daten-, Zeiger-/Index-, Segment- und Kontrollregister.

Die 14 Register des 8086 lassen sich in allgemeine Register und in Register für besondere Aufgaben unterteilen. Eine weitergehende Unterteilung kennt Datenregister, Zeiger- und Indexregister, Segment- und Kontrollregister. Als allgemeine oder Datenregister gelten AX, BX, CX und DX, die jeweils 16 Bit breit sind. Dabei lässt sich die obere Hälfte (das höherwertige Byte) und die untere Hälfte (das niederwertige Byte) auch einzeln ansprechen. So teilt sich das AX-Register (Akkumulator) in die 8-Bit-Register AL (niederwertiges Byte) und AH (höherwertiges Byte). Die Datenregister können der als 8-Bit- oder als 16-Bit-Regtster verwendet werden. Die Vorteile dieser Registeraufspaltung findet sich bei ASCII-Zeichen oder an Zahlen kleiner als 256. Die Register können fast frei verwendet werden. Der Loop-Befehl für Schleifen, erwartet das-CX-Register als Zähler. Das AX-Register wird meist für den Austausch beliebiger Daten zwischen verschiedenen Registern und Speicherzellen, das BX-Register als Basisregister (Base Register) bei der Adressierung von Speicherzellen, das DX-Register (Data Register) für allgemeine Daten. Das DX-Register hat nur einen speziellen Verwendungszweck. Es enthält die Nummer des Ein-/Ausgabekanals bei entsprechenden Port-Instruktionen.

AX Akkumulator
AH | AL
BX Basis
BH | BL
CX Zähler
CH | CL
DX Daten
DH | DL

Die Gruppe der Zeiger- und Indexregister besteht aus vier 16 Bit breiten Registern: dem Basiszeiger BP (Base Pointer), dem Stapelzeiger SP (Stack Pointer), dem Quellindexregister SI (Source Index) und dem Zielindexregister DI (Destination Index).

SP Stapelzeiger
BP Basizeiger
SI Quellindex
DI Zielindex

Die vier Segmentregister CS (Code Segment), DS (Data Segment), ES (Extra Segment) und SS (Stack Segment) sind notwendig, um Speicheradressierung beim 8086 zu verwalten. Um einen l MByte großen Adreßraum anzusprechen, sind 20 Adreßleitungen notwendig, die für die Adressierung der Speicherzellen zuständigen Register sind aber nur 16 Bit breit. Daher wird eine 20-Bit-Adresse in Segment und Offset aufgeteilt. Der Offset stellt dabei die untere Hälfte der Adresse dar und entstammt dem jeweiligen 16-Bit-Register. Dazu wird der Inhalt eines der vier Segmentregister als Segment addiert, nachdem es mit 16 multipliziert worden ist.

CS Codesegment
DS Datensegment
SS Stapelsegment
ES Extrasegment

Die Kontrollregister des 8086 enthalten den IP (Instuction Pointer) und das Statusregister PSW(Processor Status Word). Der Befehlszeiger IP enthält die Adresse des nächsten auszuführenden Befehls, der immer im Zusammenhang mit dem Segmentregister CS gebraucht wird. Das Register IP kann nicht als allgemein verwendbares Register benutzt werden.

IP Befehlszeiger

Das Statusregister (oder Flagregister) ist eine Sammlung von einzelnen Statusindikatoren. Dabei dienen sechs Bit dazu, den Zustand der letzten arithmetischen Operation anzuzeigen. Die übrigen Bits des Statusregisters können vom Programmierer durch entsprechende Assembleranweisungen gezielt gesetzt oder gelöscht werden. Über sie lässt sich etwa die Behandlung von Interrups unterbinden, ein spezieller Einzelschrittmodus zum Testen von Programmen einschalten oder die Richtung bei Zeichenkettenoperationen festlegen.

Statusbits Flags
15 - -
14 - -
13 - -
12 - -
11 OF Overflow Flag
10 DF Direction Flag
09 IF Interrupt-Enable Flag
08 TF Trap Flag
07 SF Sign Flag
06 ZF Zero Flag
05 - -
04 AF AL-Carry Flag
03 - -
02 PF Parity Flag
01 - -
00 CF Carry Flag