Der 8080 ist ein Prozessor mit einer Wortbreite
von 8 Bit. Er wurde von der
Firma Intel erstmals im Jahre
produziert und enthält 4800
Transistoren auf einer Fläche von etwa 22
. Die interne Struktur des 8080
ist schematisch in Bild 7.1 dargestellt. Er
hat 16 Adreßleitungen
für einen Adreßraum von 64 kByte
und eine Befehlszykluszeit von etwa
2
. Die Belegung der 40
Anschlußkontakte und die
Registerstruktur sind in Abb. 7.5dargestellt.
1mm
Die Befehlsausführung erfolgt im Prinzip
gemäß Bild 7.3 mit 1 bis
5 Maschinenzyklen M, die jeweils aus 3 bis 5
Maschinentakten T sowie gegebenfalls
zusätzlichen Wartetakten bestehen.
Der Datentransfer auf dem bidirektionalen
Datenbus D7 ...D0 wird von
Steuersignalen begleitet. Während des
Synchronisiersignals SYNC, das zu
Beginn jedes Maschinenzyklus aktiviert wird
(SYNC = 1), führt der Datenbus
eine Statusinformation über den momentan
laufenden Maschinenzyklus, die von
den angeschlossenen Logikschaltkreisen zur
Steuerung der Speicher- und
Ein-/Ausgabe-Register genutzt werden kann. Die
Signale DBIN (data bus in) und
(write) zeigen bei DBIN =
1 Dateneingabebereitschaft und bei
stabile Ausgabedaten auf dem Datenbus
an. Im Maschinenzyklus
wird
das Eingangssignal READY getestet. Bei READY =
0 werden Wartezustände
bis zum Vorliegen gültiger Daten aus dem
Speicher oder von einem externen
Register eingefügt. Den Wartezustand zeigt der
Prozessor mit WAIT
an.
Eine Interruptanforderung am maskierbaren
Eingang INT wird nach Ablauf der
Befehlsausführung mit dem Statussignal INTA
zeitsynchron zu SYNC quittiert.
Hiermit kann die Eingabe eines Restart-Befehls
(RST) gesteuert werden, der den
Beginn der Interruptbedienung je nach Kodierung
bei einer von 8 Adressen 0, 8,
16, ..., 56 () veranlaßt.
Voraussetzung für die Annahme einer
Interruptforderung ist allerdings, daß
sich das Interrupt-Enable-Flipflop im Zustand
,,Enable`` befindet. Dieser Zustand, der am
Prozessoranschluß INTE getestet
werden kann, wird mit dem Befehl EI
(enable interrupt) erreicht.
Ein Eingangssignal HOLD fordert einen Betriebszustand des Mikroprozessors an, bei dem er die Daten- und Adreßbusanschlüsse in den hochohmigen Zustand schaltet. Damit ist der Mikroprozessor vom Bus elektrisch abgetrennt, um z.B. einer Steuerung den Bus für einen direkten Speicherzugriff überlassen zu können. Der HOLD-Zustand wird mit HLDA angezeigt.
Der RESET-Eingang, der nach Einschalten der Betriebsspannungen oder zur Wiederherstellung eines definierten Programmzustands aktiviert wird, schaltet den Befehlszähler auf Null (Programmstart nach RESET ab Speicherzelle 0) und blockiert den Interrupteingang, beeinflußt aber nicht die Registerinhalte des Mikroprozessors. Der Mikroprozessor 8080 benötigt einen externen 2-Phasen-Takt und die Betriebsspannungen + 5 V, - 5 V und + 12 V. Diese Anforderungen stellen einen Mangel dar, der im Interesse eines einfacheren Mikrorechneraufbaus bei anderen Mikroprozessortypen überwunden wurde.
Die 10 Anschlüsse für die Steuerfunktionen reichen nicht aus. Daher müssen einige Steuersignale über den Datenbus im Zeitmultiplexbetrieb ausgegeben werden. Diese acht zusätzlichen Statusfunktionen (z.B. INTA) erscheinen zu bestimmten Zeitpunkten auf dem Datenbus.
Der für den Programmierer in Assemblersprache wichtige Registerblock (Abb. 7.5b) enthält sechs 8-Bit-Register für freiprogrammierbare Nutzung (Register B, C, D, E, H, L), den Akkumulator (A) sowie den Programmzähler (PC) und den Stack-Pointer (SP), beide mit 16 Bit Länge. Der Stack kann an jeder beliebigen Stelle im Hauptspeicher angelegt werden. Die Flexibilität des Stackmechanismus beim 8080 erlaubt eine nahezu beliebige Schachtelung von Unterprogrammaufrufen. Die Register lassen sich für einige Operationen mit 16 Bit Wortlänge als Registerpaare BC, DE und HL programmieren. Die indirekte Registeradressierung nutzt das Registerpaar HL zum Ablegen der 16 Bit umfassenden Speicheradresse. Das Flag- oder Zustandsregister (PSW -- Prozessor-Status-Wort) gibt den Prozessorzustand oder das Ergebnis nach Ausführung von Befehlen an:
Ein weiteres Zustandsbit ist der Hilfsübertrag (AC, auxiliary carry), der einem Übertrag vom Bit 3 zum Bit 4 entspricht und vor allem bei BCD-Operationen angewendet wird, aber im Gegensatz zu den anderen Zustandsbits nicht für bedingte Sprung- und Rufoperationen nutzbar ist.