Top-Fragen
Zeitleiste
Chat
Kontext
Intel 8085
8-Bit-Mikroprozessor Aus Wikipedia, der freien Enzyklopädie
Remove ads
Der Intel 8085 ist ein 1976 eingeführter 8-Bit-Mikroprozessor von Intel. Als Nachfolger des Intel 8080 war er zu diesem binär-kompatibel, integrierte jedoch Taktgenerator (8224) und Buscontroller (8228) und besaß eine leistungsfähigere Interrupt-Behandlung. Die 5 im Namen bezog sich auf den Fakt, dass der Prozessor nur eine 5-Volt-Betriebsspannung benötigte. Am Markt konkurrierte der Intel 8085 mit dem im selben Jahr erschienenen Zilog Z80, der ebenfalls binär abwärtskompatibel zum Intel 8080 war. Zum Einsatz kam der Chip in verschiedenen CP/M-Computern, bei der Ausbildung von Elektronikern sowie als Mikrocontroller in Büroschreibmaschinen, Oszilloskopen, aber auch im Rover der Marssonde Pathfinder.[1]
Remove ads
Technische Daten

- Taktfrequenz: 5 MHz (andere Versionen mit 2 MHz, 3 MHz oder 6 MHz)
- Anzahl Transistoren: 6500 bei 3 µm Strukturgröße
- Datenbus: 8 Bit
- Adressbus: 16 Bit
- in der AH Version 20 % weniger Stromverbrauch gegenüber dem normalen 8085
- Direkt adressierbarer Speicher von 64 KB
- 1,3 µs Befehlszyklus (0,8 µs beim 8085AH-2 / 0,67 µs beim 8085AH-1)
- 4 vektorisierte Interrupt-Inputs (einer davon ist nicht maskierbar und ein anderer ist ein 8080A-kompatibler Interrupt)
- binäre 8-bit- und 16-bit-Addition, Unterstützung von 8-bit-BCD-Addition und -Subtraktion (DAA-Befehl)
- 40-Pin-DIL-Package
Neben dem Intel-Original wird der Prozessor auch von anderen Herstellern, teilweise mit verbesserten Eigenschaften, hergestellt. Der schnellste 8085-Prozessor stammt mit 8 MHz vom US-amerikanischen Unternehmen Tundra Semiconductor.
Remove ads
Aufbau
Zusammenfassung
Kontext
Anschlussbelegung und Funktion
- Anschlussbelegung
Register
Die 8-Bit-Register können für 16-Bit-Befehle zu Registerpaaren zusammengenommen werden, dies sind A/FLAG, B/C, D/E und H/L. Die Bildung der Registerpaare ist bei den Stackbefehlen PUSH und POP und bei Adressierungs- und Adressrechnungsbefehlen bedeutsam.
Die allgemeinen Register B, C, D und E dienen im Wesentlichen den logischen und arithmetischen 8-Bit-Operationen, die auch mit den Registern H und L möglich sind, aber vermieden werden sollten. Die letztgenannten Register spielen bei den 16-Bit-Operationen eine gewisse Sonderrolle. Die Ergebnisse der meisten Operationen stehen im Akkumulator A.
Registerpaare
Den Registerpaaren kommen dabei besondere Aufgaben zu, je nach der Art der Adressierung. So können die Registerpaare BC, DE und 'HL' benutzt werden, um in indizierter Adressierung Daten vom Arbeitsspeicher in den Akkumulator A zu lesen oder dorthin zu schreiben. Das Paar HL erlaubt neben dem Akkumulator den Einsatz aller 8 bit-Register A, B, C, D, H oder L als Quelle oder Ziel. Weitere Befehle erlauben den direkten Austausch der Inhalte der Registerpaare DE und HL, den Austausch des Inhalts der aktuellen Stapelspitze (SP+1)(SP) mit HL, den Inhalt von HL in den Stackpointer und auch den Inhalt von HL in den Befehlszähler zu kopieren. Die Registerpaare können inkrementiert, dekrementiert und zum Registerpaar HL addiert werden.
Die Technik mit den Registerpaaren wurde im Nachfolgemodell 8086 wesentlich erweitert.
Zustandsregister
Im Zustandsregister sind fünf der acht Bits belegt. Diese haben bei bedingten Sprüngen und Aufrufen die Aufgabe, zu entscheiden, ob eine Sprung- oder Aufrufbedingung erfüllt ist. Dies sind im Einzelnen N (negativ) bzw. S (sign), Z (zero – Null), H (half carry – Halbübertrag) bzw. AC (Auxiliary Carry – Hilfsübertrag), P (parity – Parität) und C (Carry – Übertrag).
Gesetzt werden die Bits bei allen logischen und arithmetischen 8-Bit-Operationen, nicht jedoch bei Kopier- und Austauschbefehlen. Von den 16-Bit-Befehlen setzt nur die Addition eines Registerpaares zum Paar H/L das Carry-Bit. Wichtig bei Increment- und Decrement-Befehlen ist das Fehlen des C-Bits (Carry), bei 8-Bit-Operationen kann ein Überlauf nur mit dem Z-Bit (Zero) überprüft werden, bei 16-Bitoperationen nur durch nachgeschaltete OR-Befehle.
Interruptregister
Die Belegung des Interruptregisters ist abhängig von Schreib- oder Lesezugriff und Betriebsart unterschiedlich. Das Register dient im Wesentlichen zur Abfrage und Überprüfung von Interruptzuständen und der Maskierung (Sperrung) einzelner Interrupts. Beim Schreiben (SIM-Befehl) in das Register muss Bit 6 immer 0 sein, um das Register zu verändern, darüber hinaus muss Bit 3 (MSE) auf 1 gesetzt sein, um die Interruptmaskierung in den Bits 0 bis 2 zu übernehmen.
Interrupts und Reset
Gegenüber dem Vorgänger 8080 wurde die Interruptsteuerung deutlich erweitert. Neben dem ursprünglichen Interrupt (durch Interrupt-Controller gesteuert) verfügt der 8085 über vier weitere Interrupteingänge. Die vektorisierten Interrupts und der Reset steuern im 8085 feste Adressen an, ein Konzept, das bei den Nachfolgertypen aufgegeben wurde. Ab dem 8086 werden die Interruptadressen in einer Tabelle in den ersten 1024 Bytes gespeichert.
Adressierung
Der 8085 verfügt über einen Adressraum von 64 KBytes für Speicherzugriffe und 256 Adressen für Portzugriffe. Die Unterscheidung zwischen Speicher- und Portzugriff wird durch einen Ausgang IO/M geregelt, bei Portzugriffen liegt hier ein H an, bei Speicherzugriffen ein L. Als Besonderheit gilt, dass bei Portzugriffen die Portadresse sowohl an AD0 bis AD7 als auch an A8 bis A15 anliegen. Die niederwertigen 8 Bits der Adresse sind gemeinsam mit den Datenbus gemultiplext, das bedeutet, sie teilen sich die gleichen Anschlüsse AD0 bis AD7. Die höherwertigen 8 Bits haben eigene Anschlüsse A8 bis A15. Um anzuzeigen, dass eine gültige Adresse am Bus anliegt, gibt der Prozessor am Ausgang ALE (Address Latch Enable) ein H aus. Die Adresse kann dann in einem externen Speicher zwischengespeichert werden, dabei übernimmt ein negativ flankengetriggerter oder positiv pulsgetriggerter externer Speicherbaustein (meist ein D-Flipflop) den Inhalt von AD0 bis AD7 und gibt dies an die niederwertigen acht Bits des reinen Adressbusses aus. In manchen Schaltungen wird zur Verbesserung des Zeitverhaltens auch das höherwertige Adressbyte A8 bis A15 ebenfalls zwischengespeichert, auch wenn dies für den 8085 eigentlich nicht zwingend erforderlich ist.
Über die Ausgänge S0 und S1 wird darüber hinaus der Status des laufenden Maschinenzyklus ausgegeben (siehe Tabelle oben). Durch externe Bausteine kann hiermit eine Adresserweiterung aufgebaut werden, die aber nicht an die Segmentsteuerung der Nachfolgemodelle heranreicht.
Remove ads
Maschinenbefehle
Zusammenfassung
Kontext

Befehlsaufbau
Ein Assembler-Programm besteht aus einer Folge von 8-Bit-Befehlen, in Ausnahmefällen auch Befehlen, die aus 2 aufeinanderfolgenden Bytes bestehen. Die Abarbeitung erfolgt stets sequentiell. Bei einer Wortbreite von 8 Bit sind maximal 256 verschiedene Befehle möglich, von denen beim 8085 aber nur 246 implementiert sind. Bei jedem Befehl enthält das erste Byte den Operationscode (Op-Code), ist also der Operator. Oft ist der Operand, also z. B. der Akkumulator, schon implizit enthalten, dann ist der ganze Befehl nur ein Byte lang. Der Befehl insgesamt kann aber auch 2 oder 3 Byte lang sein:
- 1-Byte-Befehl: Nur Operationscode
- 2-Byte-Befehl: Operationscode + Operand (8-Bit-Konstante oder 8-Bit-Portadresse)
- 3-Byte-Befehl: Operationscode + Operand (16-Bit-Konstante oder 16-Bit-Adresse).
Der Befehlsablauf im Mikroprozessor entspricht dem Von-Neumann-Schema. Zunächst wird der Befehl, auf den der Inhalt des Befehlszählregisters (Program Counter, PC, IC) zeigt, geholt und in den Befehlsdekoder gespeichert. Dort wird er dann dekodiert.

Ein Befehl benötigt 1 bis 5 Maschinenzyklen (Maschine Cycle, Operationszyklen) M1 – M5 Ein Maschinenzyklus besteht aus 3 bis 6 Taktzyklen (States, Operationschritte) T1 – T6.
Je nach Befehl wird eine unterschiedliche Anzahl von Maschinenzyklen abgearbeitet. Dies wird im ersten Maschinenzyklus (Befehlsaufruf, FETCH-Zyklus) erkannt.
Befehlszyklen, Maschinenzyklen, Taktzyklen
Die Zeitspanne für einen Maschinenzyklus beträgt etwa 3–6 Takte bei „alten“ Mikroprozessoren. Typische Maschinenzyklen, die innerhalb eines Befehlszyklus auftreten können, sind:
- Befehlsaufruf (OPCODE-Fetch)
- Speicher lesen (Memory Read)
- Speicher schreiben (Memory Write)
- Stapelspeicher lesen (Stack pop)= zweimal Speicher lesen
- Stapelspeicher einschreiben (Stack push) = zweimal Speicher schreiben
- Eingabe (Input)
- Ausgabe (Output)
Befehlssatz
Remove ads
Beispielprogramm
Zusammenfassung
Kontext
Einfaches Programm mit Ein- und Ausgabe
; Ein Kommentar wird mit einem Semikolon bzw. Strichpunkt eingeleitet, der Text dahinter wird vom Assembler ignoriert
mark: ; eine Marke wird mit einem Doppelpunkt gekennzeichnet
star: IN 01 ;Einlesen des Ports 01
OUT 02 ;Ausgabe am Port 02
JMP star ;Ruecksprung zum Programmanfang
Komplexeres Programm
Dieses Programm stellt ein kleines Lauflicht dar. Es lässt sich mit Bit D7 an der Eingabebaugruppe AN und AUS schalten. Mit Bit D6 wird die Rotationsrichtung festgelegt (rechts oder links) und mit Bit D0 kann man zwischen 2 Laufgeschwindigkeiten wählen. Pause sollte auf 0 und Bit D7 auf 1 gesetzt werden.
;Hauptprogramm
MVI B,01 ;Anfangswert für Rotation
mei: IN 01 ;Ein? (Bit D7=1?)
ANI 80 ;Bitmaske für D7
JZ mei ;-->MEI, wenn nicht "EIN"
MOV A,B ;Lauflicht ansteuern
OUT 02
IN 01 ;Linksrotation? (Bit D6=1?)
ANI 40 ;Bitmaske für D6
JZ rr ;-->RR, wenn keine Linksrotation
MOV A,B
RLC ;nächste Linksrotation
MOV B,A
mv: IN 01 ;schnelle Rotation? (Bit D0=1?)
ANI 01 ;Bitmaske für Bit D0
JZ ze2 ;-->ZE2, wenn langsam
CALL ze1 ;sonst Unterprogramm ZE1 aufrufen
JMP mei
;Rechtsrotation
rr: MOV A,B
RRC ;nächste Rechtsrotation
MOV B,A
JMP mv
;Zeitschleife 1
ze1: LXI D,0001 ;Z laden
mz1: DCX D ;Z:=Z-1
MOV A,D ;Z=0?
ORA E
JNZ mz1 ;-->MZ1, wenn nicht 0
RET ;Rücksprung…
;Zeitschleife 2
ze2: LXI D,0006 ;Z laden
mz2: DCR D ;Z:=Z-1
MOV A,D ;Z=0?
ORA E
JNZ mz2 ;-->MZ2, wenn nicht 0
JMP mei
Programm zum Speicher ausgeben
;Tabellen:
;tab1
ORA 0e100 ;Tabellenadresse
DB 01,02,04,08,10,20,40,80,00
;tab2:
ORG 0e200 ;Tabellenadresse
DB 01,03,07,0F,1F,3F,7F,0FF,00
;Hauptprogramm
ORA 0e000 ;Startadresse
LXI SP,0fc32;Stackpointer mit der Adresse fc32 laden
;eine Null muss bei Hex-Buchstaben vorangestellt werden
LC ;Labeltabelle löschen
;Programmfunktion:
;Marken bzw. Labels werden mit einem Doppelpunkt initialisiert
star: IN 01 ;Der Hex-Wert vom Eingabe Port mit der
;Adresse 01 wird in den Akkumulator geladen
ANI 01 ;UND-Verknüpfung des Hex-Wertes 01 mit dem Akku
JZ sch1 ;Wenn das Zero-Flag gesetzt ist, springe zur Marke "sch1"
JNZ sch2 ;Wenn das Zero-Flag nicht gesetzt ist, springe zur Marke "sch2"
;1. Unterprogramm
sch1: LXI H,0e100 ;Lädt das Registerpaar HL mit der Adresse e100
loo1: MOV A,M ;Der Wert der in der Speicherzelle steht, welche durch das Registerpaar
;HL adressiert ist in den Akku
ORA A ;ODER-Verknüpfung des Akkus mit sich selbst
JZ star ;Wenn das Zero-Flag gesetzt ist, springe zur Marke "star"
OUT 02 ;Der Inhalt des Akkus wird an den Ausgabeport übergeben
INX H ;Die Tabellenadresse in HL wird um den Wert 1 erhöht
CALL 0895 ;UP-Aufruf
;UP für eine Zeitschleife von 0,2 Sekunden
JMP loo1 ;Programmbereich wiederholen, springe nach "loo1"
;2. Unterprogramm
sch2: LXI H,0e200 ;Lädt das Registerpaar HL mit der Adresse E200
loo2: MOV A,M ;Der Wert der in der Speicherzelle steht, welche durch das Registerpaar
;HL adressiert ist in den Akku
ORA A ;ODER-Verknüpfung des Akkus mit sich selbst
JZ star ;Wenn das Zero-Flag gesetzt ist, springe zur Marke "star"
OUT 02 ;Der Inhalt des Akkus wird an den Ausgabeport übergeben
INX H ;Die Tabellenadresse in HL wird um den Wert 1 erhöht
CALL 0895 ;UP-Aufruf
;UP für eine Zeitschleife von 0,2 Sekunden
JMP loo2 ;Programmbereich wiederholen, springe nach "loo2"
stop: JMP stop ;Endlosschleife, um bei einem Fehler das weiterlaufen des
;Programmes zu verhindern.
Remove ads
Simulation
Für die Betriebssysteme Microsoft Windows und Linux gibt es unter anderem den kostenlosen und quelloffenen Simulator GNUSim8085, der unter der GNU General Public License steht.
Peripheriebausteine (Auswahl)
- Intel 8251 Serielle Schnittstelle
- Intel 8253, Intel 8254 Zähler/Zeitgeber
- Intel 8255 Parallele Schnittstelle
- Intel 8257, Intel 8237 DMA-Controller
- Intel 8259 Interrupt-Steuerung
Weblinks
Commons: Intel 8085 – Sammlung von Bildern, Videos und Audiodateien
- Intel 8085 – Sammler-Website mit vielen Bildern
- Intel 8085 microprocessor family. auf CPU-World.com (englisch)
Einzelnachweise
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads