Mikroprozessor - 8086 Funktionseinheiten

Der 8086-Mikroprozessor ist in zwei Funktionseinheiten unterteilt, d. H. EU (Ausführungseinheit) und BIU (Busschnittstelleneinheit).

EU (Execution Unit)

Die Ausführungseinheit gibt der BIU Anweisungen, aus denen hervorgeht, woher die Daten abgerufen und diese Anweisungen dann dekodiert und ausgeführt werden sollen. Seine Funktion besteht darin, Operationen an Daten unter Verwendung des Befehlsdecoders & ALU zu steuern. Die EU hat keine direkte Verbindung zu Systembussen, wie in der obigen Abbildung gezeigt. Sie führt Operationen über Daten über die BIU durch.

Lassen Sie uns nun die funktionalen Teile von 8086-Mikroprozessoren diskutieren.

ALU

Es verarbeitet alle arithmetischen und logischen Operationen wie +, -, ×, /, ODER, UND, NICHT Operationen.

Flag Register

Es ist ein 16-Bit-Register, das sich wie ein Flip-Flop verhält, dh seinen Status entsprechend dem im Akkumulator gespeicherten Ergebnis ändert. Es hat 9 Flags und sie sind in 2 Gruppen unterteilt - Bedingte Flags und Kontrollflags.

Bedingte Flaggen

Es stellt das Ergebnis der letzten ausgeführten arithmetischen oder logischen Anweisung dar. Es folgt die Liste der bedingten Flags -

  • Carry flag - Dieses Flag zeigt eine Überlaufbedingung für arithmetische Operationen an.

  • Auxiliary flag- Wenn eine Operation an der ALU ausgeführt wird, führt dies zu einem Übertrag / Schubkarren vom unteren Halbbyte (dh D0 - D3) zum oberen Halbbyte (dh D4 - D7), dann wird dieses Flag gesetzt, dh der durch das D3-Bit zu D4 gegebene Übertrag wird gesetzt AF-Flagge. Der Prozessor verwendet dieses Flag, um eine Binär-BCD-Konvertierung durchzuführen.

  • Parity flag- Dieses Flag wird verwendet, um die Parität des Ergebnisses anzuzeigen. Wenn also die 8 Bits niedrigerer Ordnung des Ergebnisses eine gerade Anzahl von Einsen enthalten, wird das Paritätsflag gesetzt. Bei einer ungeraden Anzahl von Einsen wird das Paritätsflag zurückgesetzt.

  • Zero flag - Dieses Flag wird auf 1 gesetzt, wenn das Ergebnis einer arithmetischen oder logischen Operation Null ist, andernfalls wird es auf 0 gesetzt.

  • Sign flag - Dieses Flag enthält das Vorzeichen des Ergebnisses, dh wenn das Ergebnis der Operation negativ ist, wird das Vorzeichenflag auf 1 gesetzt, andernfalls auf 0.

  • Overflow flag - Dieses Flag repräsentiert das Ergebnis, wenn die Systemkapazität überschritten wird.

Kontrollflaggen

Steuerflags steuern die Operationen der Ausführungseinheit. Es folgt die Liste der Kontrollflags -

  • Trap flag- Es wird für die Einzelschrittsteuerung verwendet und ermöglicht es dem Benutzer, jeweils eine Anweisung zum Debuggen auszuführen. Wenn es eingestellt ist, kann das Programm in einem Einzelschrittmodus ausgeführt werden.

  • Interrupt flag- Es handelt sich um ein Interrupt-Aktivierungs- / Deaktivierungs-Flag, das verwendet wird, um die Unterbrechung eines Programms zuzulassen / zu verhindern. Sie wird für den Interrupt-aktivierten Zustand auf 1 und für den Interrupt-deaktivierten Zustand auf 0 gesetzt.

  • Direction flag- Es wird im String-Betrieb verwendet. Wie der Name schon sagt, wird beim Setzen auf String-Bytes von der höheren Speicheradresse auf die niedrigere Speicheradresse zugegriffen und umgekehrt.

Allzweckregister

Es gibt 8 Allzweckregister, dh AH, AL, BH, BL, CH, CL, DH und DL. Diese Register können einzeln zum Speichern von 8-Bit-Daten und paarweise zum Speichern von 16-Bit-Daten verwendet werden. Die gültigen Registerpaare sind AH und AL, BH und BL, CH und CL sowie DH und DL. Es wird auf AX, BX, CX bzw. DX bezogen.

  • AX register- Es wird auch als Akkumulatorregister bezeichnet. Es wird verwendet, um Operanden für arithmetische Operationen zu speichern.

  • BX register- Es wird als Basisregister verwendet. Es wird verwendet, um die Startbasisadresse des Speicherbereichs innerhalb des Datensegments zu speichern.

  • CX register- Es wird als Zähler bezeichnet. Es wird im Schleifenbefehl zum Speichern des Schleifenzählers verwendet.

  • DX register - In diesem Register wird die E / A-Portadresse für den E / A-Befehl gespeichert.

Stapelzeigerregister

Es ist ein 16-Bit-Register, das die Adresse vom Beginn des Segments bis zum Speicherort enthält, an dem zuletzt ein Wort auf dem Stapel gespeichert wurde.

BIU (Bus Interface Unit)

Die BIU kümmert sich um alle Daten- und Adressübertragungen auf den Bussen für die EU wie das Senden von Adressen, das Abrufen von Anweisungen aus dem Speicher, das Lesen von Daten aus den Ports und dem Speicher sowie das Schreiben von Daten in die Ports und den Speicher. Die EU hat keine Richtungsverbindung mit Systembussen, daher ist dies mit der BIU möglich. EU und BIU sind mit dem internen Bus verbunden.

Es hat die folgenden Funktionsteile -

  • Instruction queue- BIU enthält die Anweisungswarteschlange. Die BIU ruft bis zu 6 Bytes der nächsten Anweisungen ab und speichert sie in der Anweisungswarteschlange. Wenn die EU Anweisungen ausführt und für ihre nächste Anweisung bereit ist, liest sie einfach die Anweisung aus dieser Anweisungswarteschlange, was zu einer erhöhten Ausführungsgeschwindigkeit führt.

  • Das Abrufen des nächsten Befehls, während der aktuelle Befehl ausgeführt wird, wird aufgerufen pipelining.

  • Segment register- BIU verfügt über 4 Segmentbusse, dh CS, DS, SS und ES. Es enthält die Adressen von Anweisungen und Daten im Speicher, die vom Prozessor für den Zugriff auf Speicherorte verwendet werden. Es enthält auch 1 Zeigerregister IP, das die Adresse des nächsten von der EU auszuführenden Befehls enthält.

    • CS- Es steht für Code Segment. Es wird zum Adressieren eines Speicherorts im Codesegment des Speichers verwendet, in dem das ausführbare Programm gespeichert ist.

    • DS- Es steht für Data Segment. Es besteht aus Daten, die vom Programm verwendet werden und auf die im Datensegment über eine Versatzadresse oder den Inhalt eines anderen Registers zugegriffen wird, das die Versatzadresse enthält.

    • SS- Es steht für Stack Segment. Es verwaltet den Speicher, um Daten und Adressen während der Ausführung zu speichern.

    • ES- Es steht für Extra Segment. ES ist ein zusätzliches Datensegment, das von der Zeichenfolge verwendet wird, um die zusätzlichen Zieldaten zu speichern.

  • Instruction pointer - Es ist ein 16-Bit-Register, das die Adresse des nächsten auszuführenden Befehls enthält.