Teubner Studienskripten Elektrotechnik Baur,
Einführung in die Radartechnik 253 Seiten. DM 19,80
Ebel,
Regelungstech...
172 downloads
1667 Views
73MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Teubner Studienskripten Elektrotechnik Baur,
Einführung in die Radartechnik 253 Seiten. DM 19,80
Ebel,
Regelungstechnik 5., überarbeitete und erweiterte Aufl. 215 Seiten. DM 18,80
Ebel,
Beispiele und Aufgaben zur Regelungstechnik
Eckhardt,
Numerische Verfahren in der Energietechnik 208 Seiten. DM 17,80
Fender,
Fernwirken
Freitag,
Einführung in die Zweitortheorie
Frohne,
Einführung in die Elektrotechnik
3., überarbeitete und erweiterte Aufl. 167 Seiten. DM 16,80
112 Seiten. DM 15,80 3., neubearbeitete und
erwe~terte
Aufl. 168 Seiten. DM 16,80
Band 1 Grundlagen und Netzwerke 5., durchgesehene Aufl. 172 Seiten. DM 16,80 Band 2 Elektrische und magnetische Felder 4., durchgesehene Aufl. 281 Seiten. DM 19,80 Band 3 Wechselstrom 4., durchgesehene Aufl. 200 Seiten. DM 17,80 Gad,
Feldeffektelektronik 266 Seiten. DM 19,80
Gerdsen,
Hochfrequenzmeßtechnik 223 Seiten. DM 18,80
Gerdsen,
Digitale Ubertragungstechnik 322 Seiten. DM 21,80
Goerth,
Einführung in die Nachrichtentechnik 184 Seiten. DM 16,80
Haack,
Einführung in die Digitaltechnik 4. Auflage. 232 Seiten. DM 18,80
Harth ,
Halbleitertechnologie 2., überarbeitete Aufl. 135 Seiten. DM 17,80
Heidermanns, Elektroakustik
138 Seiten. DM 15,80 Hilpert,
Halbleiterelemente 3., erweiterte Aufl. 184 Seiten. DM 16,80
Höhnle,
Elektrotechnik mit dem Taschenrechner
Kirschbaum,
Transistorverstärker
228 Seiten. DM 16,80 Band 1 Technische Grundlagen 3., durchgesehene Aufl. 215 Seiten. DM 17,80 Band 2 Schaltungstechnik Teil 1 3., durchgesehene Aufl. 231 Seiten. DM 18,80 Band 3 Schaltungstechnik Teil 2 2., durchgesehene Aufl. 247 Seiten. DM 18,80 Morgenstern, Farbfernsehtechnik 2., überarbeitete und erweiterte Aufl. 260 Seiten. DM 19,80 Morgenstern, Technik der magnetischen Videosignalaufzeichnung
200 Seiten. DM 17,80
Fortsetzung auf der 3. Umschlagseite
Zu diesem Buch Das Skriptum bringt eine Einführung in die Technik der 8-Bit-Mikrocomputer an Hand des Mikroprozessors 8085 und seiner peripheren Bausteine. An die Darstellung der arithmetischen und gerätetechnischen Grundlagen s~hlie ßen sich die Hardware - und Softwarethemen an . Die Hardware-Linie führt von der Struktur des Mikroprozessors 8085 über den Aufbau von lauffähigen Mikrocomputern zum Anschluß von peripheren Geräten an die Ein - /Ausgabebausteine. Ausgehend vom Befehlssatz des Mikroprozessors werden die 8085-Assemblersprache und die Hilfsmittel zur Programmentwicklung erklärt. Zahlreiche Programmbeispiele und Schaltungsvorschläge ergänzen den Stoff. Den Schluß bilden vergleichende Kurz darstellungen der Mikroprozessoren 8088 und Z80 .
·!
Einführung in die Mikrocomputertechnik Grundlagen Programmierung Schaltungstechnik Von Dipl.-Ing.
Rainer Scholze
Professor an der Fachhochschule DIrn
2., überarbeitete und erweiterte Auflage Mit 174 Bildern, 44 Beispielen und 30 Tafeln
B.
G.
Teubner Stuttgart
1987
Prof . Dipl.-Ing. Rainer Scholze 1940 geboren in Warnsdorf/Sudetenland, Ab itur 1960 in Gunzenhausen/Mfr . Nach der Wehrpflicht St udium der Nachrichtentechnik von 1961 bi s 1966 an der Technisc hen Hochschul e München. 1967 Eintritt in die Firma AEG- Telefunken . Nach eineinhalbjähriger Tätigke it in verschiedenen Bere i chen der Firma ab 1968 Entwicklungsingenieur im Rec hnerbe reic h in Kons tan z , ab 1971 a l s Le it e r e ine s Labors für die Pl anun g von Rechn e r-
Zent raleinheiten. Seit 1974 Dozent f ür Computer- und Mi krocomputertechnik sowie Grundl agen der Elektro t echnik an der Fachhoch schul e Ulm .
CIP- Kurztitelaufnahme der Deuts chen Bibliothek Scholze, Ra iner : Einführung in die Mikrocomputertechnik: Grundlagen, Programmierung, Scha ltungs t ec hnik / von Rainer Scholze . - 2., überar b . u . erw . Aufl. - Stuttgart : Teubne r 1987 (Teubner-Stud i enskript en ; 104 : El ekt rotechnik) ISBN 3-519-10104-1 NE: GT Da s Werk e ins chli eß lich a ll er seiner Teil e ist urheber rech tl ieh gesc hüt zt. J ede Verwertung außerhalb der engen Grenzen des Urheb e rrec htsge se tzes ist ohne Zus timmung
de s Verlages unzulässig und strafbar. Das gil t besonders fü r Verv i e l fä ltigungen, Übersetzungen , Mikroverfilmungen und die Einspeicherung und Verarbeitung in elekt r oni sc he n
Systemen.
© B. G. Teubner Stutt gart 1987 Printed in Ge rmany
Gesamtherstellung: Druckhaus Beltz, Hemsbach/Bergstraße Umschlaggestaltung: M. Koch, Reut lingen
Vorwort Die vorliegende Einführung in die Mikrocomputertechnik ist aus Vor l esungen und Laborpraktika entstanden , die der Verfasser an der Fachhochsch u le Ul m hält. Verwertet wurden auch Er f a h ru ngen a u s der Durchführung zahlreicher Fortbi l du ngskurse und Semi nare für Ingenieure und Techniker aus der Industrie. Obwohl die Hardware - Struktur und die Programmierung des weit verbreiteten Mikroprozessors
8085
und seiner wichtigsten
peripheren Bausteine a l s konkretes Beispiel in praxisnaherForm beh andelt sind , wurde gleichzeitig großer Wert auf eine allge mein gültige Darstellung der Strukturen und Verfahren der Mi krocomputertechnik gelegt. Die Darlegung der arithmetischen u nd gerätetechnischen Grundlagen nimmt einen großen Raum ein . Das Buch beinha l tet eine Einführung in die Assemblerprogrammierung mit vielen kleinen Beispielen, eine Beschreibung der Entwicklungs-Hilfsmittel und den Aufbau von Mikrocomputersystemen. Großes Gewicht wurde auf die grundsätzliche Behandlung der Ein - /Ausgabeschnittstellen und -verfahren sowie deren Rea lisierung mit den Bausteinen der 80 ' er Mikrocomputerrei he gelegt. - Ein Verzeichnis am Ende des Bandes erleichtert das Aufsuchen der Beispiele zur Dualarithmetik und zur Assembler programmierung . Da der Versuch , dem Mikrocomputer - Anfänger eine recht umfassen de Einführung in die 8 - Bit - Mikrocomputertechnik zu einern echten "S tudentenpreis " zu bieten, vorn Markt posi ti v aufgenommen wurde, soll die vorliegende zweite Auflage dem Leser zusätzlich einen ersten Einblick in die 16 - Bit - Mikrocomputerwelt geben . In einern neuen Absc h nitt werden die weiterführenden Eigenschaften des 8/16 - Bit - Mikroprozessors
8088
beschrieben, der auch als lei -
stungsfähigerer Nachfolger des nach wie vor aktuellen 8085 bezeichnet werden kann . Um eine der Alternativen zum 8085 auf zuzeigen , wurde in die Neuauflage eine Kurzdarstell u ng des ZILOG - Mikroprozessors Z 8 0 aufge nommen , der einige über die Kompat i bilität zum 8085 hinausgehende Systemeigenschaften bietet.
- 6 -
Gedacht i st das Skriptum hauptsächlich für Studenten der Informatik und elektrotech nisch er Fac h richtungen an Fachhochschulen und Un iversitäte n, sowi e für Ing e ni eure und Techniker in der be r uflichen Praxis. Es soll nicht die Dat en - und Handbücher der Hersteller ersetzen , sondern die Voraussetzungen f ü r deren Verwen dung schaffen . Für das Verständnis des I n h alts ist d ie Kennt nis d er digitalen Schal tungstechnik erforder l ic h; von Vorteil sind a llg e mei ne EDV -Kenntnisse und/oder Progr ammi erer fahrung. Der Mi k roprozessor 8085 ste h t a ls ausbaufähiges 8-Bit - System am un tere n Ende der 80 ' er Prozessorreihe der Firmen INTEL und SIEMENS, die vom single c h ip - Mikrocomput er bis z u den 16 -Bi tund 32-Bit-Mikroprozessorsystemen reicht . Di e Kenntnis des re lativ einfachen und überschaubaren 8085 ist ei n e wertvolle Basis für das Verständnis der wesentlic h komplexeren 16- und 32 -B it Generation . Die bes chri ebenen peripheren Baus teine (Pu ffe r, seriell e und parallele Ein-/Ausgabe, OMA-Cont ro ll er , Int er ruptControl l er , Zeitge ber) werden bei a ll en Prozessoren der 80 ' er Reihe ei ng esetzt. In die zweite Auf l age sind neu entw ickelt e periphere Ba u steine bzw . Weiterentwicklungen - meist a us An forderungen der 16 - Bit-Systeme entstanden - aufge n omme n bzw . durch Verweise ber üc ksi chtigt worden . An die ser Stelle möch te ich Herr n Dipl. - Ing. (FH) S. Görges , Konstanz für die Durchsicht des Manuskripts und wertvolle An regunge n danken , ebenso der Firma SIEMENS für Hinweise zu ihren a l s Be ispiele in das Skript aufgenomme n en Systemen. Auch das Automatisierungslabor der Fachhochschu l e Ulm sei hier erwähnt , dess en Persona l stets bemüht war und ist, die gerätetechni schen
Vora u ssetzungen für ein zeit gemäß es Arb e iten auf dem
sehr schn e ll e bige n Gebiet der Mikrocomputertechnik z u sc h affen . Dem TEU BNER - Verlag sei für die angene hme Zusammenarbeit gedankt.
Ulm, im Herbst 1987 Rain~r
Scholze
Inhalt 1
Seite
Grundlagen der Mikrocomputertechnik 1.1
11
1.1 .1
Binäre Darste l lung von Information
11
1 . 1.2
1. 2
1.3
11
I n formationsdarstellung Binäre Zahlendarstel l ungen
13
1.1.2 . 1
Dua l zahlensystem
13
1.1.2.2
Darstellung negativer Dualzahlen
17
1.1 . 2 . 3
Oktalzahlen und Hexadezimalzahlen
20
1.1.2.4
Binär codierte Dezimalzahlen
23
1 . 1.3
ASCII - Zentra l code
1.1 . 4
Befehle , Adressen , Operanden, Assembler notation
23 27
Struktur und Arbeitsweise von Mikrocomputern
31
1. 2.1
Funktionseinheiten des Mikrocomputers
31
1 . 2.2
Bus - Architektur von Mikrocomputern
34
1. 2 . 3
Hauptspeicher
37
1 . 2 . 3.1
Organisation des Hauptspeichers
37
1 . 2.3.2
Speicherarten und - technologien
39
1.2.3.3
Aufbau und Schnittstelle von Speicherbausteinen
42
1 . 2.4
Mikroprozessoren
46
1. 2.5
Abläufe im Mikroprozessor
50
1.2 . 5.1
Startvorgang
51
1. 2. 5. 2
Befehlsab l auf
51
1 . 2.5.3
Adressierunq
54
1.2. 6
Ein - /Ausgabe und Peripheriegeräte
59
1.2 . 7
Ergänzungseinheiten
64
Arithmetische und logische Operationen
66
1 . 3.1
66
Addition und Subtraktion von Dualzahlen 1 . 3.1.1 Addition vorzeichenloser Festpunktzahlen
66
1 . 3.1 . 2
Subtraktion vorzeichenloser Festpunktzah l en
67
1.3 . 1.3
Addition und Subtraktion von Zweierkomp l ementzahlen
69
1.3.1 . 4
1.3 . 2
Mehrfachlange Addition und Subtraktion Multiplikation und Division von Dualzahlen
71 72
- 8 Seite 1.3.3 1.4
2
Logische Operationen
76
1.4. 2
80
Programmi ere n in Asse mbl ersprac he
2. 2
2. 3
2. 4
76
1.4.2.1
Maschinencode und Assemblersprache
80
1.4 . 2 . 2
Speicherp l an
81
1. 4 . 2.3
Programmzeilen in Assemblersprache
82
1.4.2.4
Assembleranweisungen
84
1.4. 3
Programmerstel lung mit maschinellem Assembler
87
1.4.4
Höhere Sprachen und Struktogramme
89
Der Mikroprozessor 8085 2 .1
74
Programmieren von Mikrocomputern 1.4.1 Programmanalyse und Programmablaufplan
90
Struktur des Mikroprozessors 8085
90
2. 1. 1
Register - und Transportstruk tur
91
2 .1. 2
Maschinenzyklen und Ab l aufsteuerung
2 .1 .3
Systembus und Ablaufsteuerung
100
2 .1. 4
Signal - Zeitdiagramrne für 8085 - Befehle
107
2 .1. 5 2. 1. 6
Serielle Ein - /Aus g abe l eitungen des 8085 Stackorganisation
110 111
95
Befehlsliste des Mikroprozessors 8085
113
2.2. 1
Übersic htsliste der 8085 -Befe hl e
113
2.2 . 2
8085-0perationscodes in hexadezimaler Versc hlü sselung
113
Beschreibung der 8085 - Befehle
114
2. 3. 1 2.3.2 2 . 3.3 2.3.4
119 124 130 137
Transferbefehle Arithmetikbefehle Logikbefeh l e Sprungbefehle
2. 3. 5
Unterprogramm- Aufruf - und Rückkehrbefehle
142
2. 3. 6 2.3.7
Sonder - und Steuerbefehl e Zur Verarbe itun g von BCD-Zahlen
152
2. 3. 8
Zur Unt erprogrammorganisation
1 52 1 54
Programrn-Unterbrechungssystem 2 . 4 . 1 Programm-Unterbrechung a ll gemein
1 58 1 58
2. 4. 2 2.4.3
161 167
Die Unterbrechu ngssteuerung des 8085 Aufbau von Unterbrechungsprogrammen
- 9 -
Seite 2.4.4
3
1 78
3. 1 3.2
Übersicht Programm- Entwicklung in Assemblersprache (Beispiel)
178
3.3
Monitor - Betriebsprogramm
190
182
3.3.1
Monitor - Kommandos
19 1
3.3.2
Aufbau des Monitor-Programms
195
3 . 3 . 3 Hilfsprogramme des Monitors Mikrocomputer - Entwicklungssysteme
1 99 199
3.4.1
Struktur eines MikrocomputerEntwicklungssystems
200
3.4.2
Grundbegriffe und Bedienhinweise
205
3.4 . 3
Programmtest mit dem Testemulator
210
Aufbau von Mikrocomputersystemen
218
4. 1
218
Mikrocomputer - Konfiguration 4 . 1.1 4.1 . 2
4. 2
4 .3 5
174
Hilfsmittel zur Programm- Entwicklung
3. 4
4
Unterbrechungssystem mit externen Unterbrechungs - Steuerbausteinen
Blockschaltbild für 8085 - Mikrocomputersysteme Realisierungsformen von Mikrocomputern
Anschaltung von Funktionseinheiten an den 8085 - Systembus 4 . 2. 1 Isolierte und speicherbezogene Ein-! Ausgabe
219 221 225 225
4.2 . 2
Auswahl der Funktionseinheiten
227
4 . 2.3
Dekodierung der Speicher - und Ein - ! Ausgabeadresse
230
4. 2. 4 4.2 . 5
Anschluß von 8085 - Spez i albausteinen Die 8080 - Standard- Schnittstelle
Gesamtschaltung eines 8085 - Mikrocomputersystems
235 239 242
Mikrocomputer - Ein - !Ausgabeorganisation
249
5.1
Schnittstellen von peripheren Einheiten 5. 1 . 1
Passive Parallel - Ein-!Ausgabe
250 250
5 . 1.2
Parallele Handshake-Schnittstelle
254
5. 1 . 3
Serielle Ein - !Ausgabeschnittstelle
256
- 10 Seite 5.2
5. 3
5.4
5.5
6
7
Steuerung der Ein-/Ausgabe durch den Mikrocomputer
264
5 . 2 .1
Polling-Verfahren
265
5.2.2
Interrupt-gesteuerte Ein - / Ausgabe
270
5. 2 . 3
Block-Ern-/Ausgabe im OMA-Betrieb
274 , 277
Parallel-Ein-/Ausgabebaustein 8255 5.3.1
Struktur des Bausteins 8255
277
5.3 . 2
Programmier un g des Bausteins 8255
280
5.3.3
Handshake-Schnittstelle des Bausteins 8255
286
5. 3. 4
Anschluß eines Druckers mit CENTRONICS Schnittstelle
291
Serieller Schnittstellen - Bauste in 8251A
295
5 . 4.1
Struktur des Bausteins 8251A
296
5 .4 .2
Programmierung des 8251A im Asynchronmodus
299
Zeitgeber - Baustein 8253
301
5.5. 1
Struktur und Programmierung des 8253
30 1
5.5 . 2
Betriebsarten des Zeitgebers 8253
305
5.5 . 3
Einsatz des Bausteins 8253 als programmierbarer Taktgenerator
308
Der Mikroprozessor 8088 - eine Kurzdarstell ung
312
6.1
Struktur des Mikroprozessors 8088
313
6.2
Segmentierung des Speicherraums
318
6. 3
Befehle und Adressierungsarten des 8088
320
Vergleich des Mikroprozessors Z80 mit dem 8085
322
Anhang Literaturverzeichnis
327
Verzeichnis der Beispiele
330
Sachregister
332
1
Grundlag en der Mikrocomputertechnik
Mit der Erfindung des Mikrocomputers wurde Computerleistung früher i n hohen Stahlschränken voller Leiterplatten verpackt auf Chip-Ebene verfügbar. Mikrocomputer sind Computer
auf
k l einstem Raum ; sie haben den gleichen logischen Aufbau , die gleiche interne Arbe itsweise wie ihre großen Brüder u nd nutzen diese l ben mathematischen Verfahren. In diesem Abschnitt sollen die Grundlagen der Informationsver arbeitung soweit dargestellt werden , wie dies für das Ver ständnis der im folgenden behandelten 8-Bit Mikrocomputer er forderlich ist. Beispielsweise wird die Gleitpunktarithmetik weggelassen , da sie bei kleinen bis mittleren Mikrocomputer anwendungen selten benötigt wird . 1.1
Informatiönsdarstellung
Bevor auf die Verarbeitung der Information und die dafür er forder l ichen gerätetechnischen Einrichtungen des Mikrocomputers eingegangen wird , ist die Darstellung der Information zu klären . Die angegebenen Beispiele beziehen sic h hierbei schwerpunktmäßig auf den Mikroprozessor 8085 . Ausführlich wird die Informat ionsdarstellung in Computern und Mikrocomputern behandelt in 111 1.1.1
121
131 .
Binäre Darstellung von Information
Mikrocomput er sind digital arbeitende Geräte , die ihre Infor mation (Daten) in binären , d.h . zweier Zustände fähigen Elementen speichern und binäre Signale verarbeiten. Entsprechend ist die gesamte Information im Mikrocomputer aus binären Zu standsgrößen oder Binärstellen zusammenzusetzen . Eine binäre Zustandsgröß e kann nach 141 die Binärzeichen 0 und 1 annehmen. Bit ist nach DIN 44300 141 die Kurzform für Binärzeic hen . Sprechweise: Das Bit ist 0, oder : das Bit ist 1. Mit den Bi nä rzeichen 0 und 1 lassen sich zweiwertiqe technische Zustände beschreiben (Tafel 1).
- 12 Tafel 1
Zuordnung der Binärzeichen zu technischen Zuständen
Binärzeichen
Scha lter
Spannung
Flipflop
0
AUS
LOW
rückgesetzt
1
EIN
HIGH
gesetzt
Strom 0 mA 20 mA
Will man die Schaltzustände von 8 Schaltern darstellen , so benötigt man 8 BinärzeichensteIlen (BitsteIlen), die zu einem logischen Binärwort zusammengefaßt werden können . Ein 8-Bit l anges Binärwort wird als Byte bezeichnet. Es ist übli ch , die BitsteIlen eines Binärworts rechts mit Stellen-Nr . 0 beginnend durchzunumerieren (Bild 1) . Legt man die in Tafel 1 getroffene Zuordnung zugrunde , so ist gemäß Bild 1 im 8-Bit Wort der Schalter 3 in EIN - Stellung , der Schalter 4 in AUS-Stellung U$W.
7 6 5 4 3 2 1 0 8- Bit Wort:
10111110111011101
~
Bitste ll en - Nr .
= Schalter-Nr.
16 -Bit Wort: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 __ Bitste11en - Nr.
111011111010101111111110101010111 Bild 1
8 - Bit- und 16 - Bit Binärwort
Im Mikrocomputer werden Binärwörter fester Länge verarbeitet. Die ei nmal festgelegte Wortlänge bestimmt im wese n tlichen die Leistungskl asse eines Mikrocomputersystems . Üblich sind Wortlängen von 4 Bit , 8 Bit, 16 Bit und 32 Bit . Beim Mikrocomputersystem 8085 beträgt die Wort länge 8 Bit (1 Byte). Dan eben können im 8085 auch 16-Bi t Worte , die sich aus 2 Bytes zu sammensetzen, als Einheit angesprochen und verarbeitet werden (Bild 1) . Ein Binärwort ist zunächst nur ei n e Kombination von Binär zeichen (Bitkombination bestimmter Länge) , die im Mikrocomputer vom jeweiligen Verarbeitungszustand abhängig :
- 13 -
* als logisches Wort eine Anzahl von Binärzuständen, z.B. Schalterstellungen, repräsentiert
* eine Zahl in einem vereinbarten Zahlensystem darste l lt (s. Abschn. 1.1.2)
* a l s Zeichen eines zur Textverarbeitung vereinbarten Zeichencodes behandelt wird (s. Abschn. 1.1.3)
* als Maschinenbefehl interpretiert und ausgeführt wird (s. Abschn. 1. 1. 4 ) . 1.1 . 2
Binäre Zahlendarstellung
Das Dezimalsystem mit den Ziffern 0 , 1 , 2,3 .. 9 hat a l s Basis des Zahlensystems die kleinste , gerade nicht mehr in einer Ziffer darstel l bare Zahl 10 . Das Dezimalsystem ist ein po l yadisches Zah l ensystem . Die Ziffernfolge x x x x (Stellenschreibweise) 3 2 l O hat den aus der Potenzschreibweise ersichtlichen dezimalen Wert x 3 ·10
3
+ x 2 ·10
2
+ xl·10
1
0
+ xO·10 .
Ordnet man den Binärzeichen 0 und 1 (Abschn. 1 . 1 .1 ) die Zah l enwerte 0 und 1 zu, so erhält man die Binärziffern 0 und 1. Zahlendarstellungen , die mit einem Ziffernvorrat von zwei ziffern auskommen , sind binäre Zahlensysteme . 1 . 1.2 . 1
Dualzahlensystem. Wendet man das Bildungsgesetz für
polyadische Zahlensysteme auf den Ziffernvorrat 0 und 1 an, so erhält man das Dualzahlensystem mit der Basis 2 . Eine Folge von Binärziffern bzw. Dualziffern x x x x (Stellenschreib 3 2 l O . . . 3 2 welse) hat lm Dualsystem den dezlmalen Wert x · 2 + x · 2 + 3 2 1 0 X ·2 + X ·2 (Potenzschreibweise). Dabei werden die Ziffern l O stellen mit steigenden Potenzen zur Basis 2 gewichtet . Bei ganzen Zahlen stellt man sich das Komma rechts von der Stelle 0 vor: X X X X '. In der Potenzschreibweise 3 2 l O
mit dem Gewicht 2
Beispiel 1: Dual - Dezimal - Umwandlung . Die (vorzeichenlose) Dualzahl a = 1101 2 ist in eine Dezimalzahl umzuwandeln .
8
+
4
+
0
+
1
1 · 8 + 1·4 + 0·2 + 1 · 1 , 10
13
- 14 ist schon die Vorschrift für die Umwandlung ganzer Du a l zahlen in Dezimalzahlen (Beispiel 1 ) enthalten . Beim Arbeiten mit ver sch iede n en Zahlensystemen empfiehlt es sich , die jeweils zugrundeliegende Zahlenbasis a l s tiefge stellten Index an die Zahl anzuhängen (vgl . Beispiel 1) . Bei der Umwandlung von Dezimalzahlen in Dualza hl en prüft man, welche Potenzen zur Basis des Zielsystems - hier Basis 2 in der gegebenen Dezimalza hl enthalten sind . Man beginnt mit der h öchsten ent halt enen Zweierpotenz , subtra hi ert deren Wert von der Dezimalzahl , wie d erholt dasselbe mit dem verbleibenden Rest usw.
(Beispiel 2) .
Bei spiel 2 : De zi mal - Dual -Umwandlung (Subtraktionsmethode) . Die Dezimalzahl a
=
1 65
10
ist in die e nt sprechende Dual za hl
umzuwandeln . 1 65 - 128 = 37 ; 2
3 7 - 32
7
Du a l za hl
2 a
5 - 4 = 1;
5;
5
1 - 1 = 0;
22
2
0
= 1 0 1 0 0 1 0 1 2 ;
Da s beschriebene Verfahren eig n et sich zur Umwandlung von De zimalzahlen in Zah l ensysteme mit be li ebiger Basis . Dasse lbe gilt für die Di vis ionsmethode
(Beispiel 3) . Die Zahl des Ziel -
systems (hi er Dualzahl) entsteht durch die Notierung der Reste Beispiel 3 : Dezimal - Dual -Umwandlung (Divisionsmethode) . Die Zahl a = 366 Basis 366 18 3 91 45 22 11 5 2 1
2 2 2 2 2 2 2 2 2
10
ist in die dual e Dars te llung zu brin ge n .
Quotient
Rest
183 91 45 22 11 5 2 1 0
0 1 1 1 0 1 1 0 1 -
Dualzahl a
1\
MSB t
11
0
1
1
0
I 1
1
LSB 1
oI
L· 20
- 15 bei fortlaufender Division der Dezimalzahl bzw . der entstehen den Quotienten durch die Basis des Zielsystems (hier 2) . Bei dieser Methode wird zuerst das am weitesten rechts stehende least significant bit (LSB) und zuletzt das höchstwertige linksstehende most significant bit (MSB) ermittelt. Zur Darstel lung der dreistel l igen Dezimalzahl benötigt man eine neun stellige Dualzahl. Al lg emein gilt , daß eine Dualzahl etwa 3,3 - mal mehr Stellen hat als die entsprechende Dezimalzahl . Da die Binärziffern der Dualzahl in den binären Elementen des Mikrocomputers einfach abbildbar und Rechenoperationen mit bi nären Ziffern technisch einfach realisierbar sind 151, werden Zahlwerte im Computer fast durchweg als Dualzahlen
darge-
stel l t. In einem 8-Bit langen Register eines Mikrocomputers kann eine 8 - stellige Dualzahl, in einem doppeltlangen Register (Registerpaar) eine 16-stellige Dualzahl gespeichert werden . In Bild 2 sind die Wertebereiche der zwei Zahlenformate für vorzeichenlose , ganze (Festpunkt-) Zahlen angegeben .
0 ... . (2
Bereich: Bitnummer
MSB 7 6
c::-
0
8-Bit Dual zahl
8
5
4
2
3
III
I
/ 1 11
o . ... 255
-1)
1
LSB 0 0
I
/ 1 11
Stellenwert t::::> MSB Bitnummert::::> 15 14 13 12 11 10
c::-
7
6
5
4
3
2
1
LSB 0
I I
21521421321221121029 2 8 2 7 2 6 2 5 2 4 2 3 22 2 1 2 0 Bereich:
Bi ld 2
8
IIIIIIIIIII
16-Bit i5\:iaIZah 1
~~~~len-
9
0 ..... (2
16
_1 ) = 0 .. .. . 65535
Darstellung und Zahlenbereich von ga n zen vorzeichen l osen Dualzahlen
Entsprechend den gebrochenen Dezimalzahlen sind auch die gebrochenen Dualzahlen definiert : a
=
O, x _ l x_ 2 x _ 3 ..
=
x _ 1 · 2 - 1 + x _ . 2- 2 + 2
X_
3
. 2- 3
- 16 Die Umwandlung gebrochener Dualzahlen in gebrochene Dezimal zahl en und umgekehrt sei an Hand der Beispiele 4 und 5 er läutert . Beispiel 4: Dual-Dezimal-Umwandlung von Brüchen. a = 0 , 1101
2
1.2 - 1 + 1.2- 2 + 0 . 2- 3 + 1.2 - 4 = 1 · 0,5 + 1·0,25 + 0 · 0 , 125 + 1·0 , 0625
Die Umwandlung in Beispiel 4 ergibt sich direkt aus der Potenzschreibweise der gebrochenen Dualzahl. Zur Umwandlung von Dezimalbrüchen in Dualbrüche wird die MUltiplikationsmethode angewendet (Beispie l 5). Dabei multipli ziert man den Dezimal bruch mit der Basis 2 des Zielsystems, wobei die sich ergeben de Stelle vor dem Komma die höchstwertige Ziffer des Dualbruchs ist; der gebrochene Rest des Ergebnisses wird erneut mit 2 mul tip li ziert usw. Beispiel 5: Dezima l-Dual-Umwandlung von Brüchen (Multiplikationsmethode). Dualziffer 0 , 452
0;904 0,808 0,616 0,232 0,464 0 , 982 0 , 856
2 2 2 2 2 2 2 2
0,904 1 , 808 1,616 1 , 232 0,464 0,982 1,856 1,712
°11 1
°°1 1
I I MSB
t
I
t
t
LSB
Dualzahl Stellengewicht Der Dualbruch a (Beispiel 5) kann in eine m Register mit 8 Bi närstellen gespeichert werden , indem man sic h das Komma links vor dem Register vorstellt . Die Umwandlung " geht nicht auf ". Wandelt man die erhaltene Dualzahl a = 0 ,01110011 entsprechend Beispiel 4 in einen Dezimalbruch zurück , so erhält man a* = 0 , 4492187
10
• Die Abweichung von der Ausgangszahl a = 0 , 452 10
- 17 ergibt sich , weil die Umwandlung in Beispie l 5 nach 8 Dual stel l en abgebroc hen wurde . Bei Zahlen mit ganzem und gebrochenem Anteil wird gemäß den besprochenen Verfahren jeder Teil für sich umgewandelt und an schließend die vollständige Zahl wieder zusammengesetzt . 1.1.2.2
Darstellung negativer Dualzahlen . Zur Un terscheidung
von positiven u nd negativen Dualzahlen müssen - wie im Dezi malsystem üblich - die Vorzeichen + und - eingeführt werden . In der Vorzeichen - Betragsdarstellung wird der Betragszahl im Dualsystem eine Vorzeichenste i le VZ h inzugefügt , für die festgelegt ist :
o
Dua l zah l
entspricht +,
1 e n tspricht Eine 8- Bit lange
Wertebereich
Dualzahl nach Bild 3 hat den Wertebe -
Bild 3
Vorzeichen-Betragsdarstellung
reich - 1 27 . . .. 0 .. •• + 1 27 .
Für die computer i n terne Darstel lu ng und Verarbeitung von Zah len ist die Vorzeichen - Betragsdarstellung u ngeeignet , da Vorzeichensteile und Ziffernsteilen gesondert behandelt werden müssen. Die Darstellung negativer Zahlen als Komplemente der positiven Zahlen gestattet dagegen eine einheitliche Behandl u n g von Vorzeichen - und Ziffernsteilen im Rec h enwerk des Mikrocomputers und ermöglicht außerdem eine einfache Rückf üh rung der Subtraktion auf die Addition komplementärer Zahlen . Bei de n Dualzahlen unterscheidet man Einerkomplement und Zwei erkomplement . Das Einerkomplement ader Dualzahl a ist die Ergä n zung der Zahl a zur größten darstellbaren Zahl des Zah lenbereichs . Für eine n-stellige Dualzahl gilt a = (2 n - 1) - a. Sc h e matisch entsteht das Einerkomplement im Dualsystem durch bitweise Invertierung der Dualzahl (Beispiel 6) .
- 18 Das Zweierkomplement a
der Dualzahl a ist deren Ergänzung zur 2 n nächsthöheren Zweierpotenz 2 , also zur kleinsten im Zahlenbe-
reich gerade nicht mehr darstellbaren Zahl. Für eine n - stellin = 2 - a . Schematisch 2 bildet man das Zweierkomplement durch bitweises Invertieren ge Dualzahl ist das Zweierkomplement
a
der Dualzahl a (Einerkompleme nt) und ansc h ließende Addition einer 1 (Beispiel 6). Beispi el 6 : Bildung des Zweierkompl e ments . In einem 4-stelligen Dualzahlensystem ist das Zweierkomplement zu a = 5 10 z u bilden . a) durch Subtraktion n 10000 Hilfsgröß e 2 2
n
- a a
16 5
2
11
b) schematisch 2
= 16
10
11000012
10
101011 2
10
01 1011 1 2
10
a =
5
a =
10
+1
a
2
10
10101 1 2
10
110101 2 = + 0001 2
+ 1
11
=
10
11 011 1 2
Einerkomplement Zweierkomplement
In ei n e m 4- stel ligen Dualsystem nach Beispiel 6 ist die nächst4 16 (Hilfsgrösse); das Zweierkomple -
höhere Zweierpotenz 2 ment zu a = 5
ist a 1011 2 = 1110 . Bildet man entsprechend 2 10 das Zweier komplement für a = 5 in einem 8-stelligen Dual10 system , so erhält man 11111011 = 251 . 2 2 10
a
Die Komplementieru ng eines Zahlenkomplements führt wieder auf die Ausgangszahl zurück , wie leicht nachzuweisen ist :
(a 2 )2
=
(2
n
- a)2 = 2
n
-
(2
n
- a) = a;
Trägt man die in 4 BinärsteIl en darstellbaren Dualzahlen 0000
2 bis 1111 2 in einen Zahlenring (Bild 4) ein , so kann man die Dualz ah l en 0000 bis 0111 mit MSB = 0 a ls positive Zahlen 0 bis
~
und die Dualzahlen 1000 bis 1111 mi t MSB = 1 als negative
Zahlen - 1 bis - 8 auffassen . Es lä ßt sich leicht zeigen , daß bei der Zuordnung gemäß Bild 4 die negativen Zahlen die Zweierkomplemente der entsprechenden positiven Zahlen sind. Man vergleiche z . B. das Zweierkomplement der Zahl 5 (Beispiel 6) mit der - 5 des Zahlenrings .
- 19 -
Auch in der Zwei-
10
höchstwertige Bit 11
ner Vorzeichen -
11 00
9- 5
12 ~
-4
\
0) steht rechts
~
15
I
-- ) 1
I
1111
des Betrags. Das Bild 4
01 0 0
len
14 "';:-
1) das Komplement
der Zweierkomple -
+
tive Zah-
''0. - 2
Zahl , bei negati -
Vorzeichen ist in
(
nega -
131<,- 3
der Betrag der ven Zahlen (MSB
- SI
I
:
stelle . Bei posi tiven Zahlen (MSB
--{)I
/ -::;
/:5_ 6
die Funktion ei -
0111
Si I
9
stellung hat das
~
1000
1001
erkomplementdar -
I
0
0000
000 1
Zahlenring für die Zweierkomp l e mentdarstellung (4 Bit)
mentdarstellung - im Gegensatz zur Vorzeichen - Betragsdarstellung - j edoch Be standteil der Zahl und wird genauso behandelt wie d ie Ziffernstellen . Beim Übergang von einer positiven zur entsprechenden negativen Zahl und umgekehrt wird die Vorzeichenste l le einfach mit in die Komplementbildung einbezogen (vgl . Beispiel 6). Die schematische Komplementbildung ist in einem Rechenwerk einfach auszuführen . In Mikrocomputern wird zur Darste l lung negativer Zahlen fast durchweg das Zweierkomplement verwendet ; das Einerkomplement spie l t eine untergeordnete Rolle. Aus dem Zahlenring (Bi l d 4) ergibt sich der Zahlenbereich all gemein für n - stellige Dualzahlen in Zweierkomplementdarstel l ung Z~
-2
n-l
.. ... . 0 . . .. .. +(2
n- l
-1) ;
Für S- Bit - und 16 - Bit - Dualzahlen in Zweierkomplementdarstel lung erhält man die in Bild 5 angegebenen Zahlenbereiche . Nach der Vorzeichenregelung (Bild 4) ist die Zahl 0 eine posi tive Zahl . Der Betrag einer negativen Zahl im Zahlenbereich ist gleich dem Betrag der positiven Zahl nach der (Rück - )Kom -
- 20 Bereich: - 2 8 - 1 .... +(2 8 - 1 - 1) = - 128 . .. . + 127 765
43210
7
4
8-Bit Dualzahl (n = 8)
1 5 14 13 12 11 10 1 6- Bit ililäIZahl
\ 0/1 \ 0/1 \
(n = 16) VZ 2
14
\ 2
9
8
6
3
2
1
0
II IIII IIIIII1 0/1
13
Bereich: _216-1 ... +(216-1_1) Bild 5
5
- 32 768 ... + 32767
Bereich von ganzen Dualzahlen in Zweierkomplement darstellung
plementierung (s. Beispiel 7). Der Betrag einer im Zweierkomplement vorliegenden negativen Dualzahl l äßt sich auch ei nfach nach folgender Regel ermitteln: Man zählt die Nullen als sig nifikante Ziffern, multipliziert sie mit ihrem Ste l lenwert , addiert die so erhaltenen Teilprodukte und zusätzlic h eine Eins (Beispiel 7) . Beispiel 7: Bildung des Zweierkomplements im 8-Bit - Dualsystem. Es ist der dezimale Wert der Zweierkomplementzahl 10010110 zu ermitteln ! a = 10010110 Wie lautet die Du alzahl mit dem dezimalen Wert + 106 ?
= 10010110 = 01101001 Zweierkomplement a = 01101010 2
Einerkomplement
1.1 . ·2 .3
a
-1 06
a
+ 105 + 106
10 10 10
, Betrag
= 150
, Ergänzung zu 255 , Ergänzung zu 256
Oktalzahlen und Hexadezimalzahlen. Neben dem Dualsy-
stem sind in der Datenverarbeitung das Oktal - und das Hexadezimalsystem bekannt. Sie werden weniger zum Rechnen als vielmehr zur kompakten Darstellung von Binärworten unterschi ed l icher Bedeutung (u.a. Dualzahlen) verwendet .
- 21 Faßt man 3 Bitstellen eines Binärwortes zu einer Gruppe zusammen und ordnet man den möglichen Binärkombinationen 000 bis 111 die Oktalziffern 0 , 1,2 . . 7 zu, so erhält man das Oktalsy stern zur Basis 8
10
(Tafel 2) .
In der Mikrocomputertechnik weiter verbreitet als das Oktalsystern i st das Hexadezimalsystem (auch Sedezimalsystem)
zur Ba-
sis 16 1 0 . Dabei faßt man 4 Bitstellen zu einer Gruppe (Tetra de) zusammen und weist den 16 möglichen Binärkombinationen 0000 bis 1111 die Hexadezimalziffern 0 , 1,2, . . .. 9,A , B, .. F zu . Tafel 2
Binäre Verschlüsselung von Oktal - , Dezimal - und Hexadezimalzahlen
Binärcode
oktal
dezimal
2 4 2 3 222 1 2 0
1 0 8 8
1
10 10
hexadezima l
0
1 0 16 16
0 0 0 0 0
0
0
0
0 0 0 0 1
1
1
1
0 0 0 1 0
2
0 0 0 1 1
3
0 0 1 0 0
4
0 0 1 0 1
5
0 0 1 1 0
6
6
0 0 1 1 1
7
7
7
0 1 0 0 0
1 0
8
8
0 1 0 0 1
1 1
9
9
0 1 0 1 0
1 2
1 0
A
v
2
2
0
u
3
3
m
4
0
5
~
>
M
~ ~
V
~
0
4
I
5
u
n u
6
m
v
~
0
u
M
m E
~
N
V
~
m X v
~
0 1 0 1 1
1 3
1 1
0 1 1 0 0
1 4
1 2
0 1 1 0 1
1 5
1 3
0 1 1 1 0
1 6
1 4
0 1 1 1 1
1 7
1 5
2 0
1 6
1
0
1 0 0 0 1
2 1
1 7
1
1
1 0 0 1 0
2 2
1 8
1
2
1 0 0 1 1
2 3
1 9
1
3
1 0 1 0 0
2 4
2 0
1
4
I
0 0 0 0
I
B
c V
0
~
C
~
~
E
m ~ ~ v ~ m v
~
D F
--
- 22 In Tafel 2 sind die Dezimalstellen 0 bis 20 in verschiedenen Zahlensystemen angegeben . Ein Binärwort wird in das Oktalsystem gewandelt, indem man von rechts beginnend Dreiergruppen bildet und für jede Dreiergruppe die in Tafel 2 angegebene Oktalziffer hinschreibt . Falls notwendig , ist das Binärwort nach links mit Nullen zu einer vollen Dreiergruppe zu ergänzen (Beispiel 8) . Die so gewonnene Oktalzahl wird zur Kennzeichnung noch mit einem tiefgestellten Index 8 versehen . Bei der Rückumwandlung sind die Oktalziffern durch ihre binäre Verschlüsselung nach Tafel 2 zu ersetzen . Bei spiel 8 : Darstellung von Bi närwort en im Okta l- und Hexa dezimalsystem . 0110101000111110
l6 - Bit Binärwort
r Ergänzung Darstel l ung i m Okta l code Darstellung im Hexadezimalcode
"000110101000111110B
~~~~~'-y--J -
10
6
10
5
7
6 8 = 10 6510 7 62
0110101000111110B
'---y-'~~~-
6
A
3
E 16 =
6A3EH
Ganz entsprechend erfolgt die Umwandlung zwischen Binärworten und Hexadezimalzahlen . Statt Dreiergruppen faßt man hier Vie rergruppen zusammen und kennzeichnet die Hexadezimalzahl mit einem tiefgestellten Index 16 (Beispiel 8). In der ma schinellen Datenverarbeitung bereitet der Umgang mit tiefgestellten Indizes SChwierigkeiten . Zur Kennzeichnung der geltenden Zahlenbasis hängt man deshalb einen Buc hstaben an die Zahl an, und zwar ein 0 für Oktal , ein H für Hexadezimal, ein B für Binär und ein D für Dezimal . Zur Unterscheidung der Ziffer 0 vom Buc hs taben 0 wird die Ziffer 0 üblicherweise mit einem Schrägstrich
I versehen dargestellt : 10 (s. Beispiel 8).
Bei Mikrocomputern geschieht die Ein - /Ausgabe von Programmen und Daten auf maschinennaher Ebene vielfach im Hexadezimalsystem . Ein 8-Bit langes Binärwort im Speicher , z . B. 11110110101 ,
- 23 wird auf dem Bildschirm hexadezimal ausgegeben als E9, eine 16 - Bit - lange Adresse kann in Form von 4 Hexadezimalziffern über die Tastatur eingegeben werden. 1.1.2 . 4
Binär codierte Dezimal zahle n. Da viele Mikrocomputer
eine einfache Dezimalarithmetik durch Befehle unterstützen , soll kurz auf das BCD-Zahlensystem (d.h.
~inary
~oded ~ecimal)
eingegangen werden . Mit dem in Tafel 2 entha ltenen (natürli chen BCD - Code werden die Dezimalziffern
0 bis 9 einzeln binär
verschlüsselt . Zur Unterscheidung von anderen bekannten Zif ferncodes (Aiken - Code , Gray-Code) wird der BCD- Code auch als Dualcode oder B-4 - 2- 1 - Code bezeichnet . Bei der Darstellung einer BCD-codierten Dezimalzahl im Rechner bleibt die Struktur der Dezimalzahl erhalten ; z . B. wird die Dezimalzahl 19B4 intern als Folge von 4 BCD - Ziffern gespeichert : 19B4 = 0001 100 1 1000 0100. Nach der Potenzschreibweise ergibt sich der Wert der BCD-Zahl wie erwartet :
Da in einer Tetrade 16 verschiedene Binärkombinationen 0000 bis 1111 existieren und durch die Dezimalziffern nur die ersten 10 Kombinationen belegt sind , bleiben 6 KOmbinationen ungenutzt, die man Pseudotetraden nennt (Tafel 2). Bei der Verarbeitung von BCD-Zahlen sind durch die Existenz der Pseudotetraden Dezimalkorrekturen erforderlich , die bei der Beschreibung der BOBS - Befehle noch erläutert werden . 1.1.3
ASCII-Zentralcode
In Computern wie in Mikrocomput ern will man in der Regel nicht nur Zahlen , sondern auch Text ein - /ausgeben und verar beiten . Deswegen sind neben den Dezimalziffern
0 bis 9 auch
die Buchstaben des Alphabet s (groß und wahlweise klein) und Sonderzeichen binär zu verschlüsseln . Neben diesem darstellba ren alphanumerischen Zeichenvorrat (Ziffern , Buchstaben , Son derzeichen) müss en im Zentralcode eines Computers bzw . Mikro-
-
24 -
computers noch Steuerzeichen für die Steuerung des Datenaustauschs und der angeschlossenen Peripheriegeräte
definiert
sein . Anders als die darzustellenden Schriftzeichen werden die Steuerzeichen von den peripheren Geräten interpretiert
und
ausgeführt . Beispielsweise bewirkt das Steuerzeichen CR (engl . ~arriage ~eturn)
einen Wagenrücklauf bei druckenden Geräten
bzw . das Rückstel l en des Cursors (= Lichtmarke) an den Zeilen anfang bei Bildschirmen . In der Mikrocomputertechnik wird ausschließlich der aus dem amerikanischen Fernschreibcode hervorgegangene 7- Bit - ASCIICode (Tafel 3) als Zentralcode zugrundegelegt . ASCII ist die Abkürzung für
~erican
Standard Code for Information Inter-
change. Der ASCII - Code wurde als Norm von dem internationalen Normengremium ISO (!nternational
~tandardization
als ISO -7- Bit Code , vom CCITT-Komitee
Qrganization)
(~omite ~onsultatif
International !elegraphique et !elephonique) als CCITT-Nr . S und vom Deutschen Normenausschuß (DNA) in der DIN-Vorschrift 66003 als Norm übernommen 161. Mit der 7- Bit langen Binärkombination b ... b laut Codetabelle 7 l sind 128 Zeichen verschlüsselbar. Die niederwertige Tetrade b b b b (Ziffernteil) wäh l t eine von 16 Zeilen in der Zei4 3 2 l chenmatrix aus , die höherwertigen 3 Bitstellen b b b (Zonen 7 6 S teil) wäh l en eine von 8 Spalten aus und fixieren somit ein Zeichen in der Matrix . I m Mikrocomputer wird ein 7- Bit-ASCII - Zeichen rechtsbündig in einem 8 - Bit - Register oder einer 8-Bit-Speicherzelle gespeichert . Die freibleibende Bitstelle in der hÖherwertigenTetrade wird entweder fest mit
ß
oder zur Datensicherung mit einem
Paritätsbit (engl. parity bit) belegt (Bild 6) . Bei geradzahliger Parität (eng l. even parity) wird die Anzahl der Einsen im ASCII - Zeichen durch ein hinzugefügtes Paritäts bit zu einer insgesamt geraden Anzahl von Einsen ergänzt (s. Beispiel 9) . Das Paritätsbit wird vom Sender z u jedem Infor mationswort erzeugt und hinzugefügt , vom Empfänger geprüft und gegebenenfalls entfernt . Stimmt im Empfänger die vereinbarte Parität nicht, so ist die Information während der Übertragung
- 25 -
Tafe l 3
I
I
b
b
7
6
ASCII-Codetabelle nach DIN 66003 16 1 I n ternationale Referenzversion
:
I
b
5
b
4
b
3
b
2
b
l
b7 -
0
0
0
0
I
I
I
I
b
--
0
0
I
I
0
0
I
I
--
0
I
0
I
0
I
0
I
0
I
2
3
4
5
6
7
b
6 5
I~ hex Zeile
hex
0
0
0
0
0
NUL
DLE
SP
0
@
P
-
P
0
0
0
I
I
SOH
DCI
!
I
A
Q
a
q
0
0
I
0
2
STX
DC2
"
2
B
R
b
r
0
0
I
I
3
ETX
DC3
#
3
C
S
c
s
4
D
T
d
t
0
I
0
0
4
EOT
DC4
* ):(
0
I
0
I
5
ENQ NAK
%
5
E
U
e
u
0
I
I
0
6
ACK
SYN
&
6
F
V
f
v
7
G
W
g
w
0
I
I
I
7
BEL
ETB
-
I
0
0
0
8
BS
CAN
(
8
H
X
h
x
I
0
0
I
9
HT
EM
)
9
I
Y
i
Y
I
0
I
0
A
LF
SUB
*
:
J
Z
j
z
K
[* k
{* I*
I
0
I
I
I
I
B
0
0
C
FF
FS
,
<
L
\*
I
I
0
I
D
CR
GS
-
=
M
J* m
}*
-
- *
VT
ESC
I
I
I
0
E
SO
RS
I
I
I
I
F
SI
US
+
;
> N /
?
0
n 0
-
Fü r die de u tsc h e Referenzversion si n d in der Tabe ll e * ma r kierten Zeichen wie fo l gt zu ersetzen : [ { durch u nd du rc h un d l:l du rc h '\ du rc h durc h @ d u rc h durch durch J durch
1
I
DEL
d ie mi t $ § ß
- 26 ASCII -Zeichen
07 06 05 04 03 02 01 00 ~Bit-Nr. im Datenwort ~ '-------v----" ~ ZonenZiffernoder teil teil Paritybit
=-1
Bild 6
ASCII-Zeichen im Byte
verfälscht worden. Beispiel 9 zeigt einen Text im ASCII-Code ohne und mit Paritätsbit. Neben der geradzahligen ist auch die ungeradzahlige Parität (engl . odd parity) üblich.
Beispiel 9: Textdarstellung im ASCII-Code. Text
l 7 9
~ ~
(SP) U L M
"7 9~~
ULM"
ASC II- Verschlüsselung ohne Paritybit ~-------,
o
binär
0011 0011 0011 0011 0010 0101 010 0 0100
0111 1001 0000 0000 0000 01 01 1100 1101
hex 37 39 30 30 20 55 4C 40
[_rn!:.: _P~::.i~~b~ t_(~ven binär 1011 0011 0011 0011 1010 0101 1100 0100
0111 1001 0000 0000 0000 010 1 1100 1101
parity )
hex B7 39 30 30 AO
55 CC 40
In der Codetabelle (Tafel 3) sind in den Spalten 2 und 3 die Sonderzeichen und Dezimalziffern verschlüsselt. In den Spalten 4 und 5 sind die Großbuchstaben, in den Spalten 6 und 7 die Kleinbuchstaben abgebildet . Tafel 3 gibt die internationale Referenzversion des ASCII - Alphabets wieder; die mit
* gekenn -
zeichneten Bitkombinationen können national unterschiedliche Zeichen zugeordnet werden . Die Besonderheiten der deutschen Referenzversion sind als Fußnote in Tafel 3 angegeben . Welche der in Spalte 0 und 1 definierten Steuerzeichen in pe ripheren Geräten und Datenübertragungseinrichtungen jeweils verwendet werden , ist den Geräte -Handbüchern zu entne h men. Im folgenden sind einige für das Arbeiten mit dem Oatensicht-
-
27 -
gerät wichtigen Steuerzeichen erklärt , im übrigen sei auf 16 1 verwiesen: CR
Wagenrücklauf
LF
Zeilenvorschub (!ine ! eed); Cursor eine Zeile weiter
(~arriage
~eturn);
Cursor an Zeilenanfang
SP
Zwischenraum (space); Cursor e in Schritt nach rechts
BS
Rückwärtsschritt
(~ack ~pace) ;
Cursor ein Schritt zur ück
Di e Steuerzeichen können auf der ASCI I- Standardtastat ur zum Teil durch gleichzeitiges Dr ücken der CTRL-Taste
(~ontro!)
u nd
einer Buchstabentaste erzeugt werden, sofern k eine Steuerzeichen-Taste vorhanden ist. Dabei bewirkt die gedrückte CTRLTaste d as Löschen der Bitstellen-Nr. 7 im Buchstaben-Code . Zum Beispiel können die Steuerzeich en für das Einschalten (DC1) und Ausschalten (DC3) der Bi l dschirm- Ausgabe durch fo lg e nde Tastenkombinationen erzeugt werden : CTRL - Q CTRL - S
1.1.4
DCl DC3
bewirkt Sender einscha l ten } bewirkt Sender ausschalten
X- ONjX- OFF Steuerzeichen
Befehle, Adressen, Operanden, Assemblernotation
Die Auf gaben, die ein Mikrocomputer letztlich ausführt, werden ihm in Form einer Befehlsfolge vom Programmierer vorgegeben . Die zentrale Verarbeitungseinheit des Mikrocomputers , der Mi kropro zessor, interpretiert die einze l nen Befehle der Rei h e nach u n d führt sie nacheinander aus. Hierzu muß die Befehls folge in einem Speicher liegen, zu dem der Mikroprozessor Zugang h at . Zu einem Programm gehören neben den Befehlen auch Operanden. Das si nd Zahlen, l ogische Binärworte und Zeichen gemäß Abschn. 1 . 1 .1, 1.1.2 und 1 .1. 3, die von den Befeh l en verarbeitet werden . Die P l ätze , auf denen Befehle und Operande n im Speicher li e gen, werden durch Adressen (Speicheradressen) identifiziert. Ei n Speicherplatz oder eine Speicherzelle nimmt jeweils ein Byte auf. Adressen sind natürliche Zahlen. Beim 8085 sind Spe icheradr essen 16 Bit lang , d .h. der Adreßbereic h geh t von Obis 65 535 10 (Bytes) , hexadezimal von
~000
bis FFFF.
Sämtliche Befehle, die ein Mikroprozessor eines bestimmten
- 28 -
Typs versteht und ausführt, sind in einer Befehlsliste festgelegt; in der mittleren Leistungsklasse liegt die Anzahl der realisierten Befehle
etwa
zwischen
50
und
150 .
Befehle
gleichartiger Wirkung werden im a llgemein en in Gruppen zusammengefaßt, was die Übersic ht über den Befehlvorrat eines Pro zessors erleichtert. Beim 8085 unterscheidet man folgende Be fehlsfamilien: Transferbefehle übertragen Daten zwisc hen verschiedenen Orten im Mikrocomputer. Arithmetikbefehle verarbeiten Operanden unterschiedlicher Länge (Addition und Subtr aktion). Logikbefehle bewirken logische Verknüpfungen von Operan den. Schiebefehle zum Verschieben von Registerinhalten Sprungbefehle für Programmverzweigungen auf beliebige Speicheradressen Unterprogramm- Aufruf - und Rückkehrbefehle Sonder- und Steuerungsbefehle. Mikrocomputerbefehle können ausführlich, wie folgt,
ange-
schrieben werden: 1. Befehl:
Lade das Register A mit dem Inhalt des Speicher platzes , auf den die Adresse im Befehl zeigt
2. Befehl:
Tran sportiere den Inhalt des Registers A in das Register B
3. Befehl:
Addiere die Zahl 24
10
zum Inhalt des Registers A
Es wird wesentlich kürzer und übersichtlicher, wenn man für die einzelnen Befehle eine mnemotechnische Kurzschreibweise einführt. Sie ist in der Assemblersprache eines Mikroprozessors festgelegt, die zudem noch die Verwendung von symbolischen Adressen statt absoluter Speicheradressen zuläßt. In Bild 7.a sind die drei Befehle in der 8085 - Assemb l erschreib weise 171 wiedergegeben. Die Befehlsfolge beginnt an der symbolischen Adresse START. De r erste Befehl enthält die symboli sche Speicheradresse SPADR, die den Operanden im Speicher bezeichnet , der zweite Befehl spricht 2 Register mit den Regi sternamen A und B an, und im dritten Befehl ist der Operand
- 29 in
dezimaler
Form
im Befehl
selbst
angegeben
(Direktope -
rand) . Für den Mikroprozessor ist die symbolische Schreibweise der Befehle jedoch noch nicht ausführbar. Er versteht Befehle nur in Form binärer Muster. Vor der Ausführung der Befehle durch den Mikroprozessor
muß
deshalb
ein
Übersetzungsvorgang
(Assembliervorgang) stattfinden, der die symbolische n Assemblerbefehle von Bild 7 .a in Bitmuster gemäß Bild 7 . b umwan de lt. Dabei werden die mnemotechnischen Operationscodes (OpCodes) durch ihre Binärmuster gemäß Befehlsliste ersetzt , für a) Befehle in 8085-Assemblerschreibweise Symbolische Adresse ~o:p::-:c:o:d:e~~A:d:r=e:s::s:e:/:o:p:e:r:a:n~d START :
LDA
SPADR
MOV
B, A
2. Befeh l
ADI
24D
3 . Befeh l
1. Befehl
-
b) Befehle im 8085 - Maschinencode (binär und hexadezimal) Op - Code
Adresse/Op'erand
00111010
00000000
hexadezimal: 3A f'/f'/ f'/A
00001010
01000111 11000110
00011000
1. Befehl
47
2 . Befeh l
C6 18
3. Befehl
c) 8085 - Maschinencode im Hauptspeicher (binär und hexadezimal) Abso lute Adresse
Maschinencode binär
f'/5f'/f'/H :
00111010
f'/5f'/lH:
00000000
f'/5f'/2H:
00001010
}
f'/5f'/3H : f'/5f'/4H:
01000111
}
11000110
f'/5f'/5H:
00011000
}
Bi ld 7
~Jaschinencode
hexadezimal
l.
Befehl
{
3A f'/f'/ f'/A
2. Befehl
{
47
3 . Befehl
{
C6 18
Befehle in 8085 - Assemblernotation und 8085-Maschinencode 171
-
30 -
die symbolische Adresse SPADR wird eine natürliche Dualzahl als absolute Speicheradresse des Operanden eingesetzt, die Registernamen A und B machen den dafür festgelegten Bitnummern Platz und der dezimale Operand 24 wird dual verschlüsselt. Wie in Bild 7.b ersichtlich , ist der erste Befehl 3 Bytes (Op- Code und Adresse), der zweite Befehl 1 Byte lang, u nd der dritte Befehl benötigt 2 Bytes für Op-Code und Operand . Es fällt auf, daß die Registeradressen für A und B mit im ersten Befehlsbyte , das den Operationscode enthält , untergebracht werden. Das ist bei vielen Mikrocomputertypen der Fall . Durch die Dekodierung des Operationscodes erfährt der Mikroprozessor , aus wievielen Bytes der aktuelle Befeh l besteht . In einem Speicher, in dem jede adressierbare Zelle ein Byte aufnimmt , sind die 3 Befehle z.B. ab der absoluten Adresse \
ß5ßßH
Byte für Byte angeordnet (Bild 7 . c); der symbolischen
Adresse START wird die absolute Adresse Die
\
~ür
ß5ßßH
zugewiesen .
den Menschen unhandlichen Bitmuster werde n in Pro -
grammprotokollen und bei Ein - /Ausgabevorgängen in der Regel hexadezimal dargestellt (s . Bild 7 . b und 7 . c) .
,
Professionelle Mikrocomputeranwender lassen den eben beschriebenen Assembliervorgang durch ein Übersetzerprogramm (Assembler) automatisch von einem Computer ausführen.
Ein - Byte - Befehl
Op - Code/r
Befehle mit
Zwei - Byte - Befehl
Op - Code/r
Befe h le mit Reg i sterbezug
Konstante
und Direktoperand
Drei-Byte-Befehl
Regist~rbezug
Op - Code/r
Befe hl e mit Registerbezug
Adresse low
und vollständiger
Adresse high
Speicheradresse
Abkürzungen: Op - Code d . h . Operationscode r d.h. Registeradresse Bi l d 8
Befehlsformate des Mikroprozessors 8085 17 1
- 31 Der vollständige Befe hl ssatz des Mikroprozessors 8085 ist in Absch n. 2 . 2 und 2 . 3 beschrieben. In Bild 8 sind die Mög l ic hkeiten des Befehlsaufbaus (Befeh lsf ormate) im Mikroprozessor 8085 in a l lgemeiner Form zusammengestellt.
1. 2
Struktur und Arbeitsweise von Mikrocomputern
1.2.1
Funktionseinheiten des Mikrocomputers
Der Mensch als Informationsverarbeitungssystem nimmt In forma tion aus seiner Umgebung auf, speichert und verarbei tet sie un d gibt die Ergebnisse bei Bedarf weiter. Er f üh rt damit die 4 Grundfunktionen der Informations- oder Datenverarbeitung aus: EINGEBEN
SPEICHERN
VERARBEITEN
AUSGEBEN
Setzt man automatisc h e Informationsverarbeitungssysteme ein , dann übernehmen diese die Steuerung
und
Ausführung
der v ier
Grundfunktionen. Der Mensch wird in die Rolle des Bedieners gedrängt. Die elektronische Ladenwaage ist ein gut übersc haubares auto ma tisches Datenverarbeitungssystem (Bild 9) , das die
Grund-
funktionen selbständig ausf ühr t : Es liest das ermittelte Gewicht vom externen mechanischen Wiegesystem ein und erhält den Grundpreis der Ware vom Bediener über die Dezimaltastatur; es Dezimal tastatur
Matrixdrucker Steuerung
-1- -- - - -,-, Ver , arbeitung
, I
~-------I . , I Spel-
I cherung Wieg esystem Bild 9
, I
Mikrocomputersystem
Siebensegmentanzeige
Elektronische Ladenwaage als Datenverarbeitungssystem
-
32 -
speichert diese Daten, führt den Verarbeitungsvorgang Preis Gewicht x Grundpreis aus und gibt den Prei s der abgewogenen Ware über die externen Ausgabeeinrichtungen Siebensegmentan zeige und Matrixdrucker aus. Weitere Datenverarbeitungsvorgänge können nach Bedarf vera nlaßt werden , z.B. die Summierung mehrerer Einzelposten
zu
einem Gesamtbetrag . Die Steuerung und Ausführung der Funktio nen gemäß Bild 9 übernimmt heute ein in die Waage eingebautes Mikrocomputersystem . Eine Weiterentwicklung stellt das Kassenterminal (in Kaufhäusern) dar, das im al l gemeinen eine Strichcode - Leseeinrichtung besitzt und zum Datenaustausch mit einem zentralen Computer verbunden ist. Der Begriff Mikrocomputer umfaßt alle Hardware-Komponenten eines Systems mit Au snahme der peripheren Geräte (Matrixdruk ker , Tastatur , Wieg esystem usw . ) ; er e ntspricht der Zentraleinheit gemäß DI N- Norm 44300 14 1. Den Grun dfunktion en i n Bi ld 9 entsprechend besteht
der
Mi-
krocomputer aus 3 Funktionseinheiten , dem Mikroprozessor als ze n traler Verarbeitungseinh eit , dem zentralen Speicher (Haupt speicher) und den Ein - /Ausgabekanälen (Bild 10) . Unter ei n em Mikrocomputersystem versteht man den zentralen Mikrocomputer und die angeschlossenen peripheren Einheiten sowie die erforderliche Software (Bild 10) . Als Software bezeichnet man die Gesamtheit der Programme , die a u f einem Computer bzw. Mikrocomputer ablaufen . Die peripheren Einheiten (PE) umfassen sämtliche Ein - /Ausgabegeräte (z.B Da tensichtgerät, Tastatur , Drucker, Digital-Ein - /Ausgabe , Ana log - Ein - /Ausgabe) und die peripheren Speicher (z . B . Floppy Disc , BUbble - Speicher , Kassettenspeicher). Diese sind vom Hauptspeicher innerhalb des Mikrocomputers zu unterscheiden . Nach Bild 10 stehen die Funktionseinheiten über Datenpfade mitei n ander in Verbindung . Über die Ein - /Ausgabekanäle werden Daten (Befe hl e und Op eranden) von den Eingabegeräten gelesen
- 33 und in den Mikroprozessor übertragen. Der Mikroprozessor verarbeitet Programme, d.h. er holt Befehle aus dem Hauptspeicher und führt sie aus; er überträgt Operanden in den Speicher , die dieser aufbewahrt, und liest sie bei Bedarf wieder aus. Die Ausgabe von Daten erfolgt vom Mikroprozessor über die Ein - / Ausgabekanäle zu den Ausgabegeräten. Größere Datenmengen werden auf peripheren Speichern abgelegt; von dort müssen sie vor ihrer Verarbeitung im Mikroprozessor in den Hauptspeicher geladen werden. Der in Bild 10 gestrichelt eingetragene Datenpfad zwischen Speicher u nd Ein-/Ausgabekanälen ermöglicht eine direkte Daten-Ein - /Ausgabe vom/zum Mikrospeicher unter Umgehung des Mikroprozessors (engl. direct
~emory ~ccess ,
DMA).
r--------, r-I rI I
H I I I I
I I
I I
Hauptspeicher RAM/ROM '-----;'~---...I
Mikro prozessor
I I
')vi' I I I I I I
L ~=
Bild 10
I
s= I I I I I
PERIPHERE EINHEITEN (Ein-/Ausgabe, Speicher)
I Ein - /Aus gabe kanäle
Funktionseinheiten eines Mikrocomputersystems
In Tafel 4 sind übliche Begriffe für Mikrocomputer-Funktions einheiten und ihre Abkürzungen zusammengestellt. Sie entspre chen im wesentlichen DIN 44 300.
- 34 Tafel 4
Bezeichnungen und Abkürzungen für MikrocomputerFunktionseinheiten
deutsch Mikrocomputer MC,
englisch
~C
---------------------Microcomputer MC
Zentraleinheit ZE Mikroprozessor MP,
~P
Microprocessor MP
Zentralprozessor ZP
Central Processing Unit CPU
Hauptspeicher HSP
Main Memory
(Mikro-) Speicher
Memory
Ein-/Ausgabekanal EA-Kanal
Input/Output Channel IOC Input/Output Port IO - Port
Ein-/Ausgabeprozessor EAP
Input/Output Processor IOP
Periphere Einheit PE
Peripheral Unit PU
Mikroperipherie Peripheres Gerät
1 . 2.2
Peripheral Devic e
Bus-Architektur von Mikrocomputern
Bei Mikrocomputern sind die Funktionseinheiten meist durch Busleitungen mit e inander verbu nden. Bild 11 zeigt die typische Architektur eines Mikrocomputers. Ein Bus besteht aus einer Anzahl Sammelleitungen, an die alle Funktionseinheiten des Mikrocomputers angeschlossen sind. Ein Busteilnehmer kann abhängig von seiner Funktion am Bus Sender, Empfänger oder beides sei n. Für jede Busleitung gilt, daß zu einer Zeit nur ein Sender aktiv sein darf; alle übrigen Sender müssen abgeschaltet sein. Bei den fast durchweg üblichen Tri State - Bussen in TTL-Technik müssen daher alle Sender ausgänge - mit Ausnahme des aktiven - hochohmig sein. Die Information auf einer Busleitung kann von mehreren Bus - Empfängern gleichzeitig übernommen werden . Das Buskonzept stellt die ei nf achste Möglichkeit dar, viele Funktionseinheiten miteinander zu ver binden . Eine sternförmige Verbindung der Funktionseinheiten wäre wesentlich aufwendiger. Die Leistungsfähigkeit eines Bus systems ist jedoch insofern beschränkt, als zu einer Zeit -
- 35 -
wäh re nd e in es Buszyklus - nur eine I nformationseinheit zwi sche n 2 Bu steilnehmern übertragen werden kann. Im Systemb u s eines Mikroprozessors sind alle Busleitungen de finiert , d i e für die Übertragung von Daten zwischen den ange s ch lossenen Funktionseinheiten benötigt werden . Er besteht aus 3 Tei l b u ssen : Datenbus , Adre ßbus u n d Steuerbus (s . Bil d 11) .
Systembus Datenbus D7 - 0 Mi kro p r ozessor
I
8 Bit
1'1 Adressenbus AIS1"l'0
16 Bit
1'1
I
MP
Ste uerb us
II
I Takt
Haupt speicher
B
I ROM I
r
Ei n- !Ausgabe kanäle
Ergänzu ngs einh eite n:
GJQ~
- Ti mer - In ter rup t - Ar ithme tik
Ein - !Ausg abe Schnittstel l e n v
Perip here Einheiten Bi l d 1 1
Struk tur ei nes 8 - Bit Mikrocomputers
Der Date n bus ist beim 8-Bit- Mikroprozessor 8 Bit breit
(D7 - ~) ,
so daß während eines Buszyklus ein Byte parallel übertragen werde n kann . Der Datenbus ist bidirektional , d.h. der Date ntra n sfer erfolgt - abhä ngig von der Art des Buszyklus - wahlweise in e i ne der beide n Ric h tungen (vom Mikrop rozessor weg , bzw. z um Mikroprozessor hin) . Üb er den Adreßb u s Überträgt der Mikroprozesso r die aktue ll e Adresse einer Speichereinheit , eines Ein - !Ausgabekana l s oder eines Ergänzungsbausteins (Bild 11) . Der Adreßbus ist unidi -
- 36 rektional, d.h . die Adresse wird stets vom Mikroprozessor (als Sender) aufgeschaltet und von den übrigen Busteilnehmern empfangen. Bei einem 16 - Bit breiten Adressenbus
(A15 - ~)
sind 64 K
Adressen ansprechbar . Durch die Dekodierung eines Teils der Adreßleitungen werden Se l ektionssignale gebildet , die jeweils einen der passiven Busteilnehmer auswählen und aktivieren . Sämtliche Steuer - und Meldeleitungen , die für den Betrieb der Speicher, der Ein - /Ausgabekanä l e un d Erweiterungsbausteine notwendig sind , faßt man im Steuerbus (engl. control bus) zusammen, obwohl manche Steuersignal e nur für einzelne Busteil nehmer relevant sind. Die wichtigsten Steuersignale
si nd
Schreib - und Lesesignale . Sie sagen der adressierten Speicheroder Ein-/Ausgabeeinheit, ob sie ein Informationsbyte auf den Datenbus legen (Funktion Lesen bzw . Eingeben) oder die auf dem Datenbus stehende Information übernehmen
soll
(Funktion
Schreiben bzw. Ausgeben) . Di e Steuerleitungen sind großentei ls unidirektional . Der Steuerb u s des Mikroprozessors 8085 wird im Abschnitt 2 .1. 3 erk l ärt . Die dominierende Stellung des Mikroprozessors am Systembus nach Bild 11 beruht darauf , daß der Mikroprozessor oft der ei nz ige aktive Bustei ln ehmer ist: er betreibt den Bus; schaltet Adressen und Steuersignale a uf und veranlaßt
er die
passiven Busteilnehmer (Speicher, Ein-/Ausgabekanäle , Ergän zungsbausteine) zu bestimmten Reaktionen . Die passiven Funktionseinheiten am Bus können Baugruppen , einzelne hochintegrierte Bausteine oder einfache Pufferbausteine sein, deren Anzahl vom Ausbau des Gesamtsystems abhängt. Die Ergänzungseinheiten stellen im wesentlic h en eine Erweiterung der Pro zessoreigenschaften , z.B . des Interruptsystems oder der Arith metik-Hardware dar . Aufwendigere Mikrocomputer-Konfigurationen erhält man, wenn mehrere (aktive) Mikroprozessoren
an einem Systembus zusam-
menarbeiten und sich bei einer zentralen Bus - Zuteilungslogik um die zeitlich begrenzte Regie über den Systembus bewerben (Multi-Mikrosysteme) . Auch beim OMA- Betrieb (vgl.
Abschn.
-
37 -
1 . 2.1) von schne ll en peripheren Speichern erhält ein DMA- Controller als aktiver Busteilnehmer für die Dauer des Datenaus tauschs die Regie über den Systembus. Der Mikroprozessor hängt sich inzwischen vorn Systembus ab, indern er seine Ausgänge
in
den hochohmi gen Zustand schaltet. Der Systembus ist die Schnittstelle des Mikroprozessors zu den übrigen Komponenten des Mikrocomputersystems. In der vorn Prozessortyp abhängigen Busdefinition ist neben der Anzahl und Bedeutung der Signalleitungen auch der zeitliche Ab l auf der Buszyklen festge l egt . Darüberhinaus gibt es Standardbusse für Mikrocomputer-Platinensysteme, z.B. MULTIBUS oder VME -Bus, die verschiedene Funktionseinheiten über die Rückwandverdrahtung des Baugruppenträgers miteinander verbinden .
1.2 . 3
Hauptspeicher
Die folgenden Betrachtungen beziehen sich auf Speichereinhei ten , die als Teil des Mikrocomputers direkt an den Systembus a n gesch l ossen sind (Bild 11) . Nach
14 1 zeichnen sich Haupt -
speicher dadurch aus , daß Zentralprozessoren und bestimmte Ein - /Ausgabeeinheiten
die
einze ln en
Speicherplätze
durch
Adressen (Speicheradressen) unmittelbar aufrufen können. Statt Hauptspeicher werden auch die allgemeineren Begriffe Zentralspeicher und Speicher verwendet. Nach Abschn. 1.2 .1 muß die aktuell im Mikroprozessor z u verar beitende Information im Hauptspeicher stehen . Stehen Programme und Daten auf peripheren Speichern (Hintergrundspeichern) , so müssen sie vor ihrer Bearbeitung in den Hauptspeicher geladen werden. 1. 2.3.1
Organisation des Hauptspeichers. Di e kleinste adres-
sierbare Einheit des Hauptspeichers ist das binäre Speicher wor t, das in einer Speicherzelle oder einern Speicherplatz steht. Bei 8 - Bit Mikroprozessoren ist das Speicherwort im all gemeinen ein Byte lang. Informationseinheite n, die l ä nger sind als 8 Bit , werden in zwei, drei oder vier aufeinanderfo lgende
- 38 Speicherplätze gelegt. Nach Bild 12 ist jedem 8 - Bit - Speicherplatz einer Speichereinheit eindeutig eine Speicheradresse zugeordnet. Der Umfang des verfügbaren Speicher- Adressenraums n hängt von der Bitanzahl der Speicheradresse ab. Da Speicher einheiten an den Systembus des Mikroprozessors angesch l ossen werden, bestimmt die Breite des Adressenbus (vgl. Abschn. 1.2.2) die Anzahl der adressierbaren Hauptspeicherplätze. Ein 16 - Bit breiter Adressenbus erschließt einen Adressenraum von 16 64 K Worten mit Adressen von 0 bis 2 - 1 bzw. 0 bis 64 K - 1, wobei 1 K = 2 10 = 1024. Adressenbus
Wort-Nr .
+7
o
AlS v
lc:::J
o
n~-> Datenbus
o
D 7
2 1 0 ~ Bit - Nr. Wort 0
1
Wort 1
2 3
Wort 2 Wort 3
4
Wort 4
n - 2
-
~
n - l~
-
Lesezyklus Bild 12
-
fJ
Schreibzyklus
Wortstruktur des Hauptspeichers
Vom Adressenraum zu unterscheiden ist der tatsächlich mit Speicherbausteinen bestückte Teil des verfügbaren Adressen raums, die Speicherkapazität. Die Hauptspeicherkapazität - ge messen in KB = K Bytes - ist ein wichtiges Kriterium für die Beurteilung der Leistungsfähigkeit eines Mikrocomputersystems. Die Größe der verwendeten Speicherbausteine bestimmt die
mög-
lichen Ausbaustufen des Hauptspeichers. Verwendet man 2.B . Bausteine mit 2 KB Umfang, so kann der verfügbare Speicher Adressenraum nach Bedarf in Stufen von 2 K Bytes ausgebaut werden (s. Bild · 13).
- 39 Wird eine Speichereinheit vom Bus her ausgewählt , so kann in einem Speicherzyklus ein Byte vom Datenbus in die durch die Adresse ausgewählte Speicherzelle eingeschrieben (Speicher Schreibzyklus) oder in einem Speicher - Lesezyklus ein Byte aus dem Hauptspeicher ausgelesen und auf den Datenbus geschaltet werden . Während des Speicherzyklus muß die gültige Adresse am Speicher anstehen. Welche Zyklusart auszuführen ist, erfährt die Speichereinheit durch die Interpretation des Lese-Steuersignals
READ
und des Schreib- Steuersignals
WRITE.
Näheres
hierzu in Abschn. 1.2.3.3. Als Hauptspeicher sind nur Speichereinheiten mit wahlfreiem Zugriff einsetzbar , d.h. der direkte Zugriff auf beliebige Adressen innerhalb des Adressenraums muß ohne Einhaltung einer bestimmten Adressenreihenfolge (sequentieller Zugriff) möglich sein. 1. 2. 3. 2
Speicherarten und -technologien. Hauptspeicher von
Mikrocomputern werden fast ausschließlich als Halbleiterspei cher in verschiedenen MOS-Technologien tor) realisiert. Von
(~etal
oxid semiconduc -
den Zugriffsmöglichkeiten her unter -
scheidet man Schreib - /Lesespeicher und Festwertspeicher . SChreib-/Lesespeicher zur Speicherung veränderlicher Daten sind im normalen Betrieb lesbar und beliebig oft beschreibbar. Sie werden als RAM (
~andom ~ccess
~emory)
bezeichnet , was im
Deutschen "Speicher mi t wahlfreiem Zugr iff" bedeutet. Es gibt statische RAMs , deren Speicherelemente Flipflops sind, und dy namische RAMs, bei denen die Binärinformation in den Gate-Sub stratkapazitäten von MOS-Feldeffekttransistoren gehalten wird . Beide Speicherformen vergessen bei Abschalten der Versorgungsspannung ihren Speicherinhalt . Der Festwertspeicher verliert seine einmal eingeschriebene In formation beim Abschalten der Versorgungsspannung nicht . Er kann im Normalbetrieb nicht beschrieben, sondern nur gelesen werden und heißt daher ROM
(~ead ~nly
~emory).
Der Zugriff auf
einzelne Worte ist auch hier wahlfrei. Der Festwertspeicher
- 40 wird zur Speicherung von Programmen und Konstanten im Mikro computer eingesetzt , die man nicht nach jedem Abschalten der Spannung neu eingeben will. Das Einschreiben der Information ist ein gesonderter Vorgang , der entweder schon bei der Herstellung des Speichers stattfindet (maskenprogrammierte ROM Bausteine) oder vom Anwender in speziellen Programmiergeräten vorgenommen wird (PROM - und EPROM-Bausteine , d .h. Erogrammable ROM und steine
~rasable
(~lectrically
Erogrammable ROM). Für die EEPROM-Bau~rasable
PROM) benötigt man weder eigene
Programmiergeräte noch UV-Löscheinrichtungen wi e für EPROMs. dezimal
hexadezimal
odoo
ßßßß
2047 2048
ß7FF ß8ßß
4095 4096
ßFFF lßßß
614 3 614 4
17FF 18ßß
8191 8192
lFFF 2ßßß
63488
F8ßß
65535
FFFF
Bild 13
4 KB ROM/EPROM
2 KB frei
Adreßra um
2 KB RAA
64 KB
frei
Beispiel für Adreßraum und Speicherausbau
Festwertspeicher und Schreib-/Lesespeicher können im Mikrocomputer nach Bedarf nebeneinander eingebaut werden. In Bi l d 1 3 ist ein Beispiel für den Speicherausbau eines Mikrocomputers mit 2- KB-RAA- und ROM-Bausteinen gegeben . Man beachte die Ge genüberstellung der dezimalen und der bei Mikrocomputern übli chen hexadezimalen Zählweise. Da die Halbleiter-Herstel l er zu den gängigen EPROM-Bausteinen (z.B. Typ 2764 mit 8 K x 8 Bit) statische RAA - Bausteine mit nahezu identischer Belegung der Bausteinanschlüsse (z.B. Typ HM 6264 mit 8 K x 8 Bit) liefern, kann derse l be Sockel
in
- 41 einer Mikrocomputer-Schaltung (nach Umstecken weniger ' An schlüsse) mit EPROM - oder RAM - Bausteinen bestückt werden . In der Entwicklungsphase werden als Programmspeicher bevorzugt EPROM-Bausteine eingesetzt , die der Entwickler durch UV-Bestrahlung selbst löschen und mit geeigneten Programmiergeräten erneut beschreiben kann. Beim Übergang zur Serienfertigung können die EPROM -B austeine durch PROM - oder ROM - Bausteine er setzt werden, deren Inh alt nicht mehr korrigierbar ist. Ohne hier eine vo l lständige Übersicht über die aktue llen Bausteintypen und Technologien geben zu können 15711581, sind in Tafel 5 einige viel verwendete Speicherbausteine zusammenge stellt . Die Tafel zeigt die Steigerung der Integrationsgrade bis
1 M Bit pro
Baustein , womit sicher nicht das Ende der
Speicherentwicklung erreicht ist. Die SChnittstellensignale Tafe l
5
Auswahl aktueller Speicherbausteine (1987) Speicherart
Typ
Techno logie
Zugriffs - Hersteller zeit
4 Kx 4
RAM STAT I C
2168
NMOS
100 ns
INTEL
2 Kx 8
RAM STATIC RAM STATIC EPROM EEPROM
2128 HM6116 2716 2816
NMOS CMOS NMOS NMOS (H)
1 50 120 350 250
INTEL HITACHI AMD INTEL
Organi sation
ns ns ns ns
4 Kx 8
EPROM
2732A
NMOS (H)
200 ns
INTEL
8 Kx 8
RAM STATIC EPROM EPROM ROM
HM6264 2764A R87C64 TC5365
CMOS NMOS ( H) CMOS CMOS
100 200 250 250
HI TACHI INTEL ROCKWELL TOSHIBA
64 K x 1
RAM STATIC RAM DYNAMIC
j.lPD4361 M5K4164
CMOS NMOS
40 ns 1 50 ns
NEC MITSUBISHI
16 K x 8
EPROM ROM
27128 23C 128
NMOS (H) CMOS
200 ns 150 ns
INTEL NEC
32 K x 8
EPROM RAM STATIC
27C256 CHMOS j.lPD43256 CMOS
170 ns 100 ns
INTEL NEC
120 ns
HITACHI
100 ns
S IEMENS
256 K x 1
RAM DYNAN I C
HM50257
IMx l
RAM DYNAMIC
HYB511000
Abk.:
NMOS
(H) d .h. HMOS - Technologie von INTEL
ns ns ns ns
- 42 der Bausteine sind - unabhängig von der angewandten Technolo gie - TTL-kompatibel. Die Versorgungs spannungen sind bis auf wenige Ausnahmen einheitlich + 5 V. Bei höheren Integrations graden gehen viele Hersteller von der NMOS - Technologie auf die wesentlich verlustärmere CMOS-Technologie über , da bei stei genden Integrationsgraden die Verlustleistung pro Bit gesenkt werden muß . Statische RAM - Bausteine sind in der Anwe ndung einfacher als dynamische RAMs, da sie keine Refresh - Logik zum zyklischen Er neuern der flüchtigen Speicher inhalte benötigen. Trotzdem wer den dynamische RAM-Bausteine wegen ihres niedrigen Preises pro Bit viel eingesetzt . Zu allen EPROM-Bausteinen sind schnittstellengleiche, masken programmierte ROMs lieferbar. Die neueren EEPROM-Bausteine er fordern für den zeitaufwendigen Lösch - und Schreibzyklus (la ms/Byte beim Typ 2816) im Vergleic h zu den EPROMs zusätz liche Schaltungsmaßnahmen. Die Weiterentwicklung der EEPROM - Techno logie könnte langfristig die RAM - und ROM/EPROM - Bausteine er setzen 1.2 . 3 . 3
1581. Aufbau und Schnittstelle von Speicherbausteinen.
Hauptspeicher von Mikrocomputern können aus einem oder mehreren hochintegrierten Speicherbausteinen bestehen. Beim Zusammenschalten mehrerer Bausteine werden aus den höherwertigen Bitstellen der Speicheradresse AlS (~hip ~elect - Signale
Z die Freigabesignale
CS, low active) für die einze lnen Bau-
steine gewonnen (s. Abschn. 4.2.2 und 4.2.3), während die nie derwertigen Adreßbits zur Auswahl der Speicherworte innerhalb des Bausteins direkt an den Sc h altkreis anzu l egen sind . Bild 14 zeigt die interne Struktur eines statischen Lese - /Schreib Speicherbausteins mit der Kapazität 2 K x 8 Bits . Die einzel nen Speicherelemente (Bitspeicher) werden durch Koinzidenz von Zeilen- und Spaltenleitungssignalen
ausgewählt , die sich aus
der internen Dekodierung der 11 Adreßleitungen AIO Die Daten l eitungen D7 -
~
ergeben.
0 sind im Ruhezustand hochohmig und da -
mit vom Datenbus abgekoppelt . Die Datensender im Baustein wer -
- 43 den nur aktiviert, wenn der eS-Eingang und das Lese-Steuersig nal RD
(~ea~)
auf low - Pegel geschaltet werden: es liegt ein
Speicher- Lese zyklus vor. Nehmen das eS - Signal und das Schreib Steuersignal WR (write) low - Pegel an , werden die Datenempfän ger im Baustein aktiviert : in einem Speicher- Schreibzyklus wird das Datenwort vom Bus in ein Speicherwort eingeschrieben .
AO A3 AS AG
1 1 1
A7
1 1
A8
1
Ag
1
X/Y
Speicher Zei len deko die rer
matrix 128 x 1 28
........ DO Dl D2 D3 D4 D5 D6 D7
SpaltenEin-/Ausgabe
WR es RD
Bild 14
Struktur eines RAM - Bausteins (Organisation 2 K x 8)
Bei EPROM - Bausteinen gibt es statt der Daten - Eingabesteuerung eine Programmier logik und statt des Schreib - Steuereingangs WR einen Programmiereingang . In ROM-Bausteinen sind keiner l ei Vorkehrung e n für Dat e n - Eingabe zu finde n, es gibt auch keine
- 44 Lese-/Schreib - Steuerleitungen. ' Aufbau und Daten verschiedener Speicherba u steine sind in 1541 gegebe n. Die exakte Beschreibung des Lese- und Schreibvorga n gs an der Schnittstelle von Speicherbausteinen erfolgt mit Hilfe
von
Signal - Zeitdiagrammen (Bild 15 und 16) . Sie sind die Grundlage für den Anschluß von Speicherbausteinen an den Systembus des Mikrocomputers . Die Einhaltung der Min . -/Max .- Zeitangaben in der angefügten Tabelle sichert der Herstel l er zu . Beim Lesezyklus (Bild 15) müssen die Adressen insgesamt minde ste n s 150 ns (t 150 ns (t
) anstehen . Nach der Zugriffszeit von max . RC ) bzw . nach tCE (max. 150 ns) bzw. nach t OE (max .
ACC 50 ns) legt der Baustein 2128 den Inhalt der adressierten
f - - - - - - t RC - - - --
--1
Adresse
RD (OE) D7 - 0 (D out ) ----/7---~~[:JD~a~t~e~n~g[u~ ·· Il!tIi~9~~~~~-hochohmig (HZ) '-..:.. Daten undef iniert Y Einige , vom Hersteller garantierte Zeit - Parameter (Bsp Symbol
Parameter
min .
2128) : max.
-
t RC t ACC
Read Cycle Time (Lese - Zykluszeit) Address Access Time (Zugriffszeit)
150 ns
tCE t OE t OH t OHZ t CHZ
Chip Select Access Time
150 ns
Bild 15
150 ns
50 ns
Output Enable Time Output Hold Time from Address Change
0
-
Output in HZ (hochohmig) from OE
-
50 n s
Output in HZ (hoc h o hmig) fro m CE
Lesezyklus für RAM-Baustein (Daten 2128 1541)
50 ns
- 45 Byte - Zelle auf die Datenleitungen D7
-~ .
Er schaltet sie nach
den angegebenen Haltezeiten erst wieder ab , wenn sich Adressen ändern und die Steuersignale CS und OE
(~utput
die en-
able) inaktiv werden. Das Schreib-Steuer signal WR liegt wäh rend des Lesezyklus auf hi·gh - Pegel. Auch beim Speicher - Schreibzyklus (Bild 16) muß die gültige Adresse insgesamt mindesten 150 ns (t
)' bzw. mindestens 150 wC ns (t AW ) lang bis zur Beendigung des Schreibzyklus durch Ab schalten der Steuersignale CS (= CE) oder WE (WR) anstehen .
Der Speicherbaustein schaltet die internen Daten- Eingangspuf fer zur Übernahme des Informationsbytes vom Datenbus ein , wenn die beiden Steuersignale CS und WR aktiviert sind . Während der
t
wc
Adresse t
Ch"fl~t-\
'-
CS (CE) f-tAS
J \ \\\\\\'( ".
Aw
t
cw t
t wp
tDS CDaten
t
WR
DH
stabil )(
hochohmlg (HZ) Einige, vom Hersteller garantierte Zeit-Parameter (Bsp . 2128): min.
max .
Write Cycle Time (Schreib - Zykluszeit)
150 ns
t cw
Chip Se l ection to End of Write
150 ns
t
Address Valid to End of Write
1 50 ns
Symbol
Parameter
AW tAS t wp
Write Pulse Width (Schreib-Impulslänge) 75 ns
-
t
Write Recovery Time
-
~twc
WR tDS It DH Bild 16
Address Setup Time (Adreß - Vorlaufzeit)
0 0
Data Setup Time (Daten-Vorlaufzeit)
50 ns
Data Hold Time
-
50 ns
Schreibzyklus für RAM - Baustein (Daten 2128 1541)
- 46 -
vorgeschriebenen Mindestzeiten für t cw und t
wp
muß die gültige
Adresse anstehen, da sonst fehlerhafterweise in einen anderen Speicherplatz geschrieben wird . Die richtigen Eingangsdaten müssen mindestens tos ;
50 ns vor Beendigung des Schreibzyklus
stabil sein. Während des gesamten Ablaufs bleibt das LeseSteuersignal RD (; OE) inaktiv . Der Mikroprozessor, der das Zeitverhalten der Signale (mit Ausnahme des OMA-Zyklus) auf dem Systembus bestimmt , muß die beschriebenen Zeitanforderungen der Speicherbaustei n e während des Lese - und Schreibzyklus einhalten , wenn ein einfacher (synchroner) Speicheranschluß möglich sein soll (s . Abschn . 2.1 . 3) . 1. 2 . 4
Mikroprozessoren
Der Mikroprozessor führt die Befehle der Programme aus , die a l le Abläufe inner - und außerhalb des Mikroprozessors veran l asse n. Der Mikroprozessor besteht aus einem ausführenden Te i l , dem Rechenwerk , und einem steuernden Tei l, dem Leitwerk oder Steuerwerk . Das Leitwerk liest während eines Befehlzyklus einen Befeh l aus dem Hauptspeicher des Mikrocomputers aus , in terpretiert ihn und bringt ihn zur Ausführung . Die Ausführung geschieht ganz oder teilweise im Rechenwerk . Bi l d 17 zeigt die vereinfachte Struktur eines Mikroprozessors , wobei die linke Bildhälfte das Leitwerk und die rechte Bi l d hä l fte das Rechenwerk darstellt. Sämtliche Komponenten sind über einen internen Datenbus miteinander verbunden. An den in ternen Datenbus sind über bidirektionale Puffer die Datenleitungen des Systembus angeschlossen . Es werden Datenwörter fester Länge verarbeitet . Bei 8 - Bit Mi kroprozessoren beträgt die Verarbeitungsbreite 8 Bit , d.h . Re gister, Datenpfade und Verknüpfungseinheit (ALU) sind jeweils 8- stellig vorhanden. In der ALU geschieht die eigentliche Ver arbeitung von Datenwörtern (Operanden)
(Bild 1 7 , rechte Hälf-
te ). Die ALU ist eine kombinatorische Schaltung , die ständig die zwei 8-Bit Operanden an ihren Eingängen A und B miteinan-
- 47 S Y s t e m bus
r---------------________A,
{Steuerbus
________________________
Adressenbus
Datenbus'
MultiRegister block
Status - / Me lde -
Steuersignale Takt
Bild 17
Struktur von Mikroproz essoren
Abkürzungen : BZ BR ADR F A ZR AL U
Befehlszähler (PC) Befehlsregister (IR) Adressenregister Flag - RegIster Akkumulator Zwischenregister ArithmetIc and ~ogic Unit
der verknüpft , und zwar in der durch die Ablaufsteuerung vor gegebenen Art und Weise (ALU-Funktion). Die ALU führt ein schrittige arithmetische Operationen (z . B. HA plus B", HA minus B", HA plus 1") und logische Operationen (z.B . HA UND B", HA ODER E", "A") aus . Das Ergebnis erscheint
an i h rem Ausgang
C. Mehrschrittige arithmetische Abläufe wie MUltiplikation und
- 48 Division müssen der ALU als Folge von Additions- bzw . Subtrak tionsschritten einzeln vorgegeben werden. Der Akkumulator (Akku oder A-Register) ist ein Register von zentraler Bedeutung, da stets ein Operand am ALU - Eingang A aus dem Akkumulator stammt und bei vielen Befehlen das Ergebnis der ALU-Operation in den Akkumulator zurückgeschrieben wird. Der zweite Operand wird vom internen Datenbus über ein ZwisChenregister auf den Eingang B geschaltet. Das Zwischenregi ster ZR dient ausschließlich zur Entkopplung der "Rechen schleife", die sich ergeben würde, wenn ein Operand auf dem Datenbus ansteht und der Ergebnisausgang der ALU ebenfalls auf denselben Bus führt. Neben dem Akkumulator ist im allgemeinen ein Block von mehre ren programmierbaren Registern an den internen Bus angeschlos sen, die als Kurzzeitspeicher ' Operanden und Adressen aufneh men . Die Bedingungskennzeichen (flags) im F l ag - Register F kenn zeichnen die Ergebnisse von ALU - Operationen , z . B., ob ein Übertrag (carry) aufgetreten ist, ob das Ergebnis Null oder negativ ist . Für die Funktion des Leitwerks (Bild 17 linke Hälfte) sind im Prinzip 3 verschiedene Register kennzeichnend. Das Befehlszäh ler - Register BZ (engl. Erogram
~ounter
pe) enthält stets die
Adresse des nächsten, aus dem Hauptspeicher auszulesenden Be fehlsbytes ; nach Abschn. 1.1.4 kann ein Befehl ein, zwei oder drei Befehlsbytes lang sein . Nach jedem Befehlhol zyk lus (engl . instruction fetch) wird der Befehlszähler automatisch um 1 erhöht . Sprungbefehle laden eine neue Programmfortsetzungsadresse in den Befehlszähler . Das erste Byte eines jeden Befehls wird im Befehlsregister BR (engl.
~nstruction ~egister
IR) für die Dauer des Befe hlszy-
klus zwischengespeichert . An das Befehlsregister ist der Be fehlsdekodierer angeschlossen (Bild 17) . Ergibt sich bei der Vordekodierung des Operationscodes , daß ein zweites Byte des Befehls einen 8-Bit Direktoperanden (Bild 8) enthält, so wird
- 49 -
der Befehlszähler nach seiner Inkrementierung erneut auf den Adreßbus geschaltet und der Direktoperand in einem weiteren Speicher - Lese zyklus geholt. Er gelangt auf den internen Datenbus und kann von hier aus beliebig weiterverarbeitet werden . Ergibt die Vordekodierung des Operationscodes, daß zum Befehl eine 16 - Bit lange Speicheradresse gehört , dann werden in zwei weiteren Speicherzyklen
die zwei folgenden Adreßbytes ausge -
lesen und in ein spezielles, 16 - Bit l anges Adreßregister ADR geladen , das für die Zwischenspeicherung von Operandenadressen vorgesehen ist. während der folgenden Ausführungsp h ase des Be fehls wird diese Adresse zum Auslesen oder Einschreiben eines Operanden aus/in den Hauptspeicher benötigt . Der Inhalt des Adreßregisters ADR ist über einen Multiplexer auf die Adreß l eitungen des Systembus aufscha l tbar. In Bild 18 ist die Funk tion der 3 wesentlichen Leitwerksregister BR , BZ und ADR wäh rend des Befehlszyklus grafisch veranschaulicht . Hauptspeicher BR Op - Code BZ
I Befehlsadresse ~ IADR operandenkdresse I I
',---- ----
Bild 18
Erläuterung : ~
Transport von Information
__ - - Adresse zeigt auf Wort
Zur Funktion der Leitwerksregister BR, BZ und ADR
Das eigentliche Steuerungs zentrum innerhalb des Leitwerks ist die Ablaufsteuerung . Zum Erzeugen der Steuersignale , di e die Abläufe auslöse n, benötigt sie Informationen von verschiedenen Seiten (Bild 17) . Die Befehlsdekodierung liefert (operations codeabhängige) Dekodiersignale, die der Ablaufste uerung sagen ,
- 50 was zu tun ist . Status - und Meldesignale zeigen den aktue l len Zustand des Mikroprozesso rs (Prozessorstatus s . Abschn . 2 . 1) und externe Bedingungen (Programmunterbrechung , Warteanforde rung) an , die zu berücksichtigen sind . Eine Zeitschaltkette erzeugt aus einem angelieferten Grundtakt die verschiedenen Taktzu stä nde Tl' T
... T , die das zeit l ic h e Ra ster für d ie 2 n Steuersignale festlegen. Die üblichen Grundtakte l iegen zwi schen 2 MHz und 16 MHz .
Die Ablaufsteuerung kann entweder als synchrones Schaltwerk aus Zustands speichern und logischen Verknüpfungen realisiert sein (engl . hardwired logic) oder als speichermikroprogrammiertes Steuerwerk mit einem Mikroprogrammspeicher. Dieser Mi krop rogrammspeicher ist zu unterscheiden vom Hauptspeicher , der die Mik rocomputer - Befehle aufnimmt. Die letztgenannte Lösung ist oft in 16 - Bit - Mikroprozessoren mit großem Befeh l svor rat realisiert , während das zuerst genannte Konzept vielen einfacheren Mikroprozessore n, auch dem 8085 , zugrundeliegt . Auf die detaillierte Darstellung der zwei Realisierungsformen wird hi er verzichtet . Aus der Vielzahl der Veröffentlichungen zum Schaltwerksentwurf seien hier 18 1,
191,
110 I und 1111 ge -
nannt . Die erzeugten Steuersignale (auch Schaltwellen genannt) veranlassen sämtliche Mikrooperationen innerhalb und aUßerhalb des Prozessors . Mikrooperationen sind kleinste, zeitlich n icht weiter unterteilbare Hardware - Abläufe , z.B . Transporte zwi sc h en Registern, Inkrementiere n des Befehlszählers , ALU-Op era tionen , Verschieben eines Registerinhalts um eine Stelle. Ein Mikrocomputer - Befehl setzt sich aus einer genau definierten Folge von Mikrooperationen zusammen , die durch die entspre chenden Steuersignale veranlaßt werden.
1 . 2.5
Abläufe im Mikroprozessor
Nach Abschn. 1.2.4 setzt sich ein Mikroprozessorbefehl aus einer Folge von Mikrooperationen zusammen , die auf der Mikro prozessorstruktur (Bild 17) ablaufen . Um zu einer übersicht -
- 51 l ichen und aufwandsoptimierten Ablaufsteuerung zu gelangen , wird j eder Befehlszyklus in eine Befehls - Abrufphase und ei ne Befehls - Ausführungsphase unterteilt, die nach Bild 19 zyklisch aufeinanderfolgen . 1.2 . 5 . 1
Startvorgang . Wie wird d ie
Ab l aufsteuerung nach dem Einschalten der Versorgungsspannung gezielt zum Abarbeiten des ersten Befehls in einem Programm veranlaßt? Durch Drü kken der Rücks etztaste (Reset-Taste) ode r durch implizites Rücksetzen beim Einsch alten d er Versorgungsspannung (Einschalt - Reset) wird ei n Rüc kset z impuls a m Mikroprozessor erze ugt , der den St artvorgang einleitet . Das Re setsignal unterbricht alle Abläufe i m Mikropr oze sso r und erzwingt ei ne Ver zweigung des P rogrammab l a uf s au f e in e festgelegte Startadresse (Kaltstart adresse) . Hie rzu überschreibt die in -
Bild 19 Ein schaltvorgang und Befeh lszyk l us
terne Ablaufsteuerung das Befehlszähler - Register BZ hardwaremäßig mit der Kal ts tartadresse u nd ruft de n Befehl aus dem Hauptspeicher ab , auf den der Befehls zähler dann zeigt . Bei v i elen Mikroprozessortypen bewirkt das Resetsignal ei n fac h das Löschen des Befehlszähler - Regi sters , so daß der erste Befehl des Startprogramms auf der Speicher adresse 0000H stehen muß (Bild 20). In der Regel ist das Startprogramm unzerstörbar in einem ROM-Speicher abge l egt . Es belegt bestimmt e Proz essorregister und Speicherze l l e n mi t Ausgangs we rten, nimmt Gerätee in ste llu nge n vor , und meldet sich dem Be diener z . B. in der Form : "MONITOR V. l.O ". Das Startprogramm wird deswegen auch a ls Initialisierungsprogramm bezeich net . 1. 2 . 5 . 2
Befehlsablauf . Die übrigen Befehlszähler - Funktionen
nach Bild 20 werden i m " normalen " Befehlsablauf benöt i gt . Die
- 52 ROM
,...------ ----,
I I
BZ
2 .Befe hl
_ _ _ _ _ ../'0. __ ,
i--"
T
1. Be f eh l
,
I~ I~ I~ I~ I
Star t pro gramm
usw.
(hex)
~v~ ~ ' - - - - --{ +
BZ inkrementie r en 1 Bild 20
1
Rüc ksetzs ignal (Sy stemstart)
-
-
BZ laden bei Sprüngen
Funktion e n d es Befehlszähler - Registers BZ
Inkrementiereinrichtung erhöht den Befehlszählerinhalt nach jedem Auslesen eines Befehlsbytes aus dem Speicher um eins . Bei Programmverzweigungen (Sprüngen) wird der Befe hlszähl er mi t der im Sp rungbefe hl angegebenen Adresse üb erschrie b e n . Ei n e Übersicht über die möglich en Ab läuf e bei Abruf und Aus fü h rung der Mikroprozessorbefehle gibt Bild 21 . Di eses allge meine Befehlsab l aufdiagramm l iegt dem 8085 und vie l en 8 - BitMikroprozessoren z u grunde. Geht man von den üblichen Befehlsformaten e in es Mikroprozessors gemäß Bild 8 aus , dann sind in der Befehls - Abrufphas e abhängig vom Operationscode i m erste n Befehlsbyte - ein , zwei oder drei Befehlsbytes aus dem Speicher abzurufen . Danach wird der Operationscode im Leitwerk erneut auf andere Weise ent schl üss e l t , um den Einstieg in die richtige Befehls - Au sfüh rungsphase zu finden . Dabei denkt man zunächst an die Ausfüh rung d e r verschiede n e n Operations arte n zur Datenverarbeitung wie Addition, Subtraktion , Logische Verknüpfungen, Datentransporte und Programmverzweigungen (vgl . Befehlsfamilien in Ab se hn. 1.1 . 4) . Die Darstellung aller Operationsarten in dem allgemeinen Befehlsablaufdiagr> amm ergäb e sehr viele Verzwei gungen der Ausführungsphase, die sich oftma l s n ur in der Steuer ung der ALU - Funktion unterscheiden. Des h a lb wird die eigentli ch e Befehlswirkung in Bi ld 21 einheitlich durch e in e n
I
Ausführung J.m MP
1
. . mi t REG -opd
Befehle
BZ+l
,I
Schreiben!
Verarbeitung de s opd im MP
I opd
I
des opd l
Ermitteln vonJ adr
.. mi t HSP-opd
I Lesen
I
I
I
1
holen
konst
T
Bild 21
1
I
I
Befehlsausführung
1
Sonstige Befehle
Allgemeines Befehlsablaufdiagra mm
BZ_ adr
1Transport
Ermitteln vonJ adr
I
Sprung befehle
/
13. Befehlsbyte [ holen BZ+l
BZ+l
3- Byte -Befehl
adr .. . Speic opd ... Opera konst .Direktoper and MP .... Mikroprozessor BZ .... Befehlszähler REG .. . Register HSP ... Hauptspeicher
r. .... Regis
Abkürzungen
12 . Befehlsbyte 1
BZ+l
(Ausführungsphase)
Ausführ ung im MP
.. mit
I
l-Byte - Befeh l
Op-code vordekodierung
Op - code-Dekodierung
[2. Befehlsbyte holen
2-Byte - Befehl
ll. Befehlsbyte holen
l
)...
..... \.Befehlszyk l us
r
Ln W
-
54 -
Ausführungsblock dargestellt. Von allgemeiner Bedeutung für alle Befehle sind Art und Herkunft der zu verarbeitenden Ope randen , die vor der eigentlichen Ausführung der Operation be reitgestellt werden müssen . Nach Bild 21 können die Operanden wahlweise in einem oder mehreren Registern des Prozessors ste hen (Registeroperand), im Befehl direkt angegeben sein (Direktoperand , engl . immediate operand) oder aus dem Hauptspei cher des Systems ausgelesen bzw. in diesen übertragen werden (Speicheroperand). Register - und Speicheroperanden können vom Befehl abhängig - Quelloperand, Zieloperand (Ergebnisope rand) oder beides zugleich sein . Beispiel 10: Register - Speicher-Befehl "ADD r , adr ". Wirkung des Befehls : Der Inhalt eines Arbeitsregisters r ergibt sich durch Addition des Speicheroperanden (adr) zum bisherigen Register inhalt: Schreibweise:
(r)neu - - - - (r)alt Register Zieloperand
+
RegisterQuelloperand
(adr) SpeicherQuelloperand
Da Befehlsfolgen durch das laufende Programm nicht verändert werden sollen , ist der Direktoperand ausschließlich Quellope rand . In einem Befehl können Operanden unterschiedlicher Her kunft verarbeitet werden (Bsp.
~O).
In der Ausführungsphase (Bild 21) sind die Sprungbefehle als eigener Zweig dargestellt , weil hierbei die Speicheradresse das Verzweigu n gsziel angibt. Der Zweig " Sonstige Befehle " steht für Befehle ohne Operanden (z . B. HALT-Befehl) , für Sy stembefehle (z.B. EI, d.h .
~nable ~nterrupt)
und Ein - /Ausgabe -
befehle , die eine Ein - /Ausgabeadresse mitführen. 1 . 2.5 . 3
Adressierung . Durch die drei unterschiedlich langen
Befehlsformate in der 8- Bit - Mikroprozessortechnik paßt sich die Befehlslänge und damit der Speicherbedarf gut an die Er fordernisse der Operandenadressierung an . Man unterscheidet üb licherweise Einadreßbefehle mit einer expliziten Adreßangabe
- 55 und Zweiadreßbefehle mit zwei expliziten Adressen im Befehl. Die Adreßangaben können Speicheradressen und Registeradressen sein , sofern der Mikroprozessor außer dem Akkumulator über mehrer e programmierbare Mehrzweck-Register verfügt. Der Mikroprozessor 8085 hat mit dem Akkumulator sieben 8-Bit lange Mehrzweckregister. Di e implizite - im Operationscode festgelegte - Einbeziehung des Akkumulators zählt nicht als Adressierung. Die ersten 4 Adressierungsa rten (Bild 22 bis einschl. Bild 25) sind im Mikroprozessor 8085 1121 1131 realisiert. Die gewählten Befehle aus dem 8085-Befehlsvorrat sind Beispiele für die jeweilige Adressierungsart und darüberhinaus für mögliche Ausführungsphasen nach Bild 21. 1. Registeradressierung Im ersten Befehlsbyte ist die Adresse r eines Registers angegeben , das den Operanden enthält. Registerblock
Befehl (1 Byte) lopcode
Ir I
r = 0 1--------1
Y
r = 1 L _ _ _ _ .._
~""'..............,....,.~,-I
c:::==~~" l"
r = 3
Bild 22
Registeradressierung im Befehl " INR r "
Der Befehl " INR r " (Inkrementiere kung: (r) _ (r) + 1 .
~egister
r) hat die Wir -
Zur Adressierung der Speicherzellen des Hauptspeichers (RAM bzw. ROM) werden im Mikroprozessor reale , absolute Speicher adressen gebildet . Dabei stellt die Ablaufsteuerung nach Maß gabe des Operationscodes eine auf den Anfang des
physikal~
schen Speichers bezogene, absolute Adresse bereit und über trägt diese an die Speichereinheit. Im Gegensatz dazu entsteht bei virtueller Adressierung (z . B. paging) zunächst eine virtu -
- 56 elle Adresse , die vor dem Zugriff auf den Speicher in eine re ale Speic h eradresse übersetzt werden muß
[1 4 [.
2. Direkte Speicheradressierung Der Befehl enthält im zweiten und dritten Befehlsbyte eine vol l ständige reale Speicheradresse adr , die auf einen Ope randen im Hauptspeicher zeigt (Bild 23) oder ein Sprungzie l a ngibt .
Befehl (3 Bytes)
Speicher
Opcode \.'------~v,..-------'/ I IL ______ _ _ __ _
Bild 23
Direkte Speicheradressierung im Befehl " LDA adr"
Der Befehl "LDA adr "
(~a3e
den
~kkumulator
A mit dem Spei -
cheroperand von Adresse adr) ist ein Einadreßbefehl mit der Wirkung:
(A)-.- (adr). Der Akkumu l ator A wird implizit
adressiert. 3. Indirekte Speicheradressierung
Bei der register-indirekten Adressierung wird die l6-Bit lange
Speiche radr~sse
aus einem Register bzw. Registerpaar
entnommen , das im Befehl explizit oder implizit angegeben ist. Voraussetzung ist dabei , daß die Speicheradresse (auch Index) vorher durch andere Befehle in das Registerpaar geschrieben wurde . Befehle mit register-indirekter Adressierung sind Ein-Byte - Befehle , die neben dem Operationscode ggfs. eine Registeradresse enthalten . Der Befehl " ADD M"
(Addiere den Speicheroperanden , dessen
Adresse im Registerpaar HL steht , zum Akkumulatorinhalt) des 8085 entnimmt die Adresse adr des Speicheroperanden dem
-
57 -
Registerpaar HL des Registerblocks (Bi l d 24). In der formalen Beschreibung der Befehlswirkung:
(A)..__(A) + ((HL))
ist ((HL)) der Speicheroperand , auf den die Speicheradres se (HL) im Registerpaar HL ze igt. Speicher
Registerblock
Befehl (1 Byte)
I Op-Code J
adr
~
0
~ I
I L _____ H
implizite Registerauswahl
adr high
L
adr low
A
Ergebnis
n
TI Bild 24
Register-indirekte Adressierung im Befehl "ADD M"
Bei der speicherindirekten Adressierung ist im Befehl eine Speicheradresse adr enthalten, die auf die im Speicher liegen de Adresse eines Speicheroperanden zeigt; im Mikroprozessor BOBS nicht vorhanden . 4. Direktoperand- Adressierung Bei der Di rektoperand- Adressierung (engl. immediate ope rand) ste h t ein I-Byte-Operand im zweiten Befehlsbyte (Bild 25), e in 2- Byte-Operand im zweiten und dritten byte. Der BOBS-Befehl "MVI Befehl (2 Bytes) lopcode
Ir I
konst
I
'-v-''---.r-----'
L ____
Bild 25
Befe hl s -
r,konst " (Lade Register r mit Registerblock r
~
0
1
- - - - - - - ' ORerand
Direktoperand i m Be fehl " MVI r , konst"
- 58 Direktoperand konst) lädt den Direktoperanden in ein Arbeitsregister mit der Adresse r:
(r)~konst.
Der im Mikroprozessor 8085 häufig verwendete Befeh l Inde~
rp , adr " (!:ade
"LXI
lmmediate) lädt die im Befehl enthal-
tene l6 - Bit Adresse adr unmittelbar in das angegebene Registerpaar rp: 5.
(rp) _
adr.
Indizierte Speicheradressierung Nicht im 8085 realisiert , aber ansonsten weit verbreitet ist die indizierte Adressierung. Befeh l e mit dieser Adres-
Befehl
Speicher
Opcode
X
'-.r-' I
Registerblock
~
Indexwert (X)
-
+
__ EA
Op~rand~
Abk.: EA d.h. Effektive Adresse Bild 26
Ind izierte Speicheradressierung sierungsart addieren Speicher
hardwaremäßig zu dem konstanten Adreßteil adr aus dem Befehl eine im Programm veränderba re Adreßkomponente aus
v TAB-Element }
Tabell e
e inem Indexregister X,
TAB
den Indexwert (X)
(Bild
26) . Vor jedem Spei -
Bild 27
Indizierter Zugriff auf Tabelle
cherzugriff während der Ausführungsphase bildet der Prozessor die ef -
-
fektive
Speicher~dresse
EA:
59 -
EA~adr
+ (X). Als Indexregi-
ster sind in der Regel die Mehrzweckregister ansprechbar . Die indizierte Adressierung erleichtert den Zugriff auf die El emente einer Tabelle. Nach Bild 27 zeigt dabei adr auf den Anfang der Tabelle TAB, während der Indexwert (X) ein Element innerhalb der Tabelle auswählt. Durch Verändern von Indexwerten während des Prograrnrnlaufs kann eine Befehlsfolge unterschiedliche Tabe llenelemente bearbeiten. 1.2.6
Ein - /Ausgabe und Peripheriegeräte
Zum Austausch von Information zwischen dem Mikrocomputer und seiner Umgebung werden Peripheriegeräte benötigt (Periphere Einheiten PE vgl. Bild 10). Ebenso wie die Speichereinheiten können periphere Geräte nur über die Systembus -Schnittstelle an den Mikroprozessor angeschlossen werden . Entsprechend den vielseitigen Einsatzmöglichkeiten von Mikrocomputern gibt es eine Vielzahl unterschiedlicher Peripheriegeräte: Periphere Speicher
*
Diskettenspeicher (floPPY disc), Plattenspeicher (Winchester drive)
* Digital-Kassettenspeicher, Audio - Kassettenrecorder * Magnetblasenspeicher (engl. magnetic bubb l e memory) Ein-/Ausgabegeräte
* Schalter, Taster, Hexadzimaltastatur, ASCII - Tastatur
* LED (engl. light emitting diode), LED-Zeilen, Siebenseg mentanzeigen, Punktmatrixanzeigen, Flüssigkristall-Displays
* Datensichtgeräte mit Tastatur, Grafiksichtgeräte , Monitore * Fernschreiber, Teletypes * Drucker (Matrixdrucker, Typenraddrucker), Plotter * Digitalisier-Eingaben
* Lochstreifengeräte Prozeßperipherie
* * * *
Digital-Ein-/Ausgabe (passiv/aktiv) Analog-Ein - /Ausgabe (passiv/aktiv) Sensoren für physikalische Größen Stellglieder
- 60 Eine spezielle Form der Ein-/Ausgabe ist die Kopplung von Mikrocomputern über lokale Netzwerke (LAN d . h. Local area network) oder Datenfernübertragungseinrichtungen. Zur Anschaltung der Peripheren Einheiten mit unterschiedlichen elektrischen Schnittstellen und unterschiedlichem Zeitverhalten an den Systembus des Mikroprozessors sind eine Vielzahl von Ein - /Ausgabebausteinen (Interface - Bausteine) vorhanden (Bild 28). Sie koordinieren den Datenaustausch zwischen dem
Adreßbus Datenbus Steuerbus
Auswahl signal
Ein - /Ausgabebausteine
Periphere Einheiten Bild 28
Anschluß von p e riphere n Einheite n über Ein - / Ausgabebausteine
Systembus und den peripheren Geräte n, wobei an einem Ein - /Aus gabebaustein (EA-Baustein) me ist nu r ein oder zwei Geräte be treibbar sind. Man unterscheidet drei Gruppen von EA-Bausteinen : Einfache, nichtprogrammierbare Ein-/Ausgabebausteine sind unioder bidirektionale Pufferbausteine ohne und mit Zwischenspei cher (engl. latch). Unidire ktionale Pufferbausteine mit Zwi schenspeicher sind die Typen 8212 und 8282 mit je 8 Bitstel len. Bidirektionale Pufferbausteine ohne latch sind die Typen 8216 (4 Bit breit) und 8286 (8 Bit breit)
1541.
Programmierbare Standard-Ein - /Ausgabebausteine (engl. general
- 61 purpose peripherals) benötigen vor der eigentlichen Ein - /Aus gabe der Daten bestimmte Steuerwörter (eng l. control words) vom Mikroprozessor, die ihre Übertragungs funktionen bestimmen , so l ange sie nicht durch neue Steuerwörter überschrieben oder durch einen Reset-Vorgang gelöscht werden. Ein auf Ein-/Ausga be spezialisierter frei programmierbarer Mikrocomputer ist der UPI 8041 (engl.
~niversal
Eeripheral
~nterface
1171. Er wird
wie ein Ein - /Ausgabebaustein an den Haupt - Mikroprozessor (eng l. host computer) angeschlossen und betreibt mehrere Ein - I Ausgabegeräte . Programmierbare Spezial - Interface-Bausteine (engl. dedicated function peripherals) ermöglichen die direkte Anschaltung ver schiedener Peripheriegeräte oder Übertragungs systeme mit einem oder wenigen hochspezialisierten Bausteinen an den Systembus des Mikroprozessors. Diese Spezial-Interface - Bausteine erset zen einen Standard- EA- Baustein und die teilweise umfangreiche Gerätesteuerelektronik. Beispiele: Die Bausteine 827 1 116 1 bzw. 279X 1181 gestatten den Ansc h luß von Floppy Disk-Laufwerden an den Systembus von Mikrocomputern, die CRT-Controller - Bausteine (CRT d.h .
~athod ~ay
!ube)
8275 1151 und 6845 (MOTOROLA) beinhalten die Steuerung für Vi deo- Bildschirme . Für den Betrieb von Tastaturen und Hexadezi malanzeigen am Systembus des 8085 gibt es die Steuerbausteine 8278 und 8279 1151, für den Anschluß von Digitalkassettenspei chern z . B. den Baustein uPD 371. Über den IEC - Bus (!nterna tional Electrotechnical
~ommission),
(!nstitute of Eelectronic and
genormt als IEEE 488 - Bus
~lectrical ~ngineers)
läßt sich
eine Umgebung von Meßgeräten, Funktionsgeneratoren u . dgl . an den Mikrocomputer anschließen. Di e IEC - Bus-Controller-Baustei ne 8291 und 8292 1151 generieren den IEC-Bus an den Mikropro zessoren der 80 ' er Reihe. Für das bitserielle lokale Netzwerk ETHERNET entstehen hochintegrierte Schnittstellen - Bausteine (engl. transceiver) für alle verbreiteten Mikrocomp u tersyste me . Diese wenigen Beispiele mögen einen Eindruck von der Lei stungsfähigkeit der Spezial-Interface-Bausteine vermitteln .
- 62 Sämtliche Ein-/Ausgabebausteine (EA - Bausteine) werden vom Mi kroprozessor entweder durch Ein-/Ausgabebefehle ("IN port" , "OUT port " ) oder durch Lade - /Speic h erbefehle zu Ein/Ausgabe operationen veranlaßt . Der Datenfluß geht bei der Ausgabe vom Mikroprozessor über Systembus und EA-Baustein zur peripheren Einheit bzw . bei Eingabe vom Peripheriegerät über den EA-Baustein und den Systembus in den Mikroproz essor (Bild 29) .
~'I
IN TR
Adreßbus
IAdreß~J deko -
dtt~~~ es
I
I
Datenbus \
}
I
~
~
I
~
~
WRITE READ RESET Al AC
07-0
I
Lese-/Schreibsteuerung
I
I
11
TT
IStatus-R.!-- ~Steue r - R ·I
~
Steuerbus Systembus Schnittstelle
-I Daten - R.
Ein-/Ausgabebaustein
I
1 1 1
I EA- Steuerung I I
I
t
~
Peripherie Schni ttstelle
Melde- und Steuerleitungen Abk.: R. EA Bild 29
Daten
es
d . h . chip se l ect INTR d . h . interrupt request
d.h . Register d . h . Ein-/Ausgab e
Prinzipieller Aufbau von programmi erbaren Ein - /Aus gabebausteinen
Die EA - Befehle en thalten eine 8-Bit l ange Ein - /Ausgabeadresse oder Kanaladresse (engl. input/output address oder port address) , die u. a . das Auswahlsignal
es
(engl .
~hip ~elect)
für den
ädressierten EA-Baustein am Systembus liefert. Nur die ausge -
-
63 -
wählte Einheit korrespondiert während des Ein-/Ausgabezyklus mit dem Systembus. Einzelne niederwertige Adreßleitungen des Systembus (z.B. AO und Al in Bild 29) werden direkt an den EABaustein geführt; sie wählen innerhalb des Bauseins verschie dene Datenkanäle, Steuerregister und Statusregister aus. Der Befehl "IN port" schaltet das Lese - Steuersignal READ in den Aktivzustand, worauf die Lese-/Schreibsteuerung des Ba usteins den Inhalt des Datenregisters auf den Datenbus legt. Vorher muß das Datenregister mit einern gültigen Wert von der Peripherie geladen worden sein . Der Befehl "OUT port" setzt das Schreib- Steuersignal WRITE aktiv und bewirkt damit die Übernahme der Information vorn System-Datenbus in das Datenregister. Das Datenwort kann anschließend an die periphere Ein heit weitergegeben werden. Zur Programmierung (Initialisierung) des Bausteins überträgt der Mikroprozessor vor der eigentlichen Daten-Ein- /Ausgabe ein (oder mehrere) Steuerwort mit dem Befehl " OUT Steuer-Rn in das Steuer-Register (engl. control register) , das über die Ein - / Ausgabesteuerung des Bausteins fortan den Datenaustausch mit der peripheren Einheit b e stimmt. Hierbei generiert der Baustein - vorn Steuerwort abhängig - Steuersignale zur Peripherie hin und empfängt Meldesignale von der Peripherie. Das Status - Register eines programmierbaren EA- Bausteins be schreibt dessen aktuellen Zustand , z . B . mit den Zustandsbits "Datenpuffer voll" , " Ein-/Ausgabefehler " oder "Blockendemeldung ". Bestimmte Zustandsbits nehmen Meldungen von der
Peri~
pherie auf. Der Status des Bausteins kan n mit dem Befehl "IN Status - Rn in den Mikroprozessor eingelesen und im Programm analysiert werden. Wichtige Zustände, auf die
der Mikropro -
zessor sofort reagieren soll, können mit eigenen Unterbre chungsleitungen (INTR, Bild 29) direkt an den Mikroprozessor gemeldet werden (s . Interruptorganisation Abschn . 2.4) . Das RESET-Signal bewirkt das Rücksetzen des Bausteins in einen normierte n Zustand . Bei den gerätespezifischen Peripherieschnittste l len unter scheidet man grundsätzlich parallele und bitserielle Schnitt -
- 64 -
stellen .
Parallele Schnittstellen übertragen ein Byte über
~
Leitungen g l eichzeitig , serielle Schnittste ll en transferieren die Bitstellen eines Bytes zeit l ic h nachei nander über eine Leitung . Wei l auf dem Systemb u s die Daten stets byteweise transportiert werden , führt der serielle EA-Baustein eine Se rien - Paral l elwandlung der Daten durch. Abschnitt 5 behande l t die Ein-/Ausgabeorgani sation ausführlich. 1.2.7
Ergänzungseinheiten
Unter Ergänzungseinheiten versteht man Bausteine, die die Eigenschaften des zentralen Mikroprozessors hardwar emäßig er weitern und damit seine Leistungsfähigkeit wesentlich stei gern. Solche Ergänzungseinheiten können insbesondere programmierbare Zeitgeber, Unterbrechungs - Steuerungen und Arithmetik prozessoren sein . Obwohl dies im engeren Sinne keine Ein - /Ausgabebausteine sind, werden sie innerhalb des Mikrocomputersy stems organisatorisch als solche behandelt . Sie sind an den Systembus des Mikroprozessors angeschlossen, werden mit den gleichen Befehlen wie die EA-Bausteine angesprochen und durch die Übertragung von Steuerwörtern zu bestimmten Aktionen und Meldungen an den Mikroprozessor veranlaßt.
S Y s t e m bus
END I
CLK GATE
:OUT
IR 0 1 2 ;
13
: /L.. _________ J I L.. ____ --/.7-- ____________ 1
Mögliche Unt erbrec hungs-Anforderu ngen IR2 und IR3 von Arithmetikprozessor und Zeitgeber Bild 30
Ergänzungseinheiten am Systembus
7
- 65 Programmierbare Zeitgeberbausteine (engl. programmable interval timer) erzeugen mittels gesteuerter Zähler Zeitinterva ll e definierter Dauer bzw . verschiedene Impulsfolgen an einem Ausgang parallel zur Befehlsverarbeitung im Mikroprozessor . Für sehr viele Anwendungen aus der Meß- , Steuer- und Rege lungstechnik ist eine exakte Zeitvermaßung Vorbedingung. Nach Bild 30 hat ein Zähler einen Takteingang CLK , eine GATE -Eingang, über den der Zähltakt gesperrt werden kann , und einen Ausgang OUT, der u.a. ein Signal beim Nulldurchgang des Abwärtszählers liefert. Programmierbare Unterbrechungs-Steuerbausteine (engl. programmable interrupt controller) erweitern die Eigenschaften des Mikroprozessors dergestalt, daß sie zu Unterbrechungssignalen unterschiedlicher Herkunft hardwaremäßig eine Verzweigungs adresse
adr(i)
bilden, die der Unterbrechungsquelle i fest
zugeordnet ist . Der Mikroprozessor verzweigt bei Auftreten eines Unterbrechungssignals IR(i) auf die angebotene Verzwei gungsadresse adr(i) . Näheres zur Unterbrechungsorganisation siehe Abschnitt 2 . 4 . Arithmetikprozessoren (engl.
~rithmetic
Erocessing
~nit,
APU)
erweitern den im allgemeinen bescheidenen Satz von Arithmetik befehlen der 8 -B it -Mi kroprozessoren und reduzieren die Ausführ ungs zeiten arithmetischer Operationen erheb li ch. Die Arithmetikprozessoren Am 9511 1191 und 8231A 1631 führen die 4 Grundrecbnungsarten und weitere mathematische Funktionen (triqonometrische und l ogarithmisc he Funktionen, Potenzbildung) mit verschiedenen Festpunkt- und Gleitpunktzahlenformaten aus. Sie werden wie Ein-/Ausgabebausteine an den Systembus des Mikroprozessors angeschlossen und können den Abschluß einer über tragenen Rechenoperation mit einer Unterbrechung an den Mikro prozessor melden (Bild 30) . Die beschriebenen Funktionen der Ergänzungsbausteine können zwar alternativ durch Programme (software) im Mikroprozessor realisiert werden , wenn man die zusätzlichen Hardware-Komponenpen einsparen will, sie belegen ihn aber andererseits auch. Beispielsweise belegt die Ausführung einer programmierten
-
66 -
Zählschleife den Mikroprozessor während des erzeugten Zeitin terva l ls vol l ständig . 1 .3
Arithmetische und logische Operationen
Das Verständnis der vier Grundrechnungsarten mit Festpunkt - Du alzahlen ist einerseits erforderlich , um die hardwareseitig implementierten Arithmetikbefehle richtig anzuwenden , und an dererseits , um die hardwareseitig nicht vorhandenen Rechenope rationen selbst durch Arithmetikprogramme realisieren zu kön nen . Im Mikroprozessor 8085 sind z.B. ledig l eich die Addier und Subtrahierbefeh l e für 8- Bit lange Festpunkt - Dualzahlen als Maschinenbefehle verfügbar (s. Abschn . 2 . 3 . 2) , alle übrigen arithmetischen Operationen sind durch Programme auszuführen. Bei hohen Anforderungen an die Rechenleistung empfiehlt sich der Einsatz eines Arithmetikprozessors (vg l. Abschn . 1 . 2 . 7) . 1. 3 .1 1. 3 . 1.1
Addition und Subtraktion von Dualzah l en Addition vorzeichenloser Festpunktzahlen . Die Addi -
tion mehrstelliger Dualzahlen entspricht der Addition mehr stelliger Dezimalzahlen (Beispiel 11) . Ist in einer Dualstelle die Summe größer oder gleich 2, dann entsteht in dieser Stelle ein Übertrag , der zur nächsthöheren Dualstelle hinzuaddiert wird . Liefert eine 8 - stel1ige ALU einen Übertrag aus der höchstwertigen Stelle heraus , so ist - bei vorzeichenlosen Du a l zahlen - das Ergebnis in einem 8- Bit Register nicht dar Beispiel 1 1 : Addition vorzeichenloser 8- Bit Festpunktzahlen. a) ohne Überlauf
a + b Überträge Summe
b) mit Über l auf
a + b Überträge Summe
o2 9 + 2 1 5 1 2 4 4 10 6 6 + 21 5 1
2 8 1 10
000 1 1101 + 11010111 1 1 1 1 1 CY @] 11110100
2
01000010 + 11010111 1 1 CY [TI 1 00011001
2
- 67 stellbar : es liegt eine Überschreitung des Zahlenbereichs (Überlauf, engl. overflow OVF) vor . Der Übertrag (engl. ~arrx , CY) wird in ein Übertrags-Kennzeichenbit (engl. carry flag) übernommene
Die Ergebniszahl 244 laut Beispiel ll.a l iegt inner halb des 10 definierten Zahlenbereichs 0 ..... 255, das Übertragskennzeichen ist Null . Im Beispiel ll.b liegt die Ergebniszahl mit 281 10 außerhalb des definierten Zahlenbereichs, das Übertragskenn zeichen CY wird gesetzt und zeigt damit einen Überlauf an , das Ergebnis im 8-Bit - Register ist falsch. Es würde stimmen, wenn man das CY - Kennzeichen mit zur ZahlendarsteIlung hinzunehmen und damit den darstellbaren Zahlenbereich verdoppeln dürfte. Die 8- Bit Additionsbefehle des Mikroprozessors 8085 funktio nieren in der beschriebe nen Art und Weise. 1. 3 .1 . 2
Subtraktion vorzeichenloser Festpunktzahlen. Die Sub-
traktio n von Dualzahlen (Differenz = Minuend - Subtrahend) kann man wie im Dezimalen direkt , also ohne Umweg über das Zweierkomplement vornehmen (Beispiel 12). Ein Borger (engl . borrow) an die nächsthöhere Dualstelle tritt auf , wenn der Subtrahend an dieser Stelle größer ist als der Minuend . Ein Borger muß in der nächsthöheren Stelle vom Minuenden abgezogen werden . Tritt ein Borger in der höchstwertigen DualsteIle auf, dann ist der Subtrahend insgesamt größer als der Minuend und die Differenz ist negativ. Da im definierten Bereich der vor zeichen lo sen Betragszahlen 0 ..... 255 negative Zahlen nicht enthalten sind, liegt eine Überschreitung des Zahlenbereichs vor . Ein Borger in der höchstwertigen Stelle zeigt also einen Bereichsüberlauf (engl. overflow) an (Beispiel 12 . b) In diesem Falle ist das Ergebnis in den 8 Ziffernstellen falsch , wenn man im Rahmen des vorgegebenen Zah l enbereichs bleibt. Bei ge nauerer Betrachtung stellt man fest , daß der Betrag des Ergebnisses (5 0) das Zweierkomplement des richtigen Ergebnisses - 206
ist. Die Wirkung der Subtraktionsbefeh le im Mikropro10 zessor 8085 ist so wie beschrieben , der sich ergebende Borger
- 68 wird hardwareseitig in das CY - Kennzeichenbit des Prozessors übernommen (Beispiel 12) . Beispiel 12 : Subtraktion vorzeic h enlose r 8-Bit Festpunktzahlen. a) ohne Überlauf
a - b Borger Differenz
2 3 5 - 0 2 9 1
11101011 - 00011 101 B @] 11 1
,
2 0 6 10 CY
b) mit Üb er l auf
b - a Borger Differenz
o2 9 - 2 3 5 1 1
@]
110 01 110
2
00011101 - 11101011 1 B~ 1 1 '
7 9 4 10 CY
!TI
00 110 010 2
Unabhängig davon , wie die Festpunkt-Subtraktion in einem Mi kroprozessor tatsächlich realisiert ist , läßt sic h die beschriebene Subtraktion stets a l s Addition d es Zweierkomple ments einer Zahl auffassen . Für das fo l gende Beispiel 13 sei ein 4-B it Dualzahlensystem ohne Vorzeichen mit dem Za hlenbe zugrundegelegt. Die Subtraktion wird a uf die r e i ch 0 . .... i5 10 Addition zurückgefüh rt , indem man zunächst das Zweierkomple ment des Subtrahenden bildet und dieses zum Minuenden hinzu addiert. Dabei kann das Ergebnis i m defi n ierten Zahlenbereich 0 ..... 15 10 liegen (Beispiel 13 . a) oder negativ werden , d . h . den erlaubten Zahlenbereich über - bzw . unt erschreiten (Bei spiel 13 . b). Welcher Fall vorliegt , ist dem Übertrag CY zu entnehme n, den die Addition des Zweierkomplements liefert : Bei korrektem Er gebnis (Beispiel 13 . a) ist der Übertrag - auf Grund der Ge setzmäßigkeiten d er Zweierkomplementbildung nach Abschni tt 1.1.2. 2 - auf 1 gesetzt, man er h ält den Borger der Subtraktion durch Invertieren des CY - Bit , also B ; Cy ;
O. Im Überlauffall
( Beispie l 13.b) l iefert die Addition den Übertrag 0 und das Zweierkomplement 0101 1011
; 11
; 5 des richtigen Ergebnisbetrags 2 10 . Da das zur vo llst ändige n Darstellung des Erg eb -
2 10 niss es erforder li che (n egative) Vorzeic hen in der 4 - Bit- Zah -
- 69 lendarstellung keinen Platz hat, entspricht hier der Übertrag
CY
=
0 dem Borger B
=
1 der Subtraktion nach Beispiel 12 . b.
Führt man in einem Programm die Subtraktion durch Add ition des Zweierkomplements aus, gilt für den Borger stets : B = CY. Be isp ie l 13: Sub traktion vorzeic h enloser Fes tp unktzahl e n durch Ad dition d es Zwei e rkompl e me nt s a) ohne Überlauf a - b + b
d
=
=
a - b
(4 - Bit Dualsyst e m) . 14 - 9
=
(Borger B = 0)
5 10
14
1 1 1 0 - 1 0 0 1 o 1 1 1 --+
9
2
(2er - Komplement)
d
5
~ CY
10
B b) mit Überlauf
d
a - b
a - b
3
-
b2
(2er - Komplement)
d
(Komp l ement)
-
3 14
14 = - 11
-
10
;
1 1
o1
0 1 2
(Borger B
o0
1 1
1 1 1 0 o 0 1 0 --+
o0
1 0
l CY @]
o1
0 1 2
8\ 0
B
1.3.1.3
ill @]
o1
0
1)
Addition und Subt raktion von Zweierkompleme n tzahlen.
Hi erbei wird von der üblichen, in Abschn .
1.1. 2.2 b esc hr iebe -
nen Zahlendarstellungim Zweierkomplement mit Vorzeichenste lle ausgegangen , deren Zahlenbereiche für das 8- Bit - bzw. 1 6-B it Format gemäß Bi ld 5 defini ert si nd. Es könn en p ositive und ne gative Za hl en addiert werden ; die Subtraktion kann durch die Addition des vorher kompl e mentierten Subtrahenden er s etzt wer den . Di e Polarität des Ergebnisses ist aus der Vorzeichenste ll e ersichtlich . SChwieriger ist die Erken nung d es Überlauf falls beim Rechnen mit vorzeiche nbehafteten Zweierkomplementzahlen. Zunächst ist der sich bei der Addition ergebende Über trag (CY) sehr sorgfältig von dem Überlauf (OVF) des Zahlenbe reichs zu unter sc h ei d en . Bei dem 8 -B it-Zahl enforma t
n ac h Bild
5 li egt ein Überlauf vor , wenn die Ergebniszahl außerhalb des d efinierten Zahlenbereichs - 128 .... . 0 . . ... +1 27
10
liegt . Wäh-
- 70 rend der Übertrag aus der höchstwertigen Dualsteile heraus durch die Besonderheiten 'der Zweierkomplementdarstellung be stimmt wird , entsteht ein Überlauf , wenn die Ziffernsteilen in die Vorzeichenstelle hin ein üb erlaufen und diese in unzulässi ger Weise verändern . Eine Bereichsübe rsc hreitung liegt genau dann vor, wenn die Ausgangsoperanden a und b gleiche Vorzei chen haben und das Vorzeichen des Ergebnisses davon verschie den ist (Bild 31). Abkürzungen : OPD
Operand
ERG
Erg ebnis
i.O . Erg ebnis ist in Ordnung OVF
Ergebnis Überlauf
Bild 31 Üb er laufabfrage bei Addition von Zweierkomplementzahlen
Einige Beispiele mögen die Mechanismen der Zweierkomplementarithmetik , die die Vorzeichensteile rechnerisch genauso be handelt wie die Ziffernstellen , plausibel machen. Den Über trag (carry) aus der höchstwertigen Dualsteile heraus li efert die ALU des Rechenwerks automatisch , während die Feststellung eines Überlaufs (OVF) nach der Addition durch eine zusätzliche Logik nach Bild 31 erfo lgen muß . Der besseren Übersicht wegen wird in den Beispielen l4.a - d das 4- Bit - Zahlenformat mit dem Zah l enbereich - 8 . .. ~ ... 7 (dezimal) gewählt, das auch dem Zah lenring in Bild 4 zugrundeliegt .
- 71 -
Die oben erwähnte "zusätzliche Logik" zur Feststellung des Überlauffalls kann entweder hardwaremäßig im Mikroprozessor enthalten sein und ein Überlauf-Kennbit (OVF-flag) im Status wort beeinflussen oder sie muß per Software realisiert werden . Der 8085 besitzt kein OVF-flag. Beim Rechnen mit vorzeichenbe hafteten Komplementzahlen muß die Überlauferkennung nach Bi l d 31 explizit programmiert werden . Beispiel 14: Addition und Subtraktion von Zweierkomplementen. a) Addition
s = a + b
a + b
(+4 ) + (+3)
s
(+7)
o1 0 0 + 0 0 1 1 CY @] OVF @]
c) Subt raktion a b d
(+7) ~ (+3)
o1
1 1
b2 CY
a + b
(+4 ) + (+7)
s
(+11)
CY @]
o1
d) Addition 1 1
= + 1 1 0 0
ill
0 0 1 1
8
a + b
+ ( -7)
s
( - 11)
+ .'1.2 +b 2 CY
0 0 1 1
1 0 1 1
8
s = a + b
(-4 )
(OVF! )
o1 o1
+ OVF!Il
d = a - b +
s = a + b
0
OVF@]
1.3.1.4
b) Addition
(OVF! )
1 1 0 0 + 1 0 0 1
[TI o 1
0 1
OVF08
Mehrfachlange Addition und Subtraktion. Oft benötigt
man einen größeren Zahlenbereich , als die relativ kurze Wort läng e von einem Byte zuläßt . Es müssen auc h l6 - Bit-, 24 - Bit und 32-Bit-lange Dualzahlen verarbeitet werden . Sofern der Mi kroprozessor keine Rechenbefehle für diese Zahlenformate ent hält , muß der Anwender selbst Programme für die gewünschte Mehrbyte-Arithmetik schreiben oder einer Programmbibliothek entnehmen . Dabei werden zuerst die niederwertigen Zahlenbytes und dann die höherwertigen unter Berücksichtigung des Übertrags/Borgers aus dem niederwertigen Teil miteinander ver knüpf t . Es gibt geeignete Maschinenbefeh l e , die zwei Operanden und das Üb ertragsbit (CY) als ein l aufenden Übertrag/Borger verarbeiten ( engl. add with carry , subtract with borrow) . Der 8085 verfügt zusätzlich zur 8 - Bit - Arithmetik über einen Addierbefehl für l6 - Bit -Zahlen .
-
1 .3.2
72 -
Multiplikation und Division von Dualzahlen
Die Multiplikation von Dualzahlen gehorcht denselben Gesetzen wie die Dezimalmultiplikation . Man bildet die Teilprodukte Multiplikand x MultiplikatorsteIle (i) und summiert die Teilprodukte ste llenrichtig zum Produkt auf. Zwei n - stellige Dual zahlen ergeben ein Produkt von 2n Stellen. Ein Über l auf ist bei der Multiplikation nicht möglich. Am einfachsten ist die Multiplikation mit vorzeichenlosen Dualzahlen (Bild 32), bei der Durchführung der Multiplikation mit Zweierkomplementzahlen ~ind anschließend Korrekturoperationen erforderlich.
MUltiplikand x Multiplikator 100 1
xlI 0 1
Teilprodukte
':n:;~~ 111
Multiplikand Multiplikand Multiplikand Multiplikand
111 0 101
Pro d u k t
1 0 0 1
Bild 32
MUltiplikationssche ma am Beispie l
x 1 x ,8 x 1 x 4 x o x 2 x 1 x 1
9 x 13
117
Auf Grund der einfachen Multiplikation mit der Multiplikator steIle 0 bis 1 sind die Teilprodukte entweder 0 oder gleich dem Multiplikanden. In der ALU des Mikroprozessors wird die Multiplik ation als Folge von Verschiebe- und Addiersc hritten realisiert . I st dieser Ablauf im Mikroprogramm des Leitwer ks (hardwa remäßig) implementiert, dann stehen Multiplikationsbe fehle z ur Verfügung. Bei vielen Mikroprozessoren der 8- Bit Klasse ist dies nicht der Fall; hi er muß der Multiplikations algorithmus durch eine Befehlsfolge verwirklicht werden. Die Ausführung dieses Programms benötigt natürlich mehr Zeit als ein Multiplikationsbefehl. Eine Multiplikation mit 2 oder Potenzen von 2 entspricht einer oder mehreren Versc h iebunge n nach links (Überlauf beachten!). Die Div ision (Dividend : Divisor) liefert einen Quotienten und u .u. einen Rest. Im folgenden sol len die Divisionsverfahren an
-
73 -
Hand von vorzeichenlosen ganzen Dualzahlen betrachtet werden. Der einfachste Divisionsalgorithmus besteht darin, den Divisor so oft vom Dividenden zu subtrahieren, bis der verbleibende Rest negativ wird. Die letzte Subtraktion muß durch eine Addi tion des Divisors rückgängig gemacht werden , um einen positi ven Rest zu erhalten. Der Quotient ist die Anzahl der tatsäch lich durchgeführten Subtraktionen; er gibt an, wie oft der Di visor im Dividenden entha l ten ist. Diese naheliegende Methode (Bild 33) kann angewendet werden, wenn die Laufzeit des Programms unkritisch ist .
11 - 0 B @] 1 - 0 B @] 0 - 0 B @] 0 0
0 1
0 0 0 1 0 0 0 B~+ 10 10
1 0 1 0 1 1 1 1 1
11 1 0 1 1 1 0 1 1 1
CY010 0 1 01 Bild 33
..
11
000 0
10 0 1 1 1 +
1
+
1
+
1
10
:
3
10
Rest
3 2
10 10
0 0 1 11 Quotient 1 Korrekturaddition Rest
Einfacher Divisionsalgorithmus
Schneller kommt man zum Ziel, wenn man - ähn lich wie bei der manuellen Dezimaldivision - schrittweise den gewichteten Divi sor vom Dividenden subtrahiert , wie dies in Bild 34 am Beispiel von 4-Bit langen vorzeichenlosen
~estpunktzahle n
gezeigt
wird . Man beginnt hierbei mit der Ermittlung de r höchstwerti3 gen QuotientensteIle, d.h . man prüft, ob der Divisor 2 = 8 mal im Dividenden enthalten ist. Zur Durchführung dieser Subtrak tion ist der Di vidend vor dem Ablauf um die erforderliche An zahl von führenden Nullen aufzuweiten . 3 Liefert die Subtraktion von " Divisor x 2 " keinen Borger , dann ist der Divisor 8 mal enthalten , die QuotientensteI l e ist "1". Ergibt sich b ei derselben Subtraktion ein Borger, dann ist der Zwi schenrest negativ , der Divisor ist nicht 8 mal ent h a lt en und die QuotientensteIle wird auf "0" gesetzt . Die vorwegge -
- 74 3 nommene Su btraktion muß durch die Addition von " Divisor x 2 " wieder rückgängig gemacht werden (Korrekturaddition) . An schließend wird auf dieselbe Weise geprüft, ob der durch Hin z u nahme der nächstniedrigen Dividendenstelle entstandene Zwi schenrest den Quotienten 22 = 4 mal enthält usw . Der letzte po sitive Zwischenrest nach n-maliger Subtraktion - bei n - ste l li gern Dividenden - ist der Rest der Division . Durch Fortsetzen der Division erhält man wie im Dezimalen gebrochene Dua l stell e n rechts vom Komma. Ausführlich ist die Division in 1201 be sch r iebe n .
Aufweit u ng , ~
~
,---,;.
0001101
B CY
B
~
-
m_ ~1-'!.!:..
B
[2] __
o1
0 0
- Di v i sor x 2
~
- Divisor x 2
Quotient
"
'I
Korrektur
, '
2
,li J ,li'
1
11
Korrektur
I ,
OO_l~ !.. _ _ _ _ _ _ _ _ O _ _ _ J
[2] ___ @:ill__
Bild 3 4
_j
- Divisorx2 _________ 2 _ _ 0 1 0 0 + Divisor x 2
~O
1
t, t.
+ Di v i sor x 2
[TI_~.!.. 1..l
B
3
__________ 3
+ 0 1 0 0 1 0001 1 0100
+ CY
~
0100 - Divisor x 2
E.e~t _ _ _ _ _ _ _
1 1
J
Divisionsalgorithmus mit Subtraktion des gewichteten Di visors (am Beispiel 13 : 4 = 3 Rest 1)
Der Mikroprozessor 8085 hat keine hardwaremäßig realisierten Divisionsbefehle . Eine einfache Division durch 2 erhält man durch eine Verschiebung des Operanden um eine Stelle nach rechts . 1.3 . 3
Logische Operationen
Ein Mikroprozessor arbeitet intern nach den Gesetzen der Bool schen Al gebra und er verfügt auch über Maschinenbefehle , die l ogische Operanden nach Gesetzen der zweiwertigen Logik ver ar-
- 75 beiten. Die Befehle des Mikroprozessors 8085 beziehen sich auf logische 8-Bit-Bi närworte (logische Operanden) nach Bild 1; sie verknüpfen die einzelne n logischen BinärsteIl en (z.B. A7 . . ... Aß) nach den Gesetzen der Boolschen Algebra mit den ent sprechenden BinärsteIlen e ines a nder e n logischen Worts (Multibitoperation) . Die am h ä ufigsten a l s Ma s chinenbefe hl e realisierten l ogische n Operatio nen sind in Tafe l 6 zusammenge stellt 1211. Zur Beschreibung der logischen Funktionen mit tels Tafel 6
Logische Operati onen
Operation
Symbol
DIN 66000
UND-Ve rk nüpfung Konjunktion
1\
ODER-Verk nüpfung Disju nktion
V
EXCLUSI VES ODER Antival enz
-
NICHT-Operation Negation
a oder : - a
USA-Norm
Beispiel a 1\ b
+
G -
a
a V b a-b
-a
Wahrheitstabellen sei auf 15 1 verwiesen. Beis pie l e für die Ausfüh rung der logischen Verknüpfungen von 8-Bit - Binärworten du rch Maschinenbefehle (UND , ODER, EXOR, NICHT) sind in Bild 35 . a - d gegeben . Alle weiteren logischen Funktionen lassen sich im Prog ramm aus den in Tafel 6 angegebenen Verknüpfungen rea l isieren . Die NICHT-Operation erzeugt das Ein erkomp l e ment
a
einer 8 - Bit - Ausga ng sgröße a; durch Addiere n einer Eins erhält
a2 . Beim B085 verändern die log ischen Befehle mit Ausnahme des NICHT- Befehls (BOB5 - Mnemonic : CMA)
man das Zweierkompl ement
die Statusbits (s . Absch n . 2 . 3.3). Neben de r Ausführung der logisch en Verknüpfungen an sich er mögliche n die Logikbefe hl e die Verarbeitung von Einzelbits u nd Bitg ruppe n innerhalb eines Bytes . Durch die UND- Verk nüpfung eines logischen Bytes (Operand a in Bild 35 . a) mit eine r Bit maske ßFH (Operand b in Bild 35.a) wird z .B . die linke Tetrade von a auf Null gelöscht, so daß nur di e Werte der rechten 4
- 76 Bitstellen im Wort die Einste l l u ng der Status - flags bestimmen .
a) UND - Befehl c = a 1\ b
a b
1 01 01010 00001111
b) ODER - Befehl c = a V b
c = 0000 1 010 c) EXOR - Befeh1 c = a_b
a b
1 01010 1 0 00001111
a b
101 0101 0 0000 1 111
c = 1010 111 1 d) NICHT- Befehl c = a
a = 101010 1 0 c = 0101010 1
c = 10 1 00 1 01 Bi l d 35
Wirkungsweise von Logikbefeh l en
1.4
Programmieren von Mikrocomputern
1.4. 1
Problemanalyse und Programmablaufplan
Bevor man die ersten Befehle eines Mikrocomputerprogramms - wie in Abschn . 1 . 1 . 4 dargestellt - niedersc h reimt , muß man sich z un ächst über das zu l ösende Problem gründl ich Klarheit ver scha f fen . I n dieser wichtigen Phase der Prob l emana l yse muß die Aufgabe exakt definiert und schrittweise in eine sinnvolle Folge von Teilaufgaben zerlegt werden. Es sind Randbedingungen zu klären: Welche peripheren Geräte/Einrichtungen sind zu be treiben? Welche Eingangsdaten sind zu erwarten, welche Aus gangsdaten sind bereitzustellen? Sind Laufzeitanforderungen an das Programm zu stellen? Schon in dieser Phase empfiehlt es sich, mit Programmablauf plänen oder Flußdiagrammen zu arbeiten. Sie beschreiben nach
122 1
den Ablauf der Operationen in einem informationsverarbei -
tenden System in Abhängigkeit von den jeweils vorhandenen Daten. Erfahrungsgemäß sind Ablaufdiagramme mit genormten Opera tionssymbolen nach Bild 36 ein geeignetes Hilfsmittel zur Do kumentation der festgelegten Aufgaben und Abläufe. Die schrittweise Verfeinerung des zunächst groben Ablaufplans (engl . top down design) unter Berücksichtigu ng des vorgegebe nen Mikrocomputersystems führt zu einem detaillierten Programmab l aufplan, der als Vorlage für die Niederschrift der Be fehle in einer Programmiersprache dient.
- 77 -
Die Sinnbilder für Pro grammablaufpläne (Bild
Grenzstel l e
C"----___)
"BeginnIl , IIEnde" ,
II Zwischenhalt"
36) werden in der Rege l innen bzw. an den Ein-j Ausgangsstellen beschrif tet. Die Vorzugsrichtung der Ablauflinien ist "von oben nach unten"
und
'I von
links nach rechts". Um die Abläufe eindeutig zu
I
I
<>
dokumentieren, ist nach
122 1
die Anbri ngun g von
Pfeilspitzen empfehlens wert . Die Aufstellung von Programmablaufplä nen soll an
11
11
o
Hand einer kleinen Aufga be gezeigt werden. Es ist
Operation
Verzweigung
Ein-jAusgabe operation Unter ablauf (an anderer Stel le definiert) Übergangsstelle Konnektor Abla uflini e Flußlinie Zusammenführung
ein Additionsprogramm ADD5A zu schreiben, das 5 vorzeichenlose (absolute) 8- Bit lange Festpunktzahlen aus dem Speicher auf add ier t und die Summe auf
---{ Bild 36
Bemerkung Kommentar Symbole für Progr·ammab laufp l äne nach DIN 66001
den Bildschirm eines Da tensichtgeräts ausgibt. Die Anfangsadresse OPDLI der Operandenliste , die die 5 Festpunktzahlen in aufeinanderfolgenden Speicherbytes enthält , sei bekannt. Auf eine Überlaufabfrage wird verzichtet . Einen ersten groben Ablaufplan zur Lösung der Aufgabe könnte man wie in Bild 37.a skizzieren. Aussagekräftiger ist schon der nächste Schritt (Bild 37.b). Hier wird berücksichtigt, daß zu Beginn die Adresse der Operandenliste OPDLI bereitzustellen und ein Schleifenzähler mit einer Zählgröße (hier 5) zu laden ist . Die folgende Programmschleife wird so oft ausgef üh rt , wie
- 78 es der Schleifenzähler a ngibt. Bei jedem Durchlauf der Schlei fe wird ein Operand aus dem Speicher zur Zwischensumme SUM ad diert, die Adresse des Operanden um 1 erhöht und der Schlei fenzähler um 1 heruntergezählt. Das Programm verläßt die Schleife an der Verzweigungsstelle , wenn der Schleifenzähler den Wert 0 erreicht hat . Zum Schluß ist noch eine Ausgabeope ration - die Ausgabe der Summe auf den Bildschirm - vorzuneh men .
1)
2)
3)
a) Flußdiagramm Grobstruktur
b) Detaillierteres Flußdiagramm
c) Flußdiagramm Feinstruktur Bild 37
Schrittweise Verfeineru ng eines Programmablaufs
- 79 Als Zuweisungssymbol wird der Pfeil "_
" verwendet ; er weist
den Wert des Ausdrucks SUM + OPD auf der rechten Seite der Größe SUM zu . In dem sehr fein aufgelösten Flußdiagramm von Bild 37.c wird d ie Struktur des Mikroprozessors berücksichtigt, auf dem das Progr a mm ablaufen soll . I n sbesondere sind di e geeigneten Regi ster z u verwenden und bei den Operationen die Befehlswirkungen des Zielp rozessors zu b er ück sic h tigen . Hier wur den die Struktur und der Befehlssatz des Mikroprozessors 8085 zugru ndege legt. Da s feinstrukturierte Flußdiagramm läßt sich nahezu 1 : 1 in symboli sche Assembl erbefehle des 8085 umsetzen. Für die Aufstellung des feinstrukturierte n Flußdiagramms mü s sen die folgenden Eigenschaften des Mikroprozessors 8085 a l s bekannt vorausgesetzt werden , wobei sich die Nummern auf Bild 37.c b ezie h e n : z u 1) Die Adresse für den Zugriff auf aufeina nderfolgende Ope ra nde n im Speicher ist i n d as Registerpaar HL z u laden . Der Additionsbefehl " ADD M" nimmt den Inhalt von HL als Speicheradresse und addiert den Speic h eroperan d e n z um Akkumulatorinhalt hinzu (vgl. Bild 24) . zu 2) Es gibt ein Register C , in dem die Zählgröße dekrementiert werden kann. zu 3 ) Register sind mit beliebigen Werten ladbar , a lso auch mit dem Wert
O.
zu 4) Die Verzweigung im Programmablaufplan ist durch eine n bedingten Verzweigungsbefehl realisierbar , d er Register inhalte abfragt.
I st der Inhalt von C ungleich 0 , dann
s pringt der Befehlszäh ler a uf den Anfa ng de r Programm schleife SCHL, ist der Registerinhalt gleich
0 , wird mit
dem n ächste n Befe h l fortgefahren . z u 5) Die Ausgabe der Summe auf einen Bildschirm ist nicht mit einem Befehl möglich. Hierzu ist ein Ausgabeprogramm NMOUT aufzurufen , das in Abschn . 3 . 3 erläutert wird . Flußdiagramme gebe n offenbar einen guten Übe rb lick über den Programmablauf , sie sagen jedoch nichts über den Aufbau der Daten und deren Lage im Speicher aus . Für größere Programme
- 80 empfiehlt sich die Aufstellung so detaillierter Flußdiagramme wie in Bild 37 . c nicht , der geübte Programmierer findet die Einzelheiten besser in einer Programmliste (s . Abschn . 1 . 4 . 2). 1 . 4.2
Programmieren in Assemblersprache
In diesem Abschnitt wird als Beispiel das Assemblerprogramm für den im Flußdiagramm (Bild 37) dargestellten Ablauf entwik kelt . 1.4.2.1
Maschinencode und Assemblersprache. Die bei kleineren
Mikrocomputersystemen am weitesten verbreitete Programmiersprache i st die ma schi n ennahe Assemblersprache . Im Abschnitt 1.1 . 4 sind die Schreibweisen von Maschinenbefehlen in der symbolischen Assemblernotation und im binären bzw. hexadezimalen Maschinencode gegenübergestellt. Die maschinennähste Form der Programmierung ist das Hinschrei ben der Befehle in der Maschinensprache des Mikroprozessors , so daß direkt ablauffähiger Maschinencode (Objektcode) entsteht, der in den Mikrocomputer eingegeben werden kann. Der Maschinencode ist eine Folge von Binärmustern in wahlweise binärer oder hexadezimaler Darstellung . Dies ist eine mühselige, für die Erst e llung größerer Programme unbrauchbare Programmiermethode. Wie "übersichtlich " ein so erstelltes Programm wird , läßt die Darstellung in den Bildern 7.b und 7.c ahnen . Ein wichtiger Schritt in Richtung auf eine brauchbare , dem Menschen näherstehende Programmier-"Sprache" ist die Einfüh rung der Assemblersprache. Sie ist eine ma schine nori entierte Programmiersprache 171, die sämtliche Maschinenbefehle eines Mikroprozessortyps in symbolischen , mnemotechnischen Abkürzun gen (z . B . " ADD E" statt "10000011") enthält und Speicherplätze mit symbolischen Adressen (Namen) adressiert. Jeder Mikropro zessortyp hat seine eigene Assemblersprache, die seinem Be fehlsvorrat und seiner Prozessorstruktur entspriCht. Sie wird entweder von Hand oder meist durch eigene Übersetzerprogramme (Assemblierer, engl. assembler) in die Bitmuster des prozes sorspezifischen Maschinencodes übersetzt (Bild 38).
- 81 -
Objektprogramm
Que ll prog r amm (engl. sour ce code)
(engl. object code)
i n Assemb l ersp rache
in Maschi nensprache
Bi l d 38
Assemb l iervorgang
1. 4. 2. 2
Speic h erplan. Um sich eine Übersicht über die Lage
der Befehle und Daten im Hauptspeicher zu verschaffen , sollte man vor der Erstellung des Programms ergänzend zum Programmab laufplan einen Speicherplan aufstellen. Dies ist für die vor l iegende Aufgabe ADD5A sehr einfach und bei größeren Programme n mit komp l exeren Hauptspeicher
Datena nordnungen sehr hi l freich . Gemäß Bild 39 wir d festge l egt , daß die Befehlsfolge ADDSA auf der Adresse
Befehls folge
l %%% H beginnt und der Date nbereic h mit der
ADD5A
symbolischen Adresse OPDLI daran an -
OPDLI - - -...._
Daten (5 Bytes)
schließend 5 Bytes belegt . Der Speicher-
~
bereich von Adresse %%%% H bis %FFFH sei lFFFH
durch ein übergeord-
ptack ~..lbereic h
netes Betriebsprogramm belegt . Außer dem ist im allgemei -
Bild 39
Speicherplan zur Aufgabe ADDSA
nen ein Stackbereich erforder l ich , dessen Bedeutung und Funktionsweise noch in Ab sc hni tt 2 .1 erläutert wird .
- 82 1.4.2. 3
Programmzeilen in Assemblersprache. Ein Programm in
Assemblersprache besteht aus Programmzeilen. Eine Programmzei le wiederum setzt sich aus 4 Feldern zusammen, die durch Be grenzer (engl. delimiter) getrennt sein müssen (Bild 40). Als Begrenzer dient hier mindestens ein Leerzeichen (engl . blank) . Nicht jedes der 4 Felder muß belegt sein . Zur formattierten Eingabe der Programmzeilen wird in der Regel der Tabulator der Tastatur benutzt . Jede Programmzeile ist mit dem Begrenzer Wa genrücklauf (CR) abzuschließen . Für die zulässigen Einträge in die einzelnen Fe l der gibt es - mit Ausnahme des Kommentarfel des - strenge formale Reg l en , die in der Definition einer As semblersprache, z . B.
17 1, festgelegt sind . Das Übersetzungs -
programm prüft während des Übersetzungsvorgangs , ob der Pro grammierer die Syntaxrege l n eingehalten hat und bringt Fehler me l dungen , wenn Abweichungen vorhanden si n d. Der Übersetzer übersetzt nur syntaktisch einwandfreie Programme .
Marke : Name ADDSA:
SCHL :
Operanden Adressen
Kommentar
LXI
H, OPDLI
;Adresse nach Reg . - paar HL
MV I
C, S
; Zählgrösse S ins C- Register
MVI
A, fI
;Summenregister löschen
ADD
M
; Operand ((HL) ) zu A addieren
INX
H
;Operandenadresse erhöhen
OCR
C
;Ope randenzähler erniedrigen
J NZ
SCHL
; Sprung nach SCHL , wenn (C) t fI
CALL
NMOUT
; Aufruf der Ausgaberoutine
Op - Code
HLT Bild 40
; Programm anha l te n
Programmzei l en in Assemblersprache (nach Bi ld 37 . c)
Im folgenden wird die prinzipielle Struktur einer Assembler sprac h e in An l ehnung an den 808S - Assembler 17 1 beschrieben . Das Beispie l ADD SA in Bild 40 ent h ält die Assembler - Befehle für de n in den Flußdiagrammen (Bild 37) dargestellten Ab l auf.
- 83 Das Markenfeld (auch Namenfeld) kann die symbolische Adresse einer Programmzeile enthalten. Eine Marke (engl. label) muß vergeben werden , wenn diese Programmzeile von anderer Stelle aus adressiert werden soll, da beim Schreiben des Assembler programms die absoluten Speicheradressen der Befehle in der Regel nicht bekannt sind. Eine Marke besteht (beim 808S - Assembler) aus bis zu 6 alphanumerischen Zeichen, muß stets mit einem Buchstaben anfangen und mit einem Doppelpunkt abgeschlossen werden . In Bild 40 sind die Marken ADD5A (Programmanfang) und SCHL (Schleifen-Einsprungstelle) definiert . Im Markenfeld ste hen auch die Namen vo n konstanten und variab l en Werten im Speicher. Im Operationscode-Feld (Op -C ode - Feld) der Programmzeilen ste hen entweder die mnemonischen Abkürzungen von Maschi nenbefeh len (Bild 40), die das Übersetzerprogramm im Verhältnis 1:1 i n ausführbare Maschinenbefehle des Mikrocomputers übersetzt , oder nicht ausf üh rbare Anweisungen a n das Übersetzerprogramm (Assembleranweisungen oder Pseudobefehle) , die während des As sembliervorganges zwar ausgewertet , aber nicht in a u sführbare Maschinenbefehle übersetzt werden . Assembleranweisungen findet man in Bild 41. Im Operanden - /Adressenfeld stehen Direktoperanden und/oder Adressen . Beide können als abso l ute Zahlen in versc hi edenen Zahlensystemen (dezimal, hexadezima l, oktal , binär) oder als symbolische Namen vorkommen . Ein symbolischer Name im Operandenfeld kann einen Operanden , einen Speicherplatz , einen Ein - / Ausgabekanal oder ein Register bzw. Registerpaar bezeichnen . Jeder i m Operandenfeld verwendete symbolische Name muß im Mar ken - /Namenfeld definiert sein . Beim ersten Übersetzungslauf ermittelt der Assembler die programmrelativen oder a b so lu te n Adressen der Marken und Namen im Markenfeld , die er in einem zweiten Assemblerlauf in die Operanden- /Adressenfelder der Be fehle einträgt. Namen müssen mit einem Buchstaben , Zahlen auch Hexadezimalzahlen - müssen mit einer Ziffer
0 ..... 9 be -
gi nn en .
Mögliche Zah l enangaben im Operanden - /Adressenfeld sind nach
-
17 1: l ß9BH
( ~exadezimal) ,
ßA3H
84 -
(~exadezimal) ,
13 oder 1 3D
(dezimal) , 57a (oktal) , lß1ßllßßB (binär) . Der Hexadezimalzahl -
0
-
AJ muß in der Assemblerschreibweise eine ß vorangestellt wer den . Darüberhinaus können ein oder mehrere ASCII - Zeichen, von Hochkommas eingeschlossen, als Operand angegeben werden. Der Befehl
" MV I A, ' * ' " lädt die ASCII - Codierung 0010 1 010
(vg l. Ta-
fel 3) in den Akkumulator. Ein Befehl kann zwei, einen oder keinen Operanden haben (Bild 40) . Zwei Operanden sind durch Komma zu trennen, wobei der er ste Operand die Zieladresse und der zweite die Quelle enthä lt . Z.B. bew i rkt de r Befehl " MVI C,5 " in Bild 40 das Laden des symbolisch adressierten Registers C mit dem dezimalen Wert 5 . In das Kommentarfeld schreibt der Programmierer Erk l ärungen z u der Programmzei l e, die nicht Gegenstand der Übersetzung sind. Der Übersetzer übernimmt die Kommentare jedoch mit in den As sembler - Au sdruck (Assembler - listing) auf . Kommentarzei l en (be ginnend mit einem Semikolon) können nach Bedarf eingeschoben werden. Gu te Kommentare sind, ebenso wie Flußdiagramme , ei n wese n t l iches Hilfsmittel der Programmdokumentation. Im Gegen satz zu Bild 40 sollen sie für den geübten Programmierer nicht die (bekannte) Wirkungsweise der Assemb l erbefehle, sondern de ren Aufgabe und Funktion im Programm erläutern. Ein entscheidender Vorteil der Einführung von symbolischen Adressen für Befehle und Daten ist die Änderungsfreundli ch keit. Bei nachträglichem Hinzufügen oder Herausnehmen von Be feh l en oder bei Änderungen in der Datenstruktur verschieben sich die physikalischen Adressen und damit die physikalischen Adreßbezüge im Operandenfe l d der Befehle. Die symbolischen Adressen bleiben davon unberührt . Erst beim (erneuten) Über setzen werden die physikalischen Speicheradressen eingesetzt . 1. 4. 2. 4
Assembleranweisungen . Sieht man sich die Befehlsfolge
in Bild 40 genauer an, so fällt auf, daß die im Operanden - j Adressenfe l d verwendeten symbolischen Namen OPDLI und NMOUT im Markenfeld nicht definiert sind . Wo liegen die 5 Operanden ,
- 85 wo liegt die Ausgaberoutine NMOUT im Speicher? Dem Übersetzerprogramm wird außerdem nicht mitgeteilt, daß das Programm ADD5A nach dem Speicherplan (Bild 39) auf der Adres s e
l~~~H
beginnen
soll. Der Assembler kann das unvollständige Programm in Bild 40 nicht übersetzen. Ein Assemb ler, der absolute Adressen in den lauffähigen Objektcode einsetzt , benötigt absolute Adreßangaben, die dem Übersetzer durch Assembleranweisungen bekannt zu machen sind . Bild 41 zeigt das um die notwendigen Assembleranweisungen (mit Pfeil markiert) erweite rte, vollständige Programm ADD5A. Es wurde außerdem ein ausführbarer Assemblerbefehl "LXI SP , lFFFH" hinzugefügt , der den Stackpointer gemäß Bild 39 auf den Anfangswert lFFFH setzt. Die Assembleranweisung "ORG adr " (engl.
ori'Iin) am Anfang
eines Programms teilt dem Übersetzer mit, an welcher Ste ll e im Speicher das übersetzte Maschinenprogramm zum Zeitpunkt der Ausführung stehen soll. Im Beispiel (Bild 41) ordnet die ORG -
Marke: Name
Op - Code
Operanden Adressen
Kommentar
;Kommentarz eile: Programm ADD5A mit Assembleranweisungen NMOUT
EQU ORG
/feOD
ADD5A :
LXI
P~~ H
5
;Adresszuweisung
~'Sffl --r O() ~ SP, lFFFH
;Stack pointer direkt laden ;Adresse nach Reg .-paar HL
-
; Angabe der Anfangsadresse _
0,3
LXI
H,OPDLI
06
MVI
C, 5
; Operandenzähler ins C- Reg .
OES
MVI
A.~
;Summenregister löschen
ADD
M
;Operand ((HL))
INX
H
;Operandenandresse er höhen
OCR
C
;Operandenz5h ler erniedri gen
01(
SCHL :
hVid JNZ
l1öV EI~CALL
SCHL
; Sprung nach SCHL, wenn (C) f
NMOUT
;Aufruf der Ausgaberoutine
15,7,129 , 7,9
;Define Byte - Anweisung
HLT OPDLI:
OB
zu A addieren
;Programm anha l ten
END Bild 41
VOllständiges Assemblerprogramm (nach Bild 37 . c) ((' 1'( ~ -r.::) -'o-'::i --;>
'1
fo-rb
I,IJ
-";;>
--rO''( - ,J ' 0 1 <5 _ ::;>
'{
S-
~
-
86 -
Anweisung der Anfangsmarke ADDSA die physikalische Adresse l"'H zu , an der der erste ausführbare Befehl " LXI SP, l FFFH " beginnt . Fehlt die ORG - Anweisung , dann geht der Assembler nac h 171 von der Anfangsadresse , aus . Die "END "- Anweisung am statischen Ende eines Quellprogramms zeigt dem Assembler das Programmende an . Die Anweisung " name EQU expr " (engl. equates) weist dem Namen im Markenfeld den für die Laufzeit des Programms konsta n ten Wert von expr zu; expr kann ein konstanter B- Bit-Wert oder eine 16 - Bit-Adresse sein 171 . Der Ausdruck expr im Operanden feld kann eine Zahl in einem zulässigen Zahlensystem oder ein vom Assembler zu berechnender arithmetischer Ausdruck sein . Die EQU - Anweisung definiert keine Speicherzelle ; der Name im Markenfeld darf nicht mit einem Doppelpunkt abgeschlossen wer den . Für die zwei Programmzeilen von Bild 41 NMOUT
EQU CALL
'7"H NMOUT
setzt der Assembler im Maschinencode hexadezimal ab : CD " CD ist der Operationscode des Aufrufbefehls CALL , "
'7 .
ist das
niederwertige und '7 das höherwertige Byte der Adresse . Nach Bild 39 sollen die fünf Operanden im Hauptspeicher im Anschluß an die auszuführende Befehlsfolge abgelegt werden . Die DB - Anweisung (engl.
~efine ~yte)
" [marke :] DB operanden " legt
die im Operandenfeld definierten Bytes ab der symbolischen Adresse marke in aufeinanderfolgenden Speicherplätzen ab . Eine DB-Anweisung kann bis zu acht , durch Kommata getrennte Bytes belegen. Die physikalische Anfangsadresse der definierten Daten ergibt sich aus dem Stand des Adreßpege l s während der As semblierung an dieser Stelle. Der aktuelle Adreßpegel zeigt dem Assembler stets die nächste verfügbare Speicherstelle zur Ab lage von übersetzten Befehlen oder Daten an (s. Abschn . 1 . 4 . 3) . In Bild 41 wird der Adreßpegelstand nach dem letzten übersetz ten Befehl dem Namen OPDLI zugewiesen . Die Daten im Operanden teil sind dezimal definiert. Weitere Anweisungen des BOBS-Assemblers 171 sind hier aus Platzgründen nicht behandelt .
-
87 -
Das dynamische Ende des Programms (Bild 41) wird durch den Halt - Befehl HLT mark iert . Der Mikropr ozessor bl eibt auf diesem Befehl stehen, bis er z .B. durch ein Reset-Signal auf die Speicheradresse 1.4. 3
0 springt.
Programmerstellung mit maschi nellem Assembler
Kleine Programme kann man von Hand mi t Hi l fe der Befehlsliste aus der Assemblersprache in den ablau ffähigen Maschinencode übersetzen , was in der Einarbeitungsphase durchaus z u e mpfeh len ist . Für etwas längere Programme ist die manuelle Methode zu zeitaufwendig und zu fehleranfä ll ig ; man setzt Überset z ungsprog ramme (Ass e mbl e r) ein. Die umf a ngre ich e n Über setzerprogramme können in der Regel nicht auf den tei l weise recht "kleinen" Anwendungssystemen ablaufen , für die das Programm erste llt wird . Die Übersetzung erfolgt entweder auf Universal rechnern oder a u f spezialisierten Mikrocomputer-Entwicklungssystemen (s. Ab schn. 3 .1). Im Pr in zip sind zwei Üb ersetzungs läufe erforderlich : Im ersten Lauf ermit telt der Assembler den Speicherbedarf für Befehle und Daten; er übernimmt alle im Markenfeld auftretenden Namen in eine Symboltabel l e und ordnet ihnen ihre absolute Adresse im Programm bzw . deren Wert (b ei der EQU- Anwei s ung) zu. Di e absoluten Adressen gibt der Adreßpegelzähler des Assemble rs an , der zu Beginn der Übersetzung auf die absolute Programmanfa ng sadresse gesetzt wird (ORG - Anweisung) . Im zweite n Lauf setzt der Assemb ler de n Maschinencode a b. Dabei ersetzt er die symbolisc hen Adr esse n im Operanden-/Adres senfeId durch die absoluten (physikalischen) Adressen aus der Symboltabelle . Mit der Übersetzung wird g l e ich zeitig ei ne Programmliste (eng l. program listing) erzeugt , die das Quellprogramm (Bi l d 41) und den gewonnenen Maschinencode in Hexadezi ma Ida rst eIlung e nthä l t . Sämtliche Arbeitsschritte bei der Entwicklung eines Programms mit automatischem Assembler vom Programmablaufplan bis zur Dokumentation sind in Bild 42 in Form eines Flußdiagramms dar gestellt. Auf Grund der bisherigen Erläuterungen und den Be -
-
nach Abschn. 1. 4 . 1
} ---
nach Abschn . 1. 4.2
} ---
z.B. über die Tastatur des Bediengeräts
} ---
88 -
Programrnablaufpläne erstellen
auf Computer OdeJ Mikrocomputer__ _ Entwicklungssystem Assembler gibt Syntaxfehler an
ja
mit Hi l fe eines MC-Testsystems
} ---
Semantikfehler ergeben sich beim Test
} -----
mit einem } PROM/EPROMProgrammiergerät
pro-}
ergänzend zu grammab l aufplan und listing
ja
_ __ _
___ _ Bild 42 Pr ogrammentwicklung mit automatischem Assembler
- 89 merkungen zu jedem Symbol dürfte das Flußdiagramm weitgehend " selbsterklärend" sein.
Auf Mikrocomputer-Entwicklungssysteme
wird in Abschnitt 3 eingegangen. 1.4.4
Höhere Sprachen und Struktogramme
Höhere Programmiersprachen sind problemorientiert und (weitge hend) rechnerunabhängig 1231. Ihre Sprachelernente, die Anwei sungen (engl. statements), sind im Gegensatz zur Assembler sprache nicht aus den Maschinenbefehlen eines Mikroprozessor typs übernommen, sondern durch den Einsatzbereich bestimmt. Man unterscheidet die Aufgabenbereiche der technisch - wissen schaftlichen Datenverarbeitung , der kommerziellen Datenverarbeitung und der Prozeßdatenverarbeitung (Echtzeit-Datenverar beitung). Auf Mikrocomputern angewendete höhere Sprachen mit unterschiedlichen Einsatzschwerpunkten sind FORTRAN, BASIC, PASCAL, PL/M und C . Ein statement einer problemorientierten Sprache wird in der Regel durch eine Anzahl von Maschinenbefehlen auf dem Mikro prozessor zur Ausführung gebracht. Es ist die Aufgabe des maschinenorientierten Übersetzerprogramms (engl . compiler) , für die Anweisungen der höheren Sprache den Machinencode des Ziel rechners zu erzeugen . Auf di e Sprachelemente von höheren Sprachen besonders zuge schnitten sind die Struktogramme oder Nassi -S hneidermann -D ia gramme 1231, die üblicherweise mit Anweisungen in einem Pseudocode (Entwurfsprache) beschriftet werden . Str u ktogramme erset zen hier die in Abschnitt 1.4.1 beschriebenen Flußdiagramme. Obwohl das Schreiben eines Programms in einer höheren Sprache im a ll gemeinen einfacher ist und kürzere Entwicklungszeiten (mehr Anweisungen pro Tag) beansprucht als das Codieren in Assemblersprache, behauptet sich letztere vor allem im Bereich der hardware -n a h en, realzeit - orientierten Anwendungen 124 11 25 1. Of t werden in einer höheren Programmiersprache geschriebene Programmteile (Moduln) mit Assemblerroutinen zusammengebunden . Man spricht dann von multimodularer Programmierung.
90 2
Der Mikroprozessor 8085
Der Mikroprozessor 8085 ist kein isolierter Baustein; e r ist in Struktur und Befehlsvorrat eng verwandt mit der 80'er Reihe der I NTEL - bzw . SIEMENS-Mikroprozessoren , die bei den 8-Bit Single Chip - Mikrocomputern 8048 und 8051 beginnt, die 8- Bit Mikropro zessoren 8080 u n d 8085 einschließt und bei den leistungsfähigen 16-Bit Mikroprozessoren 8088, 8086 und 80286 endet . Auf Grund der weitgehend identischen Bus-Schnittstellen sind die Ein-/Ausgabe- , Interface- und Ergänzungsbausteine des 8085 an allen Mikroprozessortypen der 80 ' er Reihe einsetzbar . In diesem Kapitel werden Struktur , Schnittstellen und Befehls satz des Mikroprozessors 8085 (MP 8085) soweit dargestellt , daß der Anwender den Baustein 8085 zum Aufbau von Mikrocomputersystemen einsetzen und effiziente 8085-Programme schrei ben kann . Es ist nicht die Aufgabe dieses einführenden Skriptums , a u f begrenztem Platz die Datenbücher und ProgrammierHandbücher eines bestimmten Mikroprozessortyps vollständig wiederzugeben . Hierzu sei auf die Produktbeschreibungen 171, 112 1,
1131 und 1611 verwiesen .
Der Baustein 8085A ist ein VLSI - Baustein
(~ery
!arge
~cale
integration), in dem etwa 5000 Transistorfunktionen auf einer ~hip-Fläche von ca. 6 x 6 mm 2 integriert sind. Er ist in einem 40 - poligen dual-in-line - Gehäuse verpackt , dessen Anschlußbelegung Bild 43 zeigt . Der 8085 benötigt nur eine Versorgungsspannung von 5 Volt und arbe i tet in den NMOS - Versionen mi t
3 MHz ,
5 MHz oder 6 MHz, in der CMOS-Version mit 3 MHz Grundtakt 162 1 . 2. 1
Struktur des Mikroprozessors 8085
Die allgemeine Beschreibung der Struktur von Mikroprozessoren in den Abschnitten 1.2.4 und 1..2.5 wird hier für den MP 8085 konkretisiert und ergänzt. Der Baustein 8085 enthält das Re chenwerk einschließlich ALU und Registerstruktur, das Leitwerk einschließ l ich Takterzeugung , Ablauf- und Systembussteuerung , eine Unterbrechungssteuerung und serielle Ein - /Ausgabeleitun-
- 91 gen , wie auf dem 8085 - Blockschaltbild (Bild 44) erkennbar ist. Die 40 Anschlüsse des MP 8085 teilen sich auf in den Systembus mit Steuerbus , Adreß- und Datenleitungen, in die seriellen Ein-/Ausgänge
(SID, SOD) und die Unterbrechungseingänge.
Da der MP 8085 mehr Schnittstellensignale benötigt, als das 40 - polige Gehäuse zur Verfügung stellt , werden die 8 Busleitungen
AD7 - ~
zwei-
fach genutzt. Innerhalb eines Buszyklus sind sie im Zeitmultipexbetrieb zuerst die niederwertigen Adreß leitungen
A7 - ~
und anschlie -
ßend für den Rest des Zyklus die Datenleitungen
D7-~ .
Logisch gesehen hat der MP 8085 sechzehn Adreßleitungen , die einen Speicher adressenbereich von 64 K Bytes er -
IO/M Sl RD WR
ALE
AD~
S~
ADl AD2 AD3 AD4 AD5 AD6 AD7 VSS
Al S A14 Al3 A12 All AIO A9 A8
Bild 43
schließen . 2.1.1
V CC HOLD HLDA CLK(OUT) RESET I N READY
Xl X2 RESET OUT SOD SID TRAP RST 7.5 RST 6.5 RST 5 . 5 INTR INTA
Anschlußbelegung des Bausteins 8085
Register - und Transportstruktur
Der Mikroprozessor 8085 hat als interne, zentrale Verkehrsader einen 8 - Bit breiten Datenbus
D7 - ~ ,
an den alle 8 - Bit - und 16 -
Bit Register des Prozessors angeschlossen sind (Bild 44) . Über den bidirektionalen Daten-/Adressenpuffer (ADR/DATEN)
kann der
interne Datenbus
geschal -
D7-~
auf den externen Datenbus
AD7 - ~
tet werden und umgekehrt, was bei jedem Speicher - und Ein - / Ausgabezyklus geschieht . Der interne Aufbau des 8085 entspricht im Prinzip der allgemeineren Struktur in Bild 17. Die 8- Bit - und 16-Bit Register des 8085 (Bild 44) lassen sich in programmierbare und nichtprogrammierbare Register untertei len. Die für den Anwender wichtigen programmierbaren Register (Bild 45) sind in den Maschinenbefehlen explizit (durch Regi steradressen ) oder implizit (durch den Operationscode) adres -
Bild 44
X2
Xl
RST6.5
ALU
~ 11 1
M~kr~~rozessors
HLDA
Registerblock
Adreßb u s
A15-8
Adreß/Datenbus
AD7 - ~
B- REG 8 C- REG 8 D-REG 8 E-REG 8 H-REG 8 L-REG 8 Stackl20inter 16 Befehlszähler 16
8085 (Abkürzungen vg l. Bild 17)
I
\~HOLD
S~ SI 10/M
Maschinen-' zyklussteuerung
/'IOV\",c.sGc.rSI" ,,;Icv.uYJf
Zeit- und Ablaufsteuerung
8
TRAP
11,;tl,",<,,;,~ {p,j,~
Blockschaltbild des
Stromver- _ +5 V sorgung - - Masse
INTA
N
'"
- 93 sierbar. Man unterscheidet hierbei Universalregister (Mehr zweckregister , engl. general purpose register) zur Kurzzeit speicherung von Daten und Adressen und Spezialregister mit festgelegten Funktionen . Uni v e r s a I r e g i s t e r Register name 7 A
iJ
.-----',
B
Register nummer
Register paarnummer
III
D
iJiJiJ iJiJI iJ l iJ
E
iJll
H L
liJI
C
Register paarname
liJiJ
B
B
D
D
E
iJ I
H
H
L
l iJ
CC-HL)' M L ""'0 S P e z i aIr e 9 i s t e r Fl ag - Register F
Programm-Status - Wort
11......1"" 1I
,-",...... , .,.... , .....
I nte rrupt-Register I
" 1111 111
PSW
A
F
Stackpointer SP
ll *
ll*
Befehlszähler PC
*) Dieselbe Registerpaarnummer adressiert das PSW bei PUSH - / POP - Befehlen und den SP bei den übrigen Befehlen. Bild 45
Programmierbare Register des Mikroprozessors 8085 (Programmiermodell)
Die Universalregister A,B , C,D,E,H,L - wobei A für Akkumu l ator steht - sind einzeln als 8-Bit Register oder a l s 16 - Bit Regi sterpaare BC,DE,HL mit den Registerpaarnamen B, C und H an sprechbar . Die 2- Bit oder 3-Bit lange Registernummer ist Teil des ersten Befehlsbytes. Das Registerpaar HL hat neben seiner allgemeinen Verwendbarkeit eine spezielle Funktion bei der reg i sterindirekten Speicheradressierung: HL muß die abso l ute Adresse des Speicheroperanden enthalten (vgl. Bild 24). Bei einigen Befehlen können auch die Registerpaare BC oder DE die Speicheradresse zur Verfügung stellen. Die Spezialregister haben im einzelnen folgende Funktionen :
- 94 Der 16 - Bit lange Befehlszähler PC (Erogram
~ounter)
zählt byte-
weise . Zum Holen von ein , zwei oder drei Byte langen Befehlen muß er entsprechend oft inkrementiert werden (vgl. Bild 18). Das 16 - Bit lange Stackpointer-Register SP (dt. Stapelzeiger) dient zur Adressierung eines auf besondere Weise verwalteten Datenbereichs im RAM, wie in Abschn. 2.1.6 beschrieben . Das 8-Bit lange Interrupt-Register I ist für di e Manipulation der 8085-eigenen Unterbrechungseingänge (INTR, RST5.5, RST6.5, RST7 . 5) und der seriellen Ein-jAusgänge SID , SOD erforderlich (s . Abschn . 2.4 und 2 . 1. 5) . Das Flag-Register F enthält fünf I - Bit Statuskennungen (engl. status flags) , in denen die Prozessorsteuerung bestimmte Ei genschaften der Ergebnisse von arithmetischen und logischen Befehlen festhält (Bild 46). In der Befehlsliste des MP 8085 ist bei jedem Befehl angegeben , welche flags er verändert bzw . unverändert läßt (s. Abschn. 2 . 3). Somit beschreibt ein Status flag den Inhalt desjenigen Registers oder Speicherplatzes, bei dessen Veränderung es zuletzt beeinflußt wurde. Bei der Abfra ge der Status - flags durch bedingte Verzweigungen (z.B. springt der Befehl " JC adr" auf die Adresse adr , wenn das CY - flag auf 1 gesetzt ist, andernfalls geht es beim nächsten Befehl weiter) ist darauf zu achten, welches Befehlsergebnis wirklich abge fragt wird. undefiniert 07 06 F
S
IZ
05 04 03 02 1-
IAC
1-
Ip 1
01 DlJ
- Icy 1
11 L---t
Bild 46
L
Übertragsbit (~arrx flag) Paritätsbit (Earity flag) Hilfsübertrag
(~uxiliary ~arry)
Null-Kennzeichen Vorzeichenbit
(~ero
(~ign
flag)
flag)
Flag-Register F
Im Programm-Status - Wort PSW sind das flag - Register F und der Akkumulator A zu einem 16 - Bit Wort zusammengesetzt , das ledig -
- 9S -
lich für die PUSH - und POP - Befehle zur Stackverwaltung Bedeu tung ha t
(s. Abschn . 2.1.6).
Bedeutung der Status-flags (Bild 46): S
Im Falle seiner Veränderung gibt das Vorzeichenbit S (sign flag) den Wert der höchstwertigen BitsteIle des Ergeb-nisses wieder . Nur beim Rechnen mit vorzeichenbehafteten Zahlen (vgl. Abschn . 1.3.1) stellt das höchstwertige Bit und damit das S-flag wirklich ein Vorzeichen dar : S = ~ entspricht plus, S = 1 entspricht minus.
Z
Das Null-Kennzeichen Z (zero flag) wird auf 1 gesetzt, wenn das Ergebnis einer arithmetischen oder logischen Operation ~ ist ; bei einern Ergebnis ungleich ~ wird das Z-flag ge löscht .
P
Das Paritätsbit P ergänzt die Anzahl der Einsen in einern Ergebnisbyte stets auf eine ungerade Gesamtanzahl (engl . odd parity). Es wird also (P) = 1 gesetzt, wenn die Anzahl der Einsen im Byte gerade ist und umgekehrt.
CY
Ein Übertrag aus der B- stelligen ALU setzt das Übertrags bit CY (carry flag) auf 1; ein Übertrag ~ l öscht das CY flag. Bel Subtraktionsbefehlen hat das CY-flag die Bedeutung des Borgers. Es wird auch bei logischen Operationen und Schiebebefehlen verändert .
AC
Das Hilfsübertragsbit AC (auxiliary carry) zeigt den Übertrag von Bit 3 nach Bit 4 bei arithmetischen Operationen an. Es hat nur Bedeutung bei der Arithmetik mit BCD-Zahlen und wird vorn Befehl DAA (s. Abschn . 2.3.2) ausgewertet .
Die nicht programmierbaren Register sind auf Programmebene nicht adressierbar; sie werden als Zwischenspeicher für die inter nen Abläufe im Mikroprozessor benötigt (Bild 44) . Das Befehlsregister BR nimmt das erste Befehlsbyte jedes Befehls auf und speichert es während der Befehlsausführung. Das Zwi sChenregister ZR nimmt den Operanden vorn Bus für die Dauer der Verarbeitung in der ALU auf. Das Adressenzähl - Register spei chert Adressen und inkrementiert sie bei Bedarf . 2. 1 . 2
Maschinenzyklen und Ablaufsteuerung
Die Hauptaufgabe der BOBS - internen, synchronen Ablaufsteuerung ist es , die Befehlszyklen im Mikroprozessor abzuarbeiten, wo bei ein Befehlszyklus nach Bild 21 den byteweise n Abruf ei nes Befehls aus dem Hauptspeicher und seine Ausführung umfaßt. Ab hängig von der Befehlslänge und der Anzahl der zu übertragen-
- 96 den Speicheroperanden benötigen Befehlszyklen eine unterschiedliche Anzahl von Speicherzyklen . Ein-/Ausgabebefehle benötigen zusätzlich Ein - / Ausgabetransfers zu peripheren Einheiten. Speicher- und Ein-/Ausgabetransfers laufen beim MP BOBS ausschließ lich über den Systembus (vgl. Abschn. 1.2.2) und benötigen daher immer einen Systembuszyklus . Der organisatorische und zeitliche Rahmen für einen Systembuszyklus ist der Maschinenzyklus des BOBS. Während eines Maschinenzyklus "fährt" er (als bus master) einen Systembuszyklus und führt zusätzlich vom Operationscode abhängige Operationen im Rechenwerk, z.B . logische und arithmetische Verarbeitungsschritte in der ALU, aus. Ein Befehlszyklus setzt sich aus einer Folge von ein bis fünf Ma schinenzyklen (Operationszyklen) Ml,M2 .. . M5 zusammen (Bild 47). Maschinenbefehle
11.
Befehl
2. Befehl
~aschinenZYklen
1
MI
I
~aktzustände
I
Bild 47
I
3.
I M2
M3 I
M4 I
MI
I
I
MI
I
Ablauf von Maschinenbefehlen
Die nicht mehr weiter unterteilbaren Arbeitsschritte (Mikrooperationen) während eines Maschinenzyklus werden von den Takt z u ständen (Taktperioden, Takte, engl. states) des ProzessorGrundtaktes synchronisiert. Ein Maschinenzyklus besteht abhängig von seinen Funktionen aus drei bis sechs Taktzuständen Tl , T2 ... T6. In Bild 47 sind die Maschinenzyklen und Taktzustände für zwei aufeinanderfolgende Befehle (Befehlszyklen) dargestellt. Der erste Befehl benötigt 4 Maschinenzyklen und insgesamt 13 Takte, der zweite Befehl benötigt nur einen Maschinenzyklus mit 4 Takten. Der Prozessor-Grundtakt wird in einem BOBS-internen Taktgenerator erzeugt, dessen Frequenz durch Beschaltung mit einem geeig -
- 97 neten Schwingquarz von außen (Eingänge Xl und X2) festgelegt werden kann. Für die 3-MHz-Version des MP 8085 benötigt man einen Quarz mit einer Parallelresonanz von 6 MHz, für einen Grundtakt von 5 MHz ist ein 10 - MHz-Quarz erforderlich, da der erzeugte Takt intern halbiert wird. Der interne Taktgenerator (Bild 48) liefert für die Steuerung der internen Abläufe einen Zweiphasentakt und
~2.
~l
Der inver-
tierte Takt
~l
steht als Grundtakt am CLK-Ausgang (pin 36) des 8085 zur Verfügung . Er stellt
CLK
den zeitlichen BeBild 48
zug für die Bus-
8085-Taktgenerator mit exter nem Quarz
Signale dar und kann als Grundtakt für andere Bausteine im Mikrocomputersystem verwendet werden. Der Grundtakt des Mikroprozessors ist maßgebend für die Aus fÜhrungszeit der Befehle, die üblicherweise als Vielfaches der Periodendauer T des Grundtaktes angegeben wird. Bei einern Grundtakt von 3 MHz (T = 0,333
~s)
hat der erste Befehl von
Bild 47 mit 13 Grundtakten eine Bearbeitungszeit von 13 x 0,333
~s
=
4,329
~s.
Im Prinzip läuft während der Maschinenzyklen auf dem Systembus der Datenaustausch zwischen dem Mikroprozessor und seinen Speicher - und Ein-/Ausgabeeinheiten in Form von Lese- und Schreibzyklen ab. Als Beispiel [13[ ist der Befehlszyklus des Befehls "STA adr"
(gore !!ccumulator direkt nach adr) in Bild
49 dargestellt. Es ist ein 3-Byte-Befehl, der den Inhalt des Akkumu l ators an die im zweiten und dritten Befehlsbyte angege bene Adresse im Speicher ablegt. Die Ablaufsteuerung schaltet im ersten Maschinenzyklus MI den aktuellen Stand des Befehls zählers PC auf den Adressenbus
A15-~
und stößt einen Speicher-
Lesezyklus an, in dem das erste Befehlsbyte (Op-codebyte) aus -
- 98 gelese n und in d as Befehlsregister BR gebracht wird (Takte 1 3) . Im vierten Takte des Maschinenzyklus Ml wird der Befehlszäh ler PC inkrementiert und der geholte Operationscode dekodiert , um zu erfahren , was weiter zu tun ist. Dieser erste Maschinenzyklus Ml eines jeden Befehlszyklus ist ein besonderer Lesezy klus, der als Operationscode - Abruf - Zyklus (engl. Qp-code !etch OF) bezeichnet wird. Im Falle des STA-Befehls sind drei weite re Maschinenzyklen zu veranlassen: Mit dem inkrementierten Befehlszähler (PC) + 1 als Adresse wird in einem Lesezyklus (engl. ~emory
read MR) M2 das niederwertige Byte der Operandenadresse
und in einem zweiten Lesezyklus M3 mit (PC) + 2 als Adresse das höherwertige Byte der Operandenadresse geholt . Di e Ausführungs phase des STA - Befehls besteht darin, daß in einem SpeicherSchreibzyklus (engl.
~emory ~rite
MW) M4 die eingeholte Spei -
cheradresse auf den Adressenbus gelegt und der Inhalt des Akku mulators über den Datenbus i n die so adressierte Speicherzelle eingeschrieben wird. Wie das Beispiel in Bild 49 zeigt , bringt die Ablaufsteuerung für jeden Befehl eine Folge von Maschinenzyklen zur Ausführung , deren Art und Anzahl von dem in Ml dekodierten Operationscode Befehlszyklus (STA adr) Maschinenzyklen Taktzustände CLK (OUT) Art des Operationscode Maschinenzyklus lesen OP-(<>«e fo:\<1. (OF)
Speicher lesen (MR)
Speicher lesen (MR)
Speicher schreiben (MW)
Adresse (PC) + 2 zeigt auf 3 .Befehls byte
Adresse sind die in M2 und M3 geho lten Bytes
Adresse nb us
Adresse (PC) zeigt auf 1 . Befehlsbyte
Adresse (PC) + 1 zeigt auf 2 .Befehlsbyte
Datenbus
Op - Codebyte des Befehls
Niederwer - Höherwertiges tiges Adreßbyte Adreßbyte
Bild 49
Zeitlicher Ablauf des Befehls "STA adr"
Inhalt des Akkumula tors
- 99 abhängt . Die 8085-Steuerung unterscheidet 7 verschiedenartige Maschinenzyklen; der Typ des gerade ablaufenden Maschinenzy klus wird während der ganzen Zyklusdauer an den 3 Statusausgän gen 101M , SI , S~ des MP 8085 angezeigt (Tafel 7). Das Status signal 101M unterscheidet Speicherzyklen (101M = ~) und Ein - I Ausgabezyklen ( 101M = 1). Die Steuersignale RD (Lesen) , WR (Schreiben) und INTA
(interrupt-~cknowledge)
dienen zur zeit l i -
chen Steuerung der Speicher - und Ein - /Ausgabevorgänge auf dem Systembus . Sie sind low active, d.h. sie lösen die gewünschte Funktion bei low-Pegel (TTL: 0 . .. 0,8 V) aus . Das Zeitverhalten der Steuersignale wird in Abschn. 2 . 1.3 behandelt. Neben den Speicherzyklen OF, MR , MW und den Ein - /Ausgabezyklen IOR , IOW gibt es nach Tafel 7 den Zyklus Unterbrechungsquittung INA (engl. interrupt
~cknowledge) ,
in dem der 8085 mit dem Steuer -
signal INTA (s. Tafel 8) auf Me l dungen von externen Interrupt Steuerungen reagiert (s. Abschn. 2.4.2) . In einigen Fällen be nötigt der 8085 Maschinenzyklen für die interne Verarbeitung , ohne daß Busaktivitäten erforderlich sind. Die BI-Maschinenzy kIen (engl. bus idle) treten beim Befehl DAD (s . Abschn. 2.3.2) und bei den
RST-Befe hl en auf, soweit sie d u rch RST - Signale
von außen erzeugt werden (s. Absch. 2 . 4 . 2). Tafe l 7
8085 - Maschinenzyklen
1131 Statussignale Steuersignale 101M SI RD WR INTA S~
Maschinenzyklus Operationscode - Abruf
(OF)
~
1
1
~
1
1
Speicher lesen
(MR)
~
1
~
~
1
1 1
Speicher schreiben
(MW)
~
~
1
1
~
Ein - /Ausgabe lesen
(IOR)
1
1
~
~
1
1
Ein - /Ausgabe schreiben
(IOW)
1
~
1
1
~
1
Unterbrechungsquittung
(INA)
~
Bus - Ruhezustand (BI) : DAD INA(RST/TRAP) HALT Anm . :
~
1
1
1
1
1
~
1
~
1
1
1
1
1
1
1
1
1
HZ
~
~
HZ
HZ
1
- l ow, 1 - high , HZ d.h . high impedance
- 100 -
Nach der Ausführung des
HLT - Befehls läuft die Ablaufsteue -
rung in einen Halt - Zustand mit der Signalbelegung nach Tafel 7. Au s dem Halt-Zustand kann der Pro ze ssor nur durch ein ResetSignal oder ein Interruptsignal befreit werden. Die zeitlichen Abläufe bei den verschiedenen Sonderfällen sind in 1121 und 1131 beschrieben.
2.1.3
Systembus und Ablaufsteuerung
Um Speicher- und Ein-/Ausgabeeinheiten an den Systembus anschließen z u können, muß die Bedeutung der Bussignale und deren Zeitverhalten (engl. timing) bekannt sein. Tafel 8 gibt Tafe l 8
Funktion der wichtigsten Systembus- Lei tungen (S. 100 - 101)
Signal
Signalfunktion
A15-8 (aus)*
Höherwertiges Adreßbyte des Adressenbus
AD7 - ~
Di e Adreß-/Datenbusleitungen AD7-~ führen im Zeitmultiplex-Betrieb während des Taktzustandes Tl die niederwertigen Adreßbuss ignal e A7 -~, wäh rend der restlichen Takte des Maschinenzyklus di e Busdaten D7-~.
(ein/aus)*
ALE (aus)
Das Steuersignal ALE (address latch enab l e) zeigt während des Takt zustandes Tl (ALE ~ Tl an, daß auf dem Adreß - /Datenbus AD7 -~ das niederwertige Adreßbyte A7-~ ansteht. ALE dient zur Zwischenspeicherung des Adreßbytes A7-~ in einem externen 8-Bit-Register.
IO/M
Das Statussignal zeigt an, ob der Datentransfer im Bereich der 64K Speicheradressen oder im Be reic h der 256 Ein - /Ausgabeadressen stattfindet (vgl. Tafel 7).
(aus)*
101M ~ 1 bei den EA-Zyklen 10R und 10W (ausge löst durch die Befehle IN und OUT), 101M ~ ~ bei den Sp eicherzyk len MR, MW und OF. RD (aus)*
Da s Lese-Steuersignal RD ver anlaßt die ausge wählte Speicher - oder EA-Einheit, ein Datenbyte auszulesen und auf den Adreß-/Da t enbus AD7 - ~ zu schalten, (damit es der Mikroprozessor aufnehmen kann) .
- 101 Tafel 8
Funktion der wichtigsten Systembus - Leitungen (Fortsetzung von Seite 100)
WR
(aus)*
READY (ein)
Das Schreib-S teuersignal WR ver anlaßt die ausge wählte Speicher- oder EA-Ei nheit , das auf dem Adreß - / Datenbus anstehende Byte in einen Spei cherplatz oder ein Register zu übernehmen. Der READY - Eingang dient zur Synchronisierung der Maschinenzyklus - Takte des 8085 mit langsameren EA- und Speichereinheiten am Systembus. READY = 1 d . h . die ausgewäh l te EA- oder Speicher einheit ist zum Les e n oder Schreiben bereit, READY = jil d.h. die ausgewählte EA- oder Speichereinheit ist nicht zum Lesen oder Schreiben berei t. Der 8085 fügt zusätzliche Wartet akte Tw ein (s. Abschn . 2.1. 4) .
HOLD (ein)
Das HOLD-Signal zeigt an, daß ein anderer Bus teilnehmer die Steuerung des Systembus übernehmen will (DMA- Betrieb) • Der 8085 gibt den Bus frei, sobald der aktuelle Buszyklus beendet ist , i ndem er die Adressen- und Datenleitungen sowie RD , WR und 101M hochohmig scha l tet . Der Mikroprozessor kann die Regie über d e n Systembus erst wieder übe r nehmen , wenn das HOLD-Signal zurückgenommen wird.
HLDA (aus)
Der MP 8085 antwortet mit dem Signal HLDA auf die HOLD - Anforderung. HLDA = 1 bedeutet , daß die an fordernde Einheit (z . B . der DMA-Controller) den Systembus betreiben kann . Wird die HOLD-Anforde rung zurückgenommen , übernimmt der 8085 mit HLDA = jil wieder die Bussteuerung.
CLK (aus)
Takt ausgang mit d em Grundtakt des Prozessors , kann als Systemtakt für andere Bus - Teilnehmer . verwendet werden (vgl . Bild 48) .
RESET OUT (a u s)
.. zeigt an , daß der 8085 gerade rückgesetzt wird . RESET OUT ist mit dem Prozessortakt synchronisiert und kann als System- Rücksetzsignal verwendet werden.
INTR (ein)
Sammel-Interrupteingang von einem externen Interrupt - Controller. Näheres siehe Abschn . 2 . 4.
INTA (aus)
Der MP 8085 sendet die Unterbrechungsquittung INTA (eng1. interrupt acknowlegde) in e inem INAMaschinenzyklus (vgl . Tafel 7 ) a l s Antwort auf ei n e Unterbrechung vom Eingang INTR .
*) Ausgänge sind hochohmig bei HOLD, HALT und RESET
- 102 eine Zusammenstellung der wichtigsten Systembus - Signale , die z . T . schon erläutert wurden und teilweise in den folgenden Ab schnitten angesprochen werden . Es empfiehlt sich , die beschrie benen Signale in Bild 44 aufzusuchen . Den vollständigen Adreß - und Datenbus gewinnt man aus den Adreß - /Datenbusanschlüssen
AD7 - ~
des 8085 mit einer Demulti -
plexerschaltung nach Bild 50 . Das Steuersignal ALE (Tafel 8) taktet während des ersten Tak tes Tl eines jeden Maschinenzyklus das untere Adreßbyte das zu dieser Zeit auf dem MUltiplexbus
AD7 - ~
A7 - ~,
erscheint , in
ein 8- Bit-Zwischenregister ein . Dessen Ausgänge
A7-~
bilden
zusammen mit dem h6herwertigen Adreßbyte A15 - 8 den vollständi gen Adreßbus
A15-~ ,
der den Busteilnehmern zur Verfügung steht .
Ab dem Taktzustand T2 erscheinen auf dem MUltiplexbus die Da ten
D7 - ~
vom MP 8085 oder vom passiven Busteilnehmer her, be -
gleitet von den Steuersignalen WR oder RD und lO/M. Als Zwi schenspeicher (eng1 . latch) mit Signalverstärkung k6nnen neben dem Typ 8282 z.B. die Bausteine 8212 1541 oder 74LS373 eingesetzt werden .
•
~
A15 - 8 STB OE
ALE
ri
~
8 0 8 5
Dl 7- 13
A15 - ~
Vo l lständiger Adreß - und Datenbus
DO I - 7-13 I - -
A7 - ~
8282 AD7 - ß' I~
RD -
WR
IO/M Bild 50
) v
D7 - IJ RD WR lO/M
Demultiplexen des Adreß - /Datenbus
AD7 - ~
- 103 Nach dem bisher Gesagten sind die Signal-Zeitdiagramme für die Maschinenzyklen Lesen (Bild 51) und Schreiben (Bild 52) einfach zu verstehen . Die Lesezyklen Speicher - Lesen MR und EA-Lesen rOR sind ebenso wie die Schreibzyklen Speicher-Schreiben MW und EA-Schreiben row im Zeitablauf identisch un d werden nur durch die Stellung des Statussignals
rO/M
während des Maschi -
nenzyklus unterschieden (vgl . Tafel 7) . Ein normaler Lese oder Schreibzyklus benötigt beim 8085 drei Taktzustände Tl bis T3 . Nur der erste Maschinenzyklus Ml eines Befehlszyklus vorn Typ "Befehl holen"
(OF) benötigt 4 bis 6 Taktzustände .
MR (rO/M
fl) oder rOR (rO/M
Tl
T2
1)
T3
CLK
A15 - 8
AD7 - fl I
I
ALE I
I
A7 - fl *)
I
I
I
1
H'-- t RD -
--1
-+-----+11
II\;./----+------.J,
r-- t cc
- - 1 1 - - - - --
rO/M READY
1
fl Erklärungen: *) Ausgang des Zwischenspeichers (Bild 50) HZ d.h. hochohmiger Zustand vo n Ausgängen - - - - - Slgnalwirkung 1111111 Daten undefiniert Periodendauer T ; 333 ns bei f ; 3 MHz Bild 51
Signal-Zeitdiagramm der Lese - Maschinenzyklen MR und rOR ohne Wartetakte (Sl , Sfl ; l,fl)
- 104 In den Taktdiagrammen (Bild 51 und Bild 52) ist die prozessor externe Zwischenspeicherung des niederwertigen Adreßbytes
A7 - ~
(vgl . Bild 50) in der mit *) gekennzeichneten Signalzeile auf genommen , weil sie für den Busbetrieb immer erforderlich ist . Läßt man diese Signalzeile weg, dann stellen die Bilder 51 u n d 52 das Zeitverhalten des Mikroprozessorbausteins 8085 dar. Die folgenden Zeitangaben beziehen sich auf einen Grundtakt von 3 MHz (MP 8085A) und sind 1131 entnommen. Zum Lesezyklus (Bild 51): Nach Ausgabe der Adresse tet der MP 8085 den Multiplexbus
MW (101M Tl
AD7-~
~) oder 10W
T2
A 1 5-~schal
hochohmig , damit der
(101M
1)
T3
CLK
A15-8
AD7-~
ALE A7-~*)
WR
101M READY
1 ~
Erklärungen: *) Ausgang des Zwischenspeichers (Bild 50) HZ d.h . hochohmiger Zustand von Ausgängen - - - - Signalwirkung Periodendauer T = 333 ns bei f = 3 MHz Bild 52
Signal-Zeitdiagramm der SChreib-Maschinenzyklen MW und 10W ohne Wartet akte (Sl , S~ = ~,l)
- 105 adressierte Busteilnehmer die Daten treiben kann. Der 8085 ge stattet anschließend mit dem Aktivschalten des Lesesignals RD dem Busteilnehmer für die Dauer von tee = 400 ns (Minimalangabe), sein Datenbyte auf den Multiplexbus zu schalten . Der Prozessor übernimmt die Daten vom Multiplexbus allerdings nur dann richtig, wenn sie innerhalb der Zeit t
= 300 ns (Maxi RD malangabe) gültig werden. Andernfalls gibt es einen Lesefeh l er,
weil der Busteilnehmer zu langsam ist. Zum Schreibzyklus (Bild 52) : Nach Ausgabe der Adresse
A15 - ~
zu
Beginn des Taktes Tl l egt der MP 8085 die gültigen Daten auf den Multiplexbus
AD7 - ~
und gibt dies den Busteilnehmern durch
Aktivschalten des Schreibsignals WR für die Dauer von tee = 420 ns (Minimalangabe) bekannt. Das WR - Signal veranlaßt den adressierten Bustei l nehmer, die Date n in nerhalb der Zeit t
=
DW 420 ns (Minimalangabe) zu übernehmen; zur Sicherheit läßt der
8085 die gültigen Daten noch etwa 100 ns länger auf dem Multi p l exbus stehen. Kann die Spe ic her- oder EA- Einheit die Daten in der vom Mikroprozessor vorgegebenen Zeit von ca. 420 + 100 ns =
520 ns nicht übernehmen, gibt es einen Schreibfehler.
Weitere Zeitangaben zu den Signal-Ze itdiagrammen (Bild 51 und Bild 52) , die für den Entwurf von Bus-Anschaltungen erforder lich sein können, sind den Datenbüchern der Herstellerfirmen 11 21 und 1131 zu entnehmen. Bei der Betrachtung der Maschinenzyklen nach Bild 51 und Bild 52 fällt auf , daß der Mikropro zessor als aktiver Busteilnehmer (bus master) die Datenübertragungsz e iten auf dem Bus - durch seinen Grundtakt bestimmt - starr vorgibt, ohne auf die Reak tionszeiten der passiven Busteilnehmer Rücksicht zu nehmen . In vielen Fällen funktioniert dieser einfac he, synchrone Busbe trieb, da die Speicher- , Ein - /Ausgabe - und Ergänzungsbausteine einer Mikroprozessorfamilie in der Regel "systemkompatible" Schnittstellen haben, d.h . ihre Reaktionszeiten sind auf die Zeitvorgaben des Mikroprozessor s abgestellt (vgl. Abschn . 1.2.3.3). Bei umfangreicheren, verzweigten Bussystemen und wenn l angsa mere Einheiten an den Systembu s angesc hloss e n werden , geht man
- 106 zu einem asynchronen Busbetrieb über . Der READY - Eingang des 8085 (vgl. Tafel 8) , der beim synchronen Busbetrieb ständig auf 1 (d . h. bereit) gesetzt sein muß , wird dann von den passi ven Busteilnehmern als Meldeeingang betrieben : Hat der READY Eingang den logischen Zustand 1 , dann ist der adressierte Bus tei l ne h mer sofort zur Datenübertragung bereit ; nimmt er den Zustand
~
an , dann benötigt der passive Busteilnehmer für den
Lese - /Schreibvorgang mehr Zeit , als im synchronen Ab l auf vor gesehen ist. Der MP 8085 fragt das READY - Signal im Takt TZ eines j eden Mas chinenzyk l us ab.
Ist das Signal wahr , geht er vom Taktzustand
T Z d i rekt nach T3 über (synchroner Abla u f) . I st das Signal nicht wahr, dann schiebt der 8085 nach dem Takt T Z einen War tetakt T
(T ) ein (Bild 53). Dadurch wird der gesamte Zeit W WAIT ab l auf des Maschinenzyklus zunächst um eine Periodendauer T des Grundtaktes gestreckt . Ist bei erneute r Abfrage i m Warte takt das READY - Signal noch
T
w,
~,
so folgt ein weiterer Wartetakt
bis der adressierte Busteilnehmer das Signal auf 1 schal -
tet . Daraufhin geht der 8085 auf den n ächsten regulären Takt zustand T3 über und vollendet den Maschinenzyklus . Bild 53 zeigt den prinzipiel l en Ablauf eines Maschinenzyk l us (Lesen/ Schreiben) mit zwei eingefügten Wartetakten .
CL K AD 7 - ~
READY
Bild 53
Maschinenzyklus mit Z Wartetakten T
w
- 107 2 .1.4
Signal - Zeitdiagramme für BOB5-Befehle
Im folgenden werden die Signal-Zei t diagramme für zwei Maschinenbefehle angegeben und erläutert 1121
1131.
Der Ein-Byte-Befehl "DCX rp" dekrementiert den Inhalt des an gegebenen Registerpaares
u~
1. Dabei wird vom niederwertigen
Byte des Registerpaares (z.B . L-Register) eine 1 subtrahiert; ein eventuell entstehender Borger wird anschließend vom höherwertigen Byte (z.B. H-Register) abgezogen . Der Befehl beeinflußt die Status - flags nicht. Schreibweise:
(rp)~(rp)
- 1.
Der DCX - Befehl benötigt einen Maschinenzyklus Ml vom Typ OF (vgl. Tafel 7) für den Operationscode - Abruf. Die Ausführung des geholten Befehls, d.h. das Dekrementieren des Registerpaar inhalts , erfolgt in den angehängten Taktzuständen T5 und T6 des Maschinenzyklus Ml (Bild 54). Bild 54.a zeigt das Signal-Zeitdiagramm des DCX - Befehls mit 6 Taktzuständen Tl bis T6 ohne Wartetakte. Das hier nicht dargestellte READY - Signal muß dabei immer auf logisch 1 , d.h . bereit stehen , da es im Takt T2 jedes Maschinenzyklus abgefragt wird. In Bild 54.b ist derselbe Befehlszyklus mit einem eingeschobenen Wartetakt T
w wiedergegeben,
sodaß der Befehlszyklus
aus der Taktzustandsfolge Tl , T2 , T ' T3 . . T6 besteht. Der W adressierte Busteilnehmer - hier der Programmspeicher - muß während des Taktes T2 das READY-Signal auf
~
ziehen (vgl.
Abschn . 2 . 1. 3 ) . Ohne Wartetakt muß der Speicher das Befehlsbyte spätestens in = 300 ns auf den Datenbus legen, einen nerhalb der Zeit t RD Grundtakt von f = 3 MHz vorausgesetzt . Bei eingefügtem Warte -
*= t + t RD w= RD 633 ns zum Bereitstellen der gültigen Daten
takt hat der Teilnehmer hingegen die Zeit t 300 ns + 333 ns z u r Verfügung.
Im Prinzip fordert jeder adressierte Busteilnehmer mit Hilfe des READY - Signals die benötigte Anzahl von Wartetakten zwi schen den Taktzuständen T2 und T3 an . Bei kleinen Mikrocompu tersysternen erzeugt man durch eine zentrale Wartetakt -Schaltung bei jedem Maschinenzyklus einheitlich eine feste Anzahl von Wartetakten, sofern " langsame " Busteilnehmer dies erfor -
- 108 MI !O! M Sl , S~
A1 5- 8
Tl-I-- T 2
-X
--r-
SI = 1 ,
~,
T4 - . , - T5 S~ =
I XIII"
XPCl ow
_rl
, fT
MI
-TT6-
-
I
un de fin ie r t
11111 IX
I
ei n
HZ 1-------------
-, D 7 - ~ ( DCX )
.c:
-- ---
,•,
t RD ---i
Ii
"-
I
I'
I
I'I
Tl
X-
1
I
PCh igh aus
AL E
T3
10! M =
'A
AD7 - ~
T
(OF)
~
i
a ) DCX -Befe hl szyk l us (Mas ch i n e n zykl us MI ohne War tetakt)
MI
I-10!M Sl , S ~
Tl _I-- T 2
IX
10!M =
~,
I A1 5-8
X
AD 7 -~
XPCl ow
I
)-
D7 - ~
XlIII
~ t RD * 1: "
-I
I ,..--
HZ
111\\111
I
- - - - - - - - - - - -11- -
I
I
,,
~
~
\
1
I
unde f i ni e rt
1
:'
RD
}
(DCX)
lr
= 1
I
ei n
_rl
READY
S~
SI = 1 ,
PCh igh aus
ALE
(OF )
---t- TW--t- T 3---1-- T4 --t-- T5 --t-- T 6 -
I
b) DCX - Befehlszyk lu s (Ma s chi ne n zyk lus MI mit Wartetakt T ) W Erklärun ge n : PClow = PC7 - ~ , PCh ig h = PC1 5- 8 HZ d.h. hoc h ohmi g er Zu stand Bi l d 54
Befehl szyklus des Befeh l s "DC X rp "
,,--
- 109 derlich machen. Eine einfache Scha l tung zur Generierung eines Wartetaktes T
w im
BOB5 zeigt Bild 55 1131 . Zwei durch die an -
steigende Flanke getriggerte D-Flipflops werden mit den BOB5Signalen ALE und CLK angesteuert und liefern das READY - Signal für den entspre chenden BOB5 -E ingang . Das ALE -S igna l bewirkt zu Beg inn ei nes jeden Masc hin enzyklus , daß das READY-Signal in der zweiten Hälfte des Taktes Tl auf " low " gezogen und durch di e n äc hs te ansteigende Flanke des CLK-Signals in der Mitte von T2 wieder auf "h igh " gesetzt wird. Zuvor gesch i e h t die Abfrag e des READY -Si gnals. Al s weiteres Beispiel für den internen Ablauf eines Maschinen befehls sei das Signal - Zeitdiagramm für den BOB5 - Befehl " OUT port " (Bild 56) gegeben . Der Zwei -By te - Befehl besteht aus dem Operation scode und der B-Bit langen Adresse "port" eines EA Kanals (engl. port) am Systembus . Der Befeh l
" OUT port " gibt
den Inhal t d es Akkumulators über den B-Bit Datenbus
AD7-~
an
de n durch " port " adressierten EA-Kanal aus (vgl . Abschn. 1. 2 . 6 ). Sch reibweise : (port)-.--(A). Im ersten Maschinenzyklus Ml vom Typ OF (Bild 56) wird das Operationscodebyte aus dem Programmspeicher geholt , im Maschi nenzyklus M2 vom Typ MR wird das zweite Befehlsbyte, die B-B it EA-Adresse " port " aus dem Programmspeicher ausgelesen und im BOB5 zwischenges p eichert . Die Ausführung des Befeh ls erfolgt im Maschinenzyklus M3 vom Typ IOW, während dem der Inh alt des Akkumulators über den Systembus an den adressierten EA - Kanal ausgegeben wird . Der Befehl " OUT port" benbtigt für Befehlsabruf und Ausführung 10 Taktzustände , wenn keine Wartetakte eingeschoben werden . Eine Besonderheit beim OUT - Befehl (die auch beim Eingabebefehl
+5 V ALE
Q
Q
Cl -Q*
READY
CLK Bild 55
Schaltung zur Erzeugung ei nes Wartetaktes
- 110 Befehlszyklus MI
" OUT port " M2
CLK
A15 - 8 " OUT "
i~~l~ lr HZ ein
AD7 - ~
ein
aus
~E
101M S l ,S~
1 , 1 (OF)
l , ~
(RD)
~ ,l
(WR)
Erklärungen: PC l ow = PC7-~, PChigh = PC15 - 8, port ist Adresse eines EA - Kanals Bi l d 56
Befehlszyklus des Befehls " OUT port "
" IN port " auftritt) ist , daß die EA-Adresse port (während des EA - Zyklus M3) sowohl auf den niederwertigen Adreßleitungen AD7 - ~
als auch auf den höherwertigen Adreßleitungen A15 - 8 an -
steht (s . Bild 56) . 2. 1 . 5
Serielle Ein - /Ausgabeleitungen des 8085
In der Regel läuft die bitserielle Ein - /Ausgabe von Informa tion über spezielle Ein-/Ausgabebausteine am Systembus , die die Datenbytes mit dem Systembus parallel austauschen und zum peripheren Gerät bitseriell übertragen (siehe Abschn. 5 . 1.3). Unabhängig davon besitzt der MP - Baustein 8085 zwei serielle Ein - /Ausgabeleitungen SID
(~erial ~nput
~ata)
und SOD (serial
- 111 ~utput ~ata) ,
die eine einfache bitserielle Datenübertragung
zwischen dem Akkumulator und einer peripheren Einrichtung er möglichen 1131; das zu übertragende Informationsbit steht dabei stets in der Bitstelle A7 des Akkumulators (Bild 57). SID
Bit- Ausgabe
Bit-Eingabe
8 0 8 5
8 0 8 5
7
6
ALsro l
ß
1
II~I
I
I
A
1 d . h. SOD - Freigabe ß d.h. SOD-Sperre Bil d 57
Serielle Ein- /Ausgabe über SID- /SOD - Leitungen
Der 8085-Befehl RIM (read
~nterrupt ~ask)
liest den binären
Zustand des SID- Einganges in die Akkumulatorstelle A7 ein , der daraufhin dem Programm zur Verfügung steht . Der Befe h l (set
~n terrupt
~ask)
" SIM "
sc hreibt den I nhalt der Akkumulatorstelle
A7 - die vorher per Programm zu laden ist - in einen 8085 - in ternen Bitspeicher FF, sofern das Steuerbit SOE ~nab l e)
(~erial
im Akkumu l ator auf 1 gesetzt ist . Bei SOE gleic h
~utput
ß
wird d er interne Bitspeicher nicht verändert , somit das Bit A7 nicht ausgegeben . Der Ausgang des inte rnen Bitspeichers FF steht ständig am SOD - Ausgang an . Über die SID - /SOD - Ein-/Ausgänge kann eine serielle Datenüber tragung (z . B. V. 24 - Schnittstelle) abgewicke lt werden ; sie können jedoch auch als Testeingang (SID) und als Ein-Bi t -S teuer ausgang (SOD) dienen. Wie die Namensgebung schon andeutet , werden die zwei Befehle RIM und SIM auch zur Maskierung der 8085-Interrupteingänge angewendet . Das Steuerbit SOE dient zur Unterdrückung ei ner se riellen Ausgabe , wenn der SIM - Befehl im Rahmen der Interrupt o r ganisat i on zur Ausführung kommt. 2.1 . 6
Stackorganisation
Ein Stack (dt. Kellerspeic her , Stapelspeic her) ist im 8085 - Systern ein per Programm definierbarer Bereich im Lese - /Schreib -
- 112 -
speicher (RAM) , in den beliebige Registerinhalte des Prozes sors kurzzeitig eingespeichert und nac h dem last in first o u t Prinzip (LIFO) wieder ausgelesen werden . Das LIFO- oder Kel l erprinzip besagt, daß in einer bestimmten Reihe n folge einge l agerte Registerinhalte in genau umgekehrter Reihe n folge wi eder aus gelesen werden ; die zuletzt eingesc h riebene I n fo r mationsei nheit (last in) wird als erste (first out) ausge l esen . Ein spe zia l isiertes, l6 - Bit l anges Adresse n register, der Stackpointe r SP (vgl. Bild 45) wird zu Beginn a u f die höchstwert i ge Adres se des Stack (engl.
~ottom ~f
~tack
BOS) gesetzt .
Mit dem Befehl " PUSH rp" kann jeweils eines der Registerpaare PSW, BC , DE , HL in den Stack abgelegt weraen , wobei der Stackpointer SP jewei l s um 2 dekrementiert wird . Der Stack fül l t sich also zu niedrigen Adressen hin und der Stackpointer zeigt jeweils auf die oberste belegte Adresse des Stack , den !oP of ~tack
TOS (Bi l d 58).
Der Befe h l
" POP rp" h ebt jewei l s die zwei obere n Bytes, auf
die der Stackpointer zeigt , vorn Stack ab und transportiert s,ie in das im Befeh l angegebe ne Registerpaar rp . Der Stackpointer SP wird dabei um 2 inkrementiert und zeigt somit auf de n neue n top of stack . Der Stackpointer SP enthält eine Byteadresse , der Stack wird jedoch in Einheiten von l6 - Bit- Worten (Regis terpaare bzw . 16 Bit Register) v erwaltet. Die besc h riebenen Stackbefehle "PUSH rp " und " POP rp " dienen zum einfachen Zwische nspeichern von Registerinhalten während RAM
PUSH
B~ ( SP) - 2 TOS =
POP
r- I I
~I
PS\~~ (SP) + 2 IL _
__ - - BOS Bild 58
Zur Stackorganisation
- 113 -
des Programmverlaufs. Bei Unterprogrammaufrufen mit den Befeh len "CALL adr " und " RST n" wird der Stack zur Kellerung der Rücksprungadressen genutzt , indem der Befehlszählerstand (PC) beim Unterprogrammaufruf automatisch in den Stack gelegt wird . Näheres zur Unterprogrammorganisation siehe Abschn . 2.3.5. Bei Unterbrechungen . des Programmablaufs wird der aktue l le Inhalt des Befehlszähler- Registers (PC) ebenfalls automa tisch in den Stack gerettet (s. Abschn . 2 . 4). Normalerweise r ettet ansc h lie ßend das Unterbrechungsprogramm weitere Registerinhalte des unterbrochenen Programms mit PUSH-Befehlen in den Stack.
2. 2
Befehlsliste des Mikroprozessors 8085
In den zwei Tafeln 9 und 10 dieses Abschnitts ist jeweils der gesamte Vorrat der 8085-Maschinenbefehle - nach Befehlsgruppen geordnet - zusammengestellt . Dabei sind nur dieje ni gen Befehle berücksichtigt , die von den Herstellern offiziel l dokumentiert sind 17 1 1121 2. 2. 1
1131 .
Übersichtsliste der 80B5-Befehle
Tafel 9 enthält die BOB5-Maschinenbefehle in der symbolische n Assemblerschreibweise nach Abschn . 1 . 1 . 4 . In der ersten Spa l te sind die mnemonischen Symbole für die Operationscodes angege ben , die sich aus der englischen Befehlsbeschreibungherleiten . Das Operandenfeld enthält symbolische Abkürzungen für die ver schiedenen Operanden und Adressen , die im Anschl u ß an Tafe l 9 zusammengestellt sind . In der mit * gekennzeichneten Spa l te ist die Befeh l slänge in Bytes vermerkt . Da die Übersichtstafel dem Lernenden für das Programmieren in Assemblersprache zu wenig Information über die einzelnen Be fehlswirkungen bietet , sind in der rechten Spalte von Tafel 9 Seiten-Verweise auf die ausführlicheren Befehlsbeschreibungen in Abschnitt 2 . 3 zu finden . 2. 2. 2
BOB5 - 0perationscodes in hexadezimaler Verschlüsselung
In Tafel 10 sind sämtliche , auf Maschinenebene untersch e idba-
- 114 ren Binärkombinationen des erste n Befehlsbytes hexadezimal verschlüsselt. Da die Regi steradresse n r
(einschließlich M) und
rp sowie die Nummer n Teil des ersten Befehlbytes sind , müssen sämtliche möglichen Registeradressen laut Bild 4S in das Op Codebyte eingesetzt werden. Der Aufbau der Op-Codebytes für jeden Befehl ist in Abschnitt 2.3 angegeben. Für die Operanden wurden Abkürzungen gewählt, die im Anschluß an Tafel 10 ste hen. Bei der manuellen Übersetzung ei nes Assemblerprogramms in den SOSS - Maschinencode leis tet die Tafel 10 gute Dienste.
2.3
Beschreibung der SOSS-Befehle
In den folgenden Abschnitten sind die SOSS-Befehle - nach Befehlsgruppen geordnet - detailliert beschrieben. Die systematische Darstellung in den Tafe ln 11 bis 16 wird durch Erläute rungen und Programmierbeispiele ergänzt. Am Anfang jeder Tafel ist das Schema der Befehlsbeschreibung
angegeben . Links oben steht der Befehl in symbolischer Assemblerschreibweise , darunter sind die Befehlsbytes angeordnet . Die Verschlüsselung des Operationscodebytes (1. Befehlsbyte) ist binär angegeben , die Register - und Registerpaaradressen werde n allgemein mit den Abkürzungen ddd, sss und rp bezeichnet. Erst
das
Einsetzen der binären Register- und Register -
paarnummern nach Bild 4S ergibt den vollständigen Code der ersten Befehl sbytes , die in Tafel 10 zusammengestellt sind . Die formale Beschreibung der Befe hlswirkun gen wird durch verbale Beschreibunge n und bei Bedarf durch grafische Darstellunge n er gänzt . Daneben sind die Wirkungen der Befehle auf die Status flags CY, Z, S , AC und P e ntsprechend der nachfolgenden Zusamme nstellung festgehalten. Zur Bedeutung der Status-flags s iehe ·Absc hnitt 2 . 1 . 1 . Die angegebene Anzahl der Maschinenzyklen und Takte benötigt der Befehl für Befehlsabruf und Ausführung, wenn keine Wartetakte (vgl . Abschn . 2.1.4) eingef ügt werden . Quellen für die Befehlsbeschreibungen sind 171 und 1131 .
- 115 -
Tafe19
8085-BefehlsUbersicht (S . 115 - 117)
Mnemonik
*
Befehlsbeschreibung , englisch
Bezug
J
Seite
T r a n s f e r b e f e h 1 e a) Register - Register MOV r l, r2 XCHG XTHL SPHL
1 1 1 1
move reg ( r2 ) to reg (rl)
120
exc hange reg pairs (DE) and (HL) exchange top of stack and (HL) (HL) to stackpointer (SP)
b) Register _ S peicher, Peripherie MOV r , M LDA adr LDAX rp LHLD adr POP rp IN port
1 3
1 3
1 2
move memory to reg ( r)
1 20 load accumulator direct load accumulator indirect , rp = BC, DE load HL direct 121 pop reg pair off stack , rp = BC ,D E ,HL, PSW input from 10 port
c) Registerpaar _ _ Adreßkonstante rp , adr 131 load index immediate to reg pair rp Register d) Speicher , Peripherie _
LXI
MOV M, r STA adr STAX rp SHLD adr PUSH rp OUT port
1 3
1 3
1 2
move reg (r) to memory store accumulator direct store accumulator indirect store (HL) direct push reg pair on stack, rp output to 10 port
1121 121 122
= BC , DE,HL , PSW
e) Register , Speicher _ _ Konstante MVI MVI
M'konst l 2 1 move immediate to memory r , konst 2 move immediate to reg (r) '
122 1
A r i t h m e t i k b e f e h 1 e INR INR DCR DCR INX DCX ADD ADD ADC ADC DAD
r M r M rp rp r M r M rp
1 1 1 1 1 1 1 1 1 1 1
increment register (r) incrernent memory «HL) ) decrement register (r) decrement memory «HL) ) increment reg pair (rp) decrement reg pair (rp) add register (r) to accumulator add memory «HL) ) to accumulator add reg (r) to accumu l ator with carry add memory «HL) ) to accu with carry add reg pair ( rp) to (HL)
SUB SUB SBB SBB ADI ACI
r M r M konst konst
1 1 1 1 2 2
subtract reg (r) from accumulator subtract memory «HL) ) from accurnu lator subtract reg (r) from accu with borrow 128 subtract memory from accu with borrow add immediate to accumulator add immediate to _ accumulator with carry _ _ _ _ _ _ _ L-
"----- -
--
-
-- - -
126
127
- 116 -
Taf el 9
8085 - Befe hl sübersicht (Fortsetzung von Seite 11 5)
Mnemoni k
Befeh l sbeschreibung, engl i sc h
SUI SBI DAA
subtract immediate from ac cumula tor subtract immediate from accu with borrow decimal adjust accumulator
konst konst
L og i k b e f e h 1 e a) Logische Operationen CMA ANA ANA ANI
r M konst
1 1 1 2
comp l ement accumulator and reg (r) with accumulaor and memory ((HL) ) with accumula or and immediate wit h acc umulaor
ORA ORA ORI XRA XRA XRI
r M konst r M konst
1 1 2 1 1 2
or reg (r) with accumulator or memory ((HL) ) with accumulator or immediate with accumul ator exclusive or reg (r) with acc umulator exclusive or memory ((HL) ) with accu exclusive or immediate with accu
CMP CMP CPI
r M konst
1 1 2
compare register with accumu l ator compare me mory ((HL) ) with accumulator compare immediate with accumul ator
132
133
134
b) Akkumulator rotieren RLC RRC RAL RAR
1 1 1 1
rotate rotate rotate rotate
accumulator accumulator accumul ator accumu l ator
left right left through carry right through carry
134
c ) Befehle für Übertragsbit (carry flag)
111 complement
CMC STC
1
134
carry
set carry
1
S P r u n g b e fe h 1 e a) Unbedingte Sprünge PCHL JMP adr
111 (HL) 3 Jump
to program cou nter (PC) unconditional to address adr
138 1
b) Bedingte Sprünge JC JNC JZ JNZ JM JP J PE JPO
adr adr adr adr adr adr adr adr
3 3 3 3 3 3 3 3
jump jump jump j ump jump jump jump jump
on on on on on on on on
carry no carry zero no zero minus positiv parity e ven parity odd
138 139
- 117 Tafel 9
8085 - Befehlsübersicht (Fortsetzung von Seite 116)
Mnemonik
*
Befehlsbeschreibung, englisch
Bezug
Unterprogramm-Aufruf-/Rückkehrb efeh le a) Unterp rogramm- Aufruf CALL adr CC adr CNC adr CZ adr CNZ adr CM adr CP adr CPE adr CPO adr
3 3 3 3 3 3 3 3 3
call ca11 call call call call call call call
RST
1
res't art
n
unconditional on carry on no carry on zero on no zero on minus on positiv on parity even on parity odd
144
145
b) Rückkehr aus Unterprogramm RET RC RNC RZ RNZ RM RP RPE RPO Sonder HLT NOP EI 01 RIM SIM Anmerkung:
1 1 1 1 1 1 1 1 1 und 1 1 1 1 1 1
return return return return return return
return return return
from subroutine on carry on no carry on zero on no zero on minus on positiv on parity even on parllty odd
145 146
Steuerungsbefehle halt no operation enable interrupts disable interrupts read interrupt mask set interrupt ma sk
150
151
für " Anzahl Bytes pro Befehl"
Abkürzungen zu Tafel 9 und 10: Registeradresse e ines 8- Bit-Registers A, B,C,O,E ,H, L rl , r2 Ziel- und Quellregisteradresse in einem Befehl rp Registerpaaradresse BC,OE,HL,PSW oder SP 16 - Bit Speicheradresse adr port 8- Bit Ein - /Ausgabeadresse 08 8- Bitkonstante konst n Nummer Z ••. 7 C, Z, S(P/M), P(E/O) Bedingungs-Kennzeichen im Flag - Register (Bild 46), in bedingten Sprüngen abge fragt . ( .. ) Inh alt von Speicheroperand, durch Inhalt von HL adressiert. M r
- 118 Tafel 10
8085 - 0perationscode hexadezimal verschlüsselt
ITransfer l A,A A, B A, C MOV A,O A, E A, H A L A,M
7F 78 79 7A 7B 7C 70 7E
B, A B,B B, C MOV B, O B, E B,H B,L B,M
47 40 41 42 43 44 45 46
C, A C,B C,C MOV C , O C, E C,H C, L C, M
4F 48 49 4A 4B 4C 40 4E
O,A O, B O, C MOV 0 , 0 O, E O, H O,L O, M
57 50 51 52 53 54 55 56
E, A E, B E,C MOV E , O E, E E, H E,L E,M
5F 58 59 5A 5B 5C 50 5E
H, A H, B H,C MOV H, O H, E H, H H, L H, M
67 60 61 62 63 64 65 66
L, A L, B L, C MOV L , O L, E L,H L, L L, M
6F 68 69 6A 6B 6C 60 6E
IArithmetik l A B C AOO 0 E H L M
87 80 81 82 83 84 85 86
A B C AOC 0 E H L f B' adr 01 LXI O,adr 11 M H, adr 21 A ~ , adr 31 B
8F 88 89 8A 8B 8C 80 8E
r
M, B M,C MOV M,O M, E M, H M,L
77 70 71 72 73 74 75
XCHG XTHL SPHL
EB E3 F9
LOAX B LOAX 0 LHLO adr LOA adr
DA lA 2A 3A
STAX B STAX 0 SHLO adr STA adr
02 12 22 32
A,08 B, 08 C, 08 MVI 0,08 E,08 H, 08 L,08 M,08
3E 06 OE 16 lE 26 2E 36
C SUB 0 E H L M
97 90 91 92 93 94 95 96
A B C SBB 0 E H L M
9F 98 99 9A 9B 9C 90 9E
A B C INR 0 E H L M
3C 04 OC 14 lC 24 2C 34
,",,[: ,,,[: [L ",[: C5 05 E5 PSW F5
Cl POP 01 Ei Fl OUT port 03 IN port OB
03 13 23 . SP 33 OB lB 2B SP 3B
A B C OCR 0 E H L M
3D 05 00 15 10 25 20 35
"0[:
09 19 29 SP 39
AOI ACI SUI SBI
08 08 08 08
OAA
C6 CE 06 OE 27
ILogik l A B C ANA 0 E H L M
A7 AO Al A2 A3 A4 A5 A6
A B C XRA 0 E H L M
AB AC AO AE
A B C ORA 0 E H L M
B7 BO Bl B2 B3 B4 B5 B6
ANI XRI ORI CPI
E6 EE F6 FE
CMA
08 08 08 08
AF A8 A9 AA
2F
A B C CMP 0 E H L M
BF B8 B9 BA BB BC BO BE
STC CMC
37 3F
RLC RRC RAL RAR
07 OF 17 lF
ISprunge l JMP adr JNZ /JZ JNC/JC JPO/JPE JP/JM PCHL
C3 C2/CA 02/0A E2/EA F2 / FA E9
I unt erpr ogramm i CALL adr CD CNZ/CZ C4/CC CNC/CC 04 / 0C CPO/CPE E4/EC CP/CM F4/FC RET RNZ/RZ RNC/RC RPO/RPE RP/RM
C9 CO/C8 00 / 08 EO / E8 FO/F8
0 1 2 RST 3 4 5 6 7
C7 CF 07 OF E7 EF F7 FF
Sonder/S teuerbefeh1e HLT NOP EI/OI RIM/SIM
76 00 FB/F3 20/30
- 119 Folgende Abkürzungen sind in den Tafeln 11 bis 16 verwendet : r , rl , r2
ddd sss rp rlow rhigh reg adr adr low adr high opd HSP --- ~
(flags)
Wirkung der Befehle auf Status - flags : d . h . Befehl verändert das Status - flag nicht d.h . Veränderung des Stqtus-flag abhängig vom Ergebnis der Operation d . h . Befehl setzt Status-flag auf ß } unabhängig d . h . Befehl setzt Status - flag auf 1 vom Ergebnis
x ß 1
2.3.1
Name eines Registers bzw . Registernummer } binäre Nummer des destination register vgl . binäre Nummer des source register Bild 45 Name bzw. Nummer eTnes Registerpaars niederwertiges Byte eines Registerpaares höherwertiges Byte eines Registerpaares Registerblock des 8085 einschl. Akkumulator 16 - Bit Speicheradresse niederwertige s Byte einer Speicheradresse A7 - ß höherwertiges Byte einer Speicher adresse A15-8 Operand (8 Bit oder 16 Bit) Hauptspeicher Transport/Zuweisung von nach •.. zeigt auf .. .
Transferbefehle
Die Transferbefehle (Tafel 11) dienen zum Datenaustausch zwi schen programmierbaren Registern , Hauptspeicher und Ein - /Aus gabekanälen. Die Transporteinheit im 8085 - Mikroprozessorsystem ist das Byte , mit einigen Befehlen werden 16 - Bit Größen (Index größen) durch zwei aufeinanderfo l gende Bytetransfers übertra gen . Mit den Ein-/Ausgabebefehle n " IN port " und "OUT port " wird jeweils ein Byte zwischen einer peripheren Einheit (vgl . Abschn . 1 . 2 . 6) und dem Akkumulator übertragen. Die insgesamt möglichen Transporte lassen sic h in einem Diagramm (Bild 59) darste l len . Daraus ist u . a . zu ersehen , daß beim MP 8085 ein Transfer von einem Speicherplatz in einen anderen nur über die Register möglich ist . Für die Adressierung der Operanden gilt das in Abschnitt 1.2 . 5 . 3 Gesagte .
Iz i
e
11
IQu e 1
HAUPTSPEICHER REGISTER ( - PAAR) AUSGABEKANAL Bild 59
d
1
el
C HAUPTSPEICHER
~ ~
REGISTER (-PAAR) EINGABEKANAL
Zur Wirkung der Transferbefehle
rl,r2
Zyklen/Takte: 1 /4
rp
100rpl010 1
LDAX
r
HSP
~~
HSP
W
a~r / c:l :-. L____ ~
1
I. ____ _
L 1
Lade das Speiche rbyte , dessen Adresse im Registerpaar rp steht , in den Akkumulator A. Beachte : Es dürfen nur rp = BC und rp = DE angegeben werden !
(A)_((rp));
Lade das Speicherbyte , dessen Adresse im Befehl steht , in den Akkumulator A.
(adr);
(A) _
adr
LDA
I
H
Zyklen/Takte: 2/7
Flags: - - - - -
Zyklen/Takte : 4/13
Flags : - - - - -
Zyklen/Takte : 2/7
Flags: - - - - -
Lade das Speicherbyte, des sen Adresse im Registerpaar HL steht , in das Register r.
101ddd110 1
((HL))
(r) _
MOV
r, M
Zyklen/Takte : 1/6
Flags: - - - - -
[11111001 1
(HL)
(SP) -
Lade Stackpointer mit dem Inhalt des Registerpaares HL .
SPHL
Zyklen/Takte : 5/ 16
Flags: - - - - -
(H)-((SP)+l) ;
Vertausche den Inhalt des Registerpaares HL mit dem In ha l t der zwei obersten Bytes im Stack; SP unverändert .
((SP));
(L) _
XTHL
liiiWDIiJ
Zyklen/Takte: 1/4
Vertausche die Inh a lte der Registerpaare DE und HL.
/U101011 1
Flags: - - - - -
(H)_(D);
(L) ___ (E) ;
Flags: - - - - -
(r l ) _ ( r 2 ) ;
Zyklen/Takte: n/m
Der Inhalt des Registers r2 wird nach rl transportiert.
Flags : CY Z S AC P
f orma l verbal
XC HG
101dddsss i
MOV
Befehlswirkung
8085 - Transferbefehle (Seite 120 - 122)
Befehlsbytes
Mnemonik
Tafel 11
'" o
...
rp
adr
(adr);
(H) ___ (adr+l)
(SP)+2
Flags: - - - - -
L
((HL))_(r)
Zyklen/Takte : 4/ 13
Zyklen/Takte : 2/ 7
Flags: - - - - -
I
Flags: - - - - -
(adr)_(A)
r opd
Speichere den I nhalt des Akkumulators A auf den Speicherplatz ab, auf den die Adresse adr im Befehl zeigt,
adr
opd
HSP
§J_I
~
STA
H
adr{
Bsp. :
Zyklen / Takt e : 3/ 10
Flags: - - - - -
(rlow) __ adr low;
Lade Registerpaar rp mit der Adreßkonstan ten adr im Befehl. rp = BC , OE, HL, SP
(rhigh) ___ adr high;
Zykl e n / Takt e : 3/10
Lade den Akkumulator A mit dem Inhalt des Eingabe kanals, dessen Adresse port (= 0 . .. 255) ist (Bild 28).
(port) ;
Flags : - - - - -
(SP) _
(A) _
((SP)+l);
Zyklen / Takte: 3/ 10
(rhigh) _
Das angegebene Registerpaar rp = rhigh , rlow wird mit dem 16 - Bit Wort geladen, auf das der Stackpointer SP zeigt'. rp = BC, OE , HL , PSW . Der Stackpointer wird um 2 erhöht . Anm .: POP PSW v erändert die Flags! (Bild 58)
(rlow) ___ ((SP));
Zyklen/Takte : 5/16
Flags: - - - - -
Speichere den Inhalt des I ! I Registers r auf den Spei ,----- cherplatz ab, auf den die Adresse im Registerpaar HL zeigt .
M,r
MOV
(L) _
Lade das Registerpaar HL mit dem Speicherinhalt der Adressen adr+l und adr.
I01110sss I
rp,adr
port
LXI
IN
IilrpOOOll
POP
LHLD
f-' N f-'
rp
(SP)_(SP)-2
Lade den Wert konst im z wei t e n Befehlsbyte in das Register r ; konst = 0 ... 255 .
( r ) - konst
100ddd110 1 1 konst 1
r , konst
MVI
I
HSP
fieJ-konst
I
:
MVI r -~
ons - k o n s t
I _ _ _ _ _ _ _ _ _ _ _ _ _ __ .I L
r-r
reg
L__ _ _
' -§§ ""
I
L
H
I
I
((HL)) _konst
Speichere den Wert konst im zweiten Befehlsbyte auf den Speicherplatz ab, auf den der Inhalt des Registerpaares HL zeigt; konst = 0 .. . 255.
10011'0110 1 ko n st
M,konst
MVI
(port)_(A)
Übertrage den Inhalt d e s Akkumulators A an den Ausgabe kanal, dessen Adresse port ( = 0 ... 255) ist (Bild 28).
port
((SP)-2)_(rlow) ;
Der Inhalt des angeg e benen Registerpaares wird in die zwei Bytes mit den Speiche radr e ssen (SP) - l und (SP)-2 abgespeichert ; danach wird d e r Stackpointer SP um 2 heruntergezählt. rp = BC , OE, HL, PSW. ("Bild 58)
111010011 1 1 p o rt I
OUT
l 11rp010l l
rp
((SP) - l)_(rhigh);
(adr+l)_(H)
PUSH
(adr)-(L) ;
Speichere den Inhalt des Registerpaares HL auf die Speicherplätze mit den Adressen adr+l und adr ab.
adr
- - - - -
- - - - -
- - - - -
-
-
-
-
-
- - - - Zyklen/Takte: 2/ 7
Flags:
Zyklen/Takte : 3/10
Flags:
Zyklen/Takte : 3 / 10
Flags :
Zyklen/Takte : 3 / 12
Flags:
Zyklen/Takte : 5/16
Flags :
Zyklen/Takte : 2/7
Speichere den Inhalt des Akkumulators A auf den Spei cherplatz ab, auf den rp zeigt. Beachte : rp = BC, OE.
- - - - -
Flags:
((rp) ) _ _ (A)
8085 - Transferbefehle (Fortsetzung von Seite 121)
100100010 1 adr low l adr hlgh l
SHLD
100rEOO I OI
STAX
Tafel 11
N N
....
- 123 In den folgenden Programmierbeispielen sind die 8085-Maschi nenbefehle in der
As~embler - Schreibweise
angegeben .
Beispiel 15 : Bytetransfer. Ein 8-Bit Wert ist vom Eingabekanal Nr.
5~
in den Akkumulator einzulesen und auf den Speicherplatz
mit der Adresse
l~A~H
A s s e m b 1 e r n BSP 1 5: I N
STA
0
abzuspeichern . t a t i
0
Objektcode hex.
n
5~H
; Einlesen des 8 - Bit-Werts ;vom EA- Kanal 5~H in den ;Akkumulator
OB
5~
l~MH
; Abspeichern des Akkumu ; latorinhalts auf den ;Speicherplatz l~MH
32
A~
l~
Das Objektprogramm belegt ab Speicheradresse l~~~H
f ünf Bytes im Hauptspeicher :
l~~~H : l~~lH: 1~~2H: 1~~3H : 1 ~~4H:
OB 5~
32 M l~
Im Quellprogramm (Assemblerprogramm) wurden zur Erläuterung der Befehlswirkungen nach Bedarf Kommentarzeilen eingefügt . Die hexadezimale Darstellung des ersten Befehlsbytes (vgl . Ta fel 10) gewinnt man durch Einsetzen der Register - bzw . Registerpaarnummern in die vorgesehenen Bitstellen und Auf teilung des Bytes in zwei Hexadezimalziffern. Beispiel 16: Löschen eines Speicherplatzes. Hierzu werden zwei Lösungsmöglichkeiten angegeben , deren Einsatz von der übrigen "Programmumgebung" abhängt . Lösung a : Löschen über den Akkumulator. Ass e m b 1 e r n BSP16A : MVI STA
A, ~ 1~A7H
0
tat ion ;Lädt den Akku mit dem ;Binärmuster ~~~~~~~~ ;Speichert den Akku-In ;halt auf den Speicher;platz 1~A7H ab
Objektcode hex .
32 A7
l~
Lösung b : Direktes Löschen im Speicher , wenn die Speicheradresse im Registerpaar HL zur Verfügung steht.
- 124 Ass e m b 1 e r n BSP16B:
2.3.2
0
LXI
H,1ß'A7H
MVI
M,ß'ß'H
Objekteode hex.
tat ion Stellt die Adresse des Speicherplatzes bereit ;Schreibt das Binärmu;ster ß'ß'ß'ß'ß'ß'ß'ß' in den ;durch HL adressierten ;Speicherplatz
21 A7 lß'
36 ß'ß'
Arithmetikbefehle
Die Arithmetikbefehle (Tafel 12) sind im wesentlichen Addi tions- und Subtraktionsbefehle für Festpunktzahlen ohne Vor zeichen und in Zweierkomplementdarstellung. Allerdings meldet der im CY- Flag gespeicherte Übertraq aus der ALU bei vorzeichenlosan Dualzahlen einen Überlauf des Zahlenbereichs (vgl. Abschn. 1.3.1.1), während bei vorzeichenbe hafteten Zweierkomplementzahlen der Überlauffall dur ch eine Befehlsfolge zu ermitteln ist (vgl. Abschn. 1.3.1.3). Multiplikations- und Divisionsbefehle sind im 8085 - wie bei vi e len 8 - Bit Mikroprozessoren - hardwaremäßig nicht implementiert. Arithmetikbefehle verändern in der Regel die Status-flags. Bei der Subtraktion nimmt das CY-flag den Borger auf (vgl. Abschn. 1.3.1.2), sodaß ein nachfolgender bedingter Sprung "JC
11
den
Borger abfragt (s. Tafel 14). Die Index-Zählbefehle "INX rp" und "DCX rp" lassen die flags unverändert. Beispiel 24 zeigt u.a. die Abfrage eines Registerpaarinhalts auf Null. Zur Verarbeitung mehrfachlanger Dualzahlen sind die Befehle ADC ~arry)
und SBB
(~ue.tract w ithe.orrow)
(~dd ~ith
vorgeseh e n (s. Bsp. 19u.23).
Beispiel 17: Anwendung der Addier- und Zählbefehle. Im Hauptspeicher stehen in aufeinanderfolgenden Speicherplätzen ab Adresse OPDADR zwei 8-Bit lange Festpunkt z ahlen. Ihre Summe ist im Akkumulator zu hinterlegen. Die Operanden sind im An schluß an die Befehle zu definieren und mit ß' vorzubelegen . Es wird davon ausgegangen, daß im übrigen (hier nicht realisierten) Programmteil aktuelle Zahlenwerte in die definierten Speicherplätze geschrieben werde n. Das Objektprogramm soll ab Adresse ß'9ß'ß'H im Speicher abgelegt werden. Die Operanden
La os 2.0 =- tt ·
-»
OO<>OC,.-I"10
~
71
'F
00-10 -, .... 0"1 / '
~
-
125 -
()6
liegen auf den Adressen ß9ß6H und ß9ß7H. Ass e m b 1 e r n 0 t a t i o n BSP 1 7: LX I
H, OPDADR ; Adresse des l.Operan iden nach HL direkt ; laden
HSP Adr .
Objekt code hex.
9ßß
2 1 ß6 ß9
MOV
A, M
; (A) __ (OPDADR)
JE
INX
H
; Adresse in HL erhöhen
23
ADD
M
; Summe (opdl) + (opd2) ; in Akkumulator
8·6
2l?
05
; Assembler - Anweisung zur Definition der OPDADR: DB
izwei Datenbytes
'i ß , ß5
9il'6 9il'7
$f!' YO
.J,fß'" oS
Die eigent l iche Addition l eistet in Bsp . 17 der Befe h l
" AD D M".
Ein Überlauf des Zahlenbereichs wird bei vorzeichenlosen Dua lzah l en mit (CY) = 1 angezeigt (vgl . Abschn. 1 . 3 . 1). Der Assemb l er ersetzt den Namen OPDADR im LXI-Befehl durch die abso l ute Adresse il'9il'6 H. Beispiel 18 : Subtraktionsbefehl . Von einer 8 - Bit Zahl i m Speicher an der symbolischen Adresse BSP18 ist die Konstante 98 (dezimal) abzuziehen. Der Zustand des Borgers nach der Subtrak tion ist in den Stack zu retten. Programmanfang : 9il'ßH , Stack : l il'il'ßH . Ass e m b 1 e r n
0
tat ion
ORG
9il'il'H
; Adreßpegel-Anweisung
BSP 1 8 :
DB
167
; Define Byte - Anweisung
START:
LXI
SP , lil'il'il'H;Stackpointer auf An; fangswert setzen
LDA
BSP18
SUI
98D
PUSH PSW
HSPAdr.
Objektcode hex .
A7 31 il'il' lil'
;Minuend in Akku laden ; (A) __ (A) - 98D
D6 62
3A il'ß ß9
;PSW in Stack ablegen
F5
Die ORG - Anweisung (vgl . Abschn. 1 . 4 . 2) legt die erste d u rch das Programm belegte Adresse fest , an der in Beispiel 18 der Mi n uend (A7H= 167D) steht . Im folgenden Byte beginnt der erste Befehl .
=r1L
::;:FF
-1000
f! L: 45
Flags: CY Z S AC P Zyk l en/Takte: n/m
formal verbal
Zyklen/Takte : 1/ 4 Flags : - x x x x
Vom Inhalt des Registers r wird 1 subtrahiert. Beachte: Das CY - Flag wird dabei nicht verändert .
100dddlOl i
(rp) _ ( rp)
Vom Inha l t des Registerpaares rp wird 1 subtrahiert. rp = BC , OE , HL oder SP .
DCX rp
100rplO11 1
- 1
Zyklen/Takte : 1/6
- - - - Zyklen/Takte: 1/6
Flags:
- - - - -
Zyklen/Takte: 3/10
Fl ags :
G
(rp)_(rp) + 1
RAM
I:----I --@ opd
L
Zum Inhalt des Registerpaares rp wird 1 addiert; rp = BC , OE , HL oder SP.
H
100rpOO11 1
I
INX rp
( (HL) ) - 1
( (HL) ) _
Vom Inha l t des durch Registerpaar HL adressierten Bytes wird 1 subtrahi e rt. Beachte : CY - Flag wird nicht verändert .
100110101 1
Flags: - x x x x
OCR M
(r) - 1
Zyk l en/Takte : 3/10
(r) _
I ____I~ L ~ opd (;0
OCR r
L
H
I
RAM
Flags : - x x x x
( (HL)) + 1
«HL)) _
Zum I nhalt des durch das Registerpaar HL adressierten Bytes wird 1 addiert. Beachte: CY-Flag wird nicht verändert.
100110100 1
Zyk l en/Takte : 1/4
100dddlOO l
INR M
Flags: - x x x x
(r)_(r) + 1
Zum Inha l t des Registers r wird 1 addiert. Beachte : Das CY-Flag wird dabei nicht verändert .
INR r
Befeh l swirkung
Mnemonik
Befeh lsbytes
8085 - Arithmetikbefehle (Seiten 126 - 128)
Tabelle 12
'"
f-' N
(A)_(A) + ((HL) )
Der Inhalt des Speicherplatzes, auf den das HL- Registerpaar zeigt, wird zum Akkumulator hinzuaddiert .
110000555 1
ADD M
11 0000110
L
HSP
Zyklen/Takte: 2/7
Flags : x - - -
(HL) -
Der Inhalt des Registerpaares rp und der Inhalt des Registerpaares HL werden addiert. Die Summe wird nach HL gebracht. rp = BC, OE, HL oder SP .
110001110
DAD rp
l oorplool l
Zyklen/Takte: 2/7
Flags: x x x x x
Der Inhalt des Speicherplatzes , auf den das HL - Registerpaar zeigt , wird vom Akkumulator subtrahiert.
((HL) )
(A)-(A) -
I
SUB M
11 0010110
Zyklen/Takte: 1/4
Flags: x x x x x
11 0010555 1
(r)
(A)-(A)
Der Inhalt des Registers r wird vom Inhal t des Akkumulators subtrahiert.
SUB r
-
Zyklen/Takte: 3/10
-
Flags: x x x x x
(A)-(A) + ((HL) ) + (CY)
Der Inhalt des Speicherplatzes, auf den das HL-Register zeigt und der Inhalt des CY-Bits werden zum Inhalt des Akkumulators hinzuaddiert.
ADC M
(HL) + (rp)
Zyklen/Takte: 1/4
1
Flags: x x x x x
(A)-(A) + (r) + (CY)
Zyklen/Takte: 2/7
Der Inhalt des Registers r und der Inhalt des CY -B its werden zum Inhalt des Akkumulators hinzuaddiert .
opd
Flags : x x x x x
Zyklen/Takte : 1/4
Flags : x x x x x
110001555 1
~--.-S5- -
III ~
H
~r
reg
ADC r
1
(A)-(A) + (r)
Der Inhalt des Registers r wird zum I nhalt des Akkumulators addiert.
ADD r
>-'
-.J
'"
- (r)
(CY)
Der DAA- Befe h l wandelt den I nha l t des Akk umu l ators - nach der Addition zweier BCD- Zahl en - in zwe i binärcodier t e (BCD - ) Ziffern um , wobe i e r das AC - Bit u nd das CY-Bit ab f ragt (5 . Abschn . 2 . 3 . 7) .
100100 1111
DAA
J
Zykl en/Takte : 1/4 '
Fl a g s: x x x x x
Zyk l en/Takte : 2/7
Fl ags : x x x x x
(CY)
111 011 11 0 [ I konst I
(A) - konst -
(A) -
Subtrahiere den Wert konst im zweiten Befe hl sbyte und den I nha l t des CY - Bits vom Inha l t des Akkumulators .
SB I konst
Fl a gs : x x x x x Zyklen/Takte : 2/7
(A) - konst
(A) -
Subtrahiere den Wert konst im zweiten Befehlsbyte vom Inha l t des Akkumulators.
[11010110 1 I konst I
Zykl en/Takte : 2/7
Flag s: x x x x x
Zyk l en/Takte: 2/ 7
F l ags: x x x x x
Zyk l en/Takte : 2/7
Fl ags : x x x x x
Zyk l en/Takte : 1/4
Fl a gs: x x x x x
SUI konst
(A) + konst + (CY)
(A) -
Addiere den Wert konst im zweiten Befehlsbyte und den Inhalt des CY - Bits zum Akkumulatorinhalt .
[11 0011 1 0 [ I konst I
A ~ ~-p konst
ACI konst
11100011 0 1
(A) + konst
(A) -
Addiere den Wert konst im zweiten Befehlsbyte zum In h alt des Akkumulators .
ADI konst
110011110 1
- ((HL) ) - (CY)
(A) _
Der Inhalt des Speicherplatzes, auf den das Register paar HL zeigt und der I nhalt des CY - Bits werden vom Akkumulator subtrahiert .
SBB M
(A)
(A) -
Der I nha l t des Registers r und der I nha l t des CY - Bits werden vom Akkumulatorinhalt subtrah iert.
11 00 11 555 1
(A)
8085 - Arithmetikbefehle (Fortsetzung v on Seite 1 27)
SBB r
Tafel 12
co
IV
.....
- 129 Zum Retten des CY Flags , das nach dem
Stack
Subtraktionsbefehl
(SP) + 2 -
si Z I -I AC I - 1 pI-I CY
(SP)
0 1 1 1 01 0 10 11 1 0 1 1 _ _ _ _ _ _ _ _--'
den Borger enthält, wird das gesamte Pro -
-
flags ( A)
~
gramm - Status - Wort in Bild 60
den Stack abgelegt (Bild 60).
Wirkung des Befehls " PUSH PSW " (in Beispiel 18)
Beispiel 19: Addition mehrfachlanger Festpunktzahlen. Die 3Byte-langen Zahlen sind im Speicher unter den symbolischen Adressen ADRA und ADRB abgelegt. Die 3-Byte-lange Summe soll , beginnend mit dem niederwertigen Byte , an der Adresse ADRA ab gelegt werden (s . Speicherplan vor und nach der Addition) . vorher: ADRA
----
nachher:
RAM 8
5
ADRA + 1 --
B
F
ADRA + 2 --
9
E
ADRB
9
A
ADRB + 1 - -
6
3
ADRB + 2 --
6
0
.-
A s s e m b 1 e r n BSP19: LXI LXI
H, ADRA B, ADRB
(low)
ADRA
---
RAM (low)
1
F
ADRA + 1 - - _
2
3
(high)
ADRA + 2 - - -
~
C
( h igh)
(low)
ADRB
9
A
(low)
ADRB + 1- - _
6
3
ADRB + 2 -- --
6
0
(high)
(high)
t a t i o n
0
;Operandenadressen in die Re ;gisterpaare HL und BC laden
LDAX B ADD M MOV M, A
; (A)_9AH ; (A)_(A) + 85H (A) , (A) ; (ADRA) _
INX INX LDAX ADC MOV
H B B M M, A
; ; ; ; ;
INX INX LDAX ADC MOV
H B B M M,A
; ; ; ; ;
lFH
(HL) = ADRA + 1 (BC) = ADRB + 1 (A)-63H (A) _ (A) + ~BFH + (CY) (ADRA+l) _ (A) , (A) = 23H (HL) = ADRA + 2 (BC) = ADRB + 2 (A)_6DH (A)_ (A) + 9EH + (CY) (ADRA+2)_ (A), (A) = ~CH
}
nieder wertige Bytes
}
mittlere Bytes
}
höchst wertige Bytes
- 130 Der Programmablauf in Beispiel 19 läßt sich an Hand der Kommentare leicht verfolgen: Die drei Bytes einer Zahl werden nacheinander zu den entsprechenden Bytes der anderen Zahl addiert. Bei der Addition der niederwertigen Bytes wird das CYFlag nicht einbezogen (ADD-Befehl) , bei der Addition der hö herwertigen Bytes wird der Übertrag aus der Addition der je we il s niederwertigeren Bytes hinzuaddiert (Befehl ADC .. ). Die Addition der höchstwertigen Bytes liefert einen Übertrag, die entstandene Summe ist hier nicht in drei Bytes darstellbar. Zu Beginn des Programms sind die Operandenadressen ADRA und ADRB in die Registerpaare HL und BC zu laden, um anschließend register - indirekt auf die Operanden zugreife n zu können (vgl . Abschn . 1.2.5 . 3). Vor dem Zugriff auf höherwertige Bytes sind die Adressen in den Registerpaaren HL und BC zu inkrementieren. Die Operanden - Speicherplätze sind im Programm nicht defi niert. Die Befehlsfolge des Beispiels 19 besteht aus einer vorbereitenden Initi alisierung der Adressenregister und aus drei nahezu identischen Befehlsgruppen , die j eweils eine Byteaddition durchführen. Diese "Geradeaus"-Programmierung ist speicher platzaufwendig und wird bei einer größeren Anzahl zu addieren der Bytes unsinnig. Nach dem Kennenlernen der Sprungbefehle wird dieselbe Aufgabe als Programmschleife organisiert (s. Beispiel 23) . 2. 3. 3
Logikbefehle
Die Logikbefehle des 8085 fü hr en logische Verknüpfungen (UND , ODER, EXCLUSIV ODER) von 8-Bit - Größen im Akkumulator mit sol chen in Registern, Speicherplätzen und Direktoperand- Befehlen aus. Sie verändern die Status - flags in der angegebenen Weise . Da bei logischen Operationen keine Überträge entstehen , wer den die Werte des CY - Flags und des AC - Flags so festgelegt , wie es in den Befehlsbeschreibungen angegeben ist . Die Logikbefehle umfas sen außerdem zwei Befehle zum Setzen und Inve rtieren des CY - Flags und vier Verschiebebefehle. Beim 8085 sind dies Rotationsbefehle, die sich ausschließlich auf
- 131 -
de n Akkumu l ator beziehen und dessen Inhalt pro Befehl nur um ei nen Schritt (ein Bit) verschieben. Die Rotationsbefeh l e übernehmen das jeweils aus dem Akkumulator herausgeschobene Bit (A7 oder Aß) in das CY-Flag . Mit bedingten Sprungbefehlen (s . Abschn . 2 . 3 . 4) sind dann einzelne Akkumulator - Bitstellen ab fragbar.
Zu samme n mit den l ogischen Operatio nen UND , ODER , EX-
CLU S I V OD ER ermögl i chen die Versc h iebebefehle ei n e Bitverar beit u ng i m 8085 . In komplexeren Mikroprozessoren gibt es zusätzlich zu den Ro tationsbefehlen arithmetische und logische Verschiebebefeh l e . Beim logischen (geradeaus) Verschieben eines Registerinha l ts nac h li n ks oder nach rec h ts wird das herausfallende Bit in das CY-F l ag übernommen und eine
~
n achgezogen (Bild 61). Ist der
Inhalt des Registers eine vorzeichenlose Dualzahl , dann ent spric h t
die Verschiebung logisch links um eine Stelle einer
Multiplikation mit dem Faktor 2 , die Verschiebung logisch rec h ts u m ei n e Ste ll e ei n er Division durch 2. Be im arit hmetisc h e n Verschieben eines Registerin h a l ts nach l i n ks wird eine
~
nachgezogen, beim arithmetischen Versch i e -
ben n ach rechts wird die höchstwertige Stelle (A7) nachgezoge n . Ist der Inha l t des Registers eine vorzeichenbehaftete Zweierkomp l eme n tzah l, dann entspricht das arithmetische Ver schieben nach links um eine Stelle einer Multip l ikation mit 2 , das arithmetische Verschieben nach rechts um eine Stelle einer Division durch 2 . Durch Zahlenbeispiele lassen sich diese Festste l lungen leicht veranschaulichen .
Ve rschi e b e op e r at i o n e n l ogisc h
l i nk s
(x2 )
B-1A7 I 1+1 Aß l:tl 1
~Y
ar i th metisch Bild 61
ca CY
~
[3-hzl 1+1 Ih A7 CY M i 1
1
rechts ( /2 )
~I A7
1
~
1+1
AI!
0
Cf] CY
djl 1+1 1
1 1
Logische und arithmetische Verschiebeoperationen
~
A~
Zyklen/Takte: m/n
konst
M
1
110110110 1
ORA
110110555
r
(A) V ((HL) )
Die Bitstellen des Akkumulators werden mit den ent sprechenden Bitstellen des 5peicherplatzes , auf den HL zeigt , ODER-verknüpft. Ergebnis gelangt in den Akku .
(A) _
Die Bitstellen des Akkumulators werden mit den ent sprechenden Bitstellen des adressierten Registers r ODER - verknüpft. Das Ergebnis gelangt in den Akku.
(r)
(A)_(A) V
1\
ORA
(A)_(A)
Die Bitstellen des Akkumulators werden mit den ent sprechenden Bitstellen des zweiten Befehlsbytes konst UND-verknüpft . Das Ergebnis gelangt in den Akku.
k onst
((HL) )
Die Bitstellen des Akkumulators werden mit den ent sprechenden Bitstellen des 5peicherplatzes, auf den das HL - Registerpaar zeigt , UND - verknüpft . Das Ergeb nis gelangt in den Akku .
1\
1111001101
AN!
11 0100110 1
(A)
(A) _
ANA
M
Die Bitste ll en des Akkumulators werden mit den ent sprechenden Bitstellen des adressierten Registers UND-verknüpft. Das Ergebnis gelangt in den Akku .
110100555 1
.0 x x 1 x
.0 x x 1 x
.0 x x 1 x
.0 x x .0 x
.0 x x .0 x Zyklen/Takte: 2/7
Flags :
Zyk l en/Takte : 1/4
Flags:
Zyklen/Takte: 2/7
Flags:
Zyklen/Takte: 2/7
Flags :
Zyklen/Takte: 1/4
Flags:
(A) _ ( A ) 1\
100101111 1
ANA
(r)
Zyklen/Takte: 1/4
r
Flags :
(A)_(A)
Der Akkumulatorinhalt wird bitweise invertiert.
- - - - -
Flags : CY Z 5 AC P
formal verbal
CMA
Befehlswirkung
8085 - Logikbefehle (5 . 1 32 - 134)
Befehlsbytes
Mnemonik
Tafel 1 3
I
i
I
I I
I
I
..... W IV
konst
Flags: ~
x x
~
x
konst
r
M
110lllllO
CMP
110lllsss
CMP
I
I
! 1l1011l0 J l konst I
XRI
I
~
x x
~
x
~
x
-
(r)
Flags:
x x x x x
-
((HL) )
Flags:
x x x x x
Der Inha l t des Speicherplatzes , auf den HL zeigt, wird Zyklen/Takte: 2/7 vorn Akku subtrahiert. Der Akku bleibt unverändert. Die Status-flags beschreiben das Ergebnis: (Z)_l, wenn (A) = ((HL)) ; (CY)-l, wenn (A) < ((HL)), (CY)_O, wenn (A) ~((HL) l.
(A)
Der Inhalt des Registers r wird vorn Akku subtrahiert. Zyklen / Takte: 1/4 Der Inhalt des Akkumulators bleibt unverändert. Die Status - flags beschreiben das Ergebnis der Subtraktion : (Z)--l, wenn (A) = (r); (CY) __ l, wenn (A) < (r), (CY)_O , wenn (A) ~(r).
(A)
Zyklen/Takte: 2/7
x x Flags:
(A)~(A)_konst
Die Bitstellen des Akkumulators werden mit den entsprechenden Bitsteilen des zweiten Befehlsbytes konst durch die EXCLUSIV- ODER -Funktion verknüpft. Ergebnis in Akku.
~
Die Bitstellen des Akkumulators werden mit den entspre Zyklen/ Takte: 2/ 7 chenden Bitstellen des Speicherplatzes, auf den HL zeigt, EXCLUSIV- ODER - verknüpft . Ergebnis gelangt in Akku.
Flags:
x
(A)_(A)_((HL))
M
11010lllO
~
XRA
x x
Zyklen/Takte: 1/4
~
Flags:
(A)_(A)_(r)
Die Bitstellen des Akkumulators werden mit den entspre chenden Bitstellen des adressierten Registers r durch die EXCLUSIV- ODER - Funktion verknüpft. Ergebnis in Akku.
r
11 0101555 1
XRA
v Zyklen/Takte: 2/7
(A)_(A)
Die Bitstellen des Akkumulators werden mit den entspre chenden Bitstellen des zweiten Befehlsbytes konst durch die ODER - Funktion verknüpft. Ergebnis gelangt in Akku.
konst·
! llllOllO ! L konst J
ORI
w w
.....
x x
x
x
x
.
• 1+1
I~I 1
I
Zyklen / Takte: 1 / 4 _
I
I
Das CY - F l ag wird auf 1 ge se tzt .
1 - - - -
100110111 1
I
Fl ag s :
-
(CY)_ l
-
STC
-
Zyk l en/Takte: 1 / 4
x -
Flag s :
AfO
IY
x - - - Zyk l e n /Takte: 1 /4
Flags:
Der I nha l t des CY- F l ags wird invertiert .
I
x - - - Zyk l en/ Takte: 1 / 4
Flags:
100 11 11 111
I~I
AfO
13)
1:rJ AfO
x - - - -
Zykle n /Takte: 1 / 4
Fl ags:
(CY)_(CY)
1
i;)
AfO
1
x - - - -
Zyk l en/Takte : 1 / 4
Flags:
CMC
100011111 1
RAR
CY
(An)_(An+l) ; (CY)-(AfO); (A7)_(CY) De r Akku i n h a l t wird zyklisch um 1 Bit n ac h rechts durch ca=:+1 CY hi ndurch verschoben. CY A7
1
1
1 1 1-;-1 I A7
~
Der Akk u inha l t wird zyklisch nach links durch CY h indurch versc hoben .
10001011 1 1
~I A7
(An+ l )_(An) ; (CY) __ (A7); (AfO) _(CY)
CY
CE
(CY)-(AfO)
RAL
(A7)_(AfO) ;
(An)_(An+l) ;
Der Akkumul atorinhalt wird zyklisch um 1 Bit nach r e chts verschoben .
100001111 1
c:t-41 CY A7
(CY)_ (A7)
RRC
(An); (AfO)-(A7);
Der Akk umu l atorinhalt wird zyklisch um 1 Bit n ac h links versc h o b e n.
F lags:
100000 111 1
konst
(An+l) _
-
RLC
(A)
Der Wert konst im zweiten Befehlsbyte wird vorn Akku Zyklen / Takte : 2 / 7 subtrahiert . Der Akku bleibt unverändert. Di e Status flags b eschreiben das Ergebn i s der Subtraktion: (Z) __ 1, wenn (A) = konst; (CY)_ l, wenn (A)
konst
8085 - Logikbe f e h le (Fortsetzung von Se i te 1 33)
1111 11110 I I konst I
CPI
Tafel 1 3
"'"
W
I-"
- 135 -
Logische und arithmetische Verschiebeoperationen sind im Mikroprozessor BOBS mit kleinen Befehlsfolgen zu realisieren (s. Beispiel 21) . Die Vergleichsbefehle (CMP .. . ) stellen das Vergleichsergebnis im Z- bzw . CY-flag zur Verfügung. Das Z-flag zeigt die Gl eich heit der Operanden mit (Z) = 1 an und umgekehrt. Das CY- f l ag nimmt den Borger der beim Vergleich stattfindenden Sub traktion auf. Beispiel 20 : Zweierkomplementbildung mit BOBS - Befehlen. Man bi l de das Zweierkomplement der Festpunktzahl aus dem Speicher platz
im Akkumulator .
~BA5H
vorher:
~BA5H_tD 1 1
@
Ass e m b 1 e r n ZWKOMP :
nachher :
RAM
0
~BA5H
LDA CMA I NR
A
RAM
ß21iJt.GiJ
~BA5H -
(+5BD)
( - 5BD)
Ob j ektcode hex.
tat ion ;Dualzahl in Akku laden
3A A5
; Bitweises Invertieren (A)
2F
; (A)_(A)+1
3C
~B
Beispiel 21 : Multiplikation mit Faktor 2. Die Zweierkomple mentzahl im Speicherplatz
ist mit dem Faktor 2 zu multi -
~BA6H
plizieren und wieder abzuspeichern. Dies kann entweder durch arithmetisches Verschieben um eine Stelle nach links (Lösung a) oder durch Addition der Zahl zu sich selbst (Lösung b) er reicht werden. vorher :
RAM
nachher :
.0BA6H- [1iJ> 1111] Lösung a : MAL2A :
A s
S
( - 17D)
e m b 1 e r n
RAM
~ BA 6 H -ITF1=1= 0=1==1=l:::J]:::: 1 ==0=1 0
t a t
i
0
n
( - 3 4D )
Objektcode A7
ANA
A
;löscht CY - Flag
LDA
~BA6H
;Dualzahl in Akku laden
3A A6
;Arithmetisches Verschieben ; (CY) = ~ wird nachgezogen
17
; Ergebnis abspeichern
32 A6
RAL STA
~BA6H
~B
~B
-
136 -
Das Lösc h en des CY- F l ag i st erforderlich , um mit dem Befehl "RAL " anschließend eine Iif nachzuziehen (arithmetische Ver schieb u ng). Das Löschen des CY - Flag könnte man durc h die Be feh l e
STC
;CY - F l ag auf 1 setzen
CMC
;CY - Flag invertieren
ausführen ( Zeit : 8 Tak t per i oden) . Der Befehl ANA bzw . andere l ogische Befeh l e l ö s chen das CY - F l ag in 4 Taktperioden . Der Befeh l
" XRA A" z.B . löscht das CY - Flag und den Inhalt des Ak-
ku mulators . Lös u ng b : A s s e m b 1 e r n MAL2B:
0
t
a t
i
0
n
Objektcode
LXI
H, 1if8A6H
; Adresse des Speicher ; platzes nach HL l aden
MOV
A, M
;D u a l zahl in Akku laden
7E
ADD
A
; Du a l zahl z u sich selb st ; addiere n: (A) __ (A) + (A)
87
MOV
M,A
; Ergebnis r ückspeichern
77
I n beide n Lös u nge n von Beisp i e l
21 wurde nic h t
2 1 A6 1if8
untersuc h t , ob
durch die Mu l tip l ikation der Zah l e nb ereich der 8-Bit - Dua l zahl überschritten wurde ( Überlauffa l l) . Bei mehrfachen Zugriffen a u f denselben oder aufeinan derfo l gen de Spe i cherp l ätze ist der register - indirekte Speic h erzugriff ( Beispiel 2 1. b) weniger zeit - und speic h eraufwendig als die direkte Speic h eradressierung (Beispiel 21.a). Beispiel 22: Manipulation von Einze l bits. Die Bitste l len D3 u nd Dl eines Speicherworts mit dem Namen ZUSTND (Adresse l lif !if!ifH) sind unabhängig von ihrem vorherigen Wert auf 1 zu setzen . Die übrigen Bitstel l en des Wortes sollen unverändert bleiben . A s s e m b 1 e r n o t a t ZUSTND BIMU
EQU EQU ORG
l lifliflifH 1iflifliflifl lifllifB 9lifH
BI TVA :
LDA ORI STA
ZUSTND BIMU ZUSTND
i o n
Objektcode hex.
; Adreßz u weisu n g ; Wertzuweisung ;Adreßpege l anweisung Zustandswort laden 91ifH : 3A Iiflif l lif (A)_(ZUSTND) V BIMU F6 IifA Zustandswort speichern 32 Iiflif l lif
-
2.3.4
137 -
Sprun gbefehle
Sprungbefehle unterbrechen den sequentiellen Programmablauf , indem sie auf eine b e li e bige Adresse i m Haup t spe icher verzweigen , an der das Programm fortgesetzt werden so ll . Ein Sprung befehl (engl. jump oder branch) lädt das Befe hl szähl er - Regi s t er BZ (eng l. PC) mit der Adresse des Sprungzie ls . Beim 8085 stammt sie stets aus dem Befehl direkt . Die Adresse muß auf den Anfang des n ächsten auszuführenden Befehls zeigen (Bild 62); a uf der Assembler-Sprach -
HSP
ebene entspricht dies ei -
BZ
ner Befehlsmarke .
~=---:l:..:o:.w-:-l :.: }
Es gibt bedingte und un -
high
b e dingte Sprünge im Befehlssatz eines Mikrocomputers (Tafel 14) . BZ
Der unbedingt e Sprung (JMP adr) verzweigt in jedem Fall auf die im Be-
nach dem Sprung
fehl enthaltene abso lu te Speic heradr esse (Bild 62 ) .
Bild 62
Unb edi ngter Sprung
Bedi ngte Sprungbefehle prüfen d e n Stand eines der vie r Status-flags CY,
Z, S oder P
und entscheiden daraufhin , ob sie auf die Zieladresse adr ver zweigen oder aber in der Befehlssequenz fortfa h ren (Bild 63) . Bedingte Sprungbefehle verzweigen somit im Programm abhängig vo n den Ergebnissen vorhergehender Befe hl e , die die Statusflag s beschreiben . Der Befehl des MP 8085 "JC adr " (jump on
~arry
to address)
(B i ld 63) springt auf die angegebene Adresse, wenn die Bedi n gung (CY) = 1 erfü llt is t
und geht zum nächsten Befehl der Se -
que nz weiter , we nn die Bedingung nicht erfü ll t
is t
((CY)
=~) .
Der entsprechende Sprungbefeh l mit umgekehrter Bedingung " JNC adr "
(1 ump
on
~o
!::arry .. ) springt auf die Adresse adr , wen n
die Bedingung (CY) = iO erfül l t
ist und geht ander nfalls zum
nächs ten Befehl in der Sequenz .
(PC)_adr
adii AO
wenn
(CY) = 1; (PC)~(PC)
+ 3, wenn (CY) = ~
(PC)--(PC) + 3, wenn (CY) = 1
Il1001010 I ladr l ow I ladr hl.gh I
adr
entsprechend "JC adr"
(PC)-(PC) + 3, wenn (Z) =
~
(PC)-adr , wenn (Z) = 1;
=~;
JZ
(PC) __ adr, we nn (CY)
Das Programm wird an der Adresse adr fortgesetzt, wenn die im Op-Code enthaltene Bedingung (CY) = ~ erfüllt ist. Bei nicht erfüllter Bedingung (CY) = 1 wird das Programm mit dem auf den Sprungbefehl folgenden Befehl fortgesetzt.
adr
(PC)~adr,
Das Programm wird an der Adresse adr fortgesetzt , wenn die im Op - Code entha l tene Bedingung (CY) = 1 erfü ll t ist. Bei nicht erfül lter Bedingung (CY) = ~ wird das Programm mit dem auf den Sprungbefehl folgenden Befehl fortge setzt (s. Bild 63).
Ill010010 I [adr l ow I l adr high l
JNC
l adr l ow I l adr high l
I II 01 1lt(#0 I
JC
]1l00001l ] I adr low I l adr high l
Das Programm wird an der Adresse adr fortgesetzt, die im zweiten und dritten Befehlsbyte steht (s.Bild 62).
JMP
adr
(PC)_(HL)
Das Programm wird an der Adresse fortgesetzt, die im Registerpaar HL steht.
- - -
- - - -
-
-
-
- - -
- -
-
- -
- - - - Zyklen/Takte: e nt spr. "JC adr"
Flags:
wenn
(CY) = 1 Zyklen/Takte: 2/7
(CY) = ~ Zyklen/Takte: 3/10 wenn
Fl a gs :
wenn (CY) = ~ Zyklen/Takte: 2/7
(CY) = 1 Zyklen/Takte: 3/10 wenn
Flags:
Zyklen/Takte: 3/10
Flags :
Zyklen/Takte: 1/6
Flags:
Zyklen/Takte m/n
lll 1 0 1 001 1
Flags CY Z S AC P
formal verbal
PCHL
Befehlswirkung
8085 - Sprungbefehle (S . 138 - 139)
Befehlsbytes
Mnemonik
Tafel 14
'"
W
f-'
adr
adr
adr
adr
adr
111100010 1 l adr lew I 1adr high 1
JPO
111101010 1 I adr lew I l adr high l
JPE
111 11 0010 1 l adr lew I 1adr high 1
JP
111111010 1 l adr lew I 1adr high 1
JM
111 0000 1 0 1 ladr l ew I l adr high l
J NZ
(PC) __ adr , wenn (Z)
= fil; (PC)_(PC)
adr , wenn (S)
= 1; (PC)-(PC)
= fil; (PC)-(PC)
= 1; (PC) __ (PC)
= fil; (PC)- (PC)
Ablauf entsprechend "JNC adr "
(PC)_adr, wenn (P)
Ablauf entsprechend " JC adr"
(PC)_adr, wenn (P)
Ablauf entsprechend "JNC adr"
(PC) __ adr, wenn (S)
Ablauf entsprechend " JC adr"
(PC) ___
Ablauf entsprechend "JNC adr"
+ 3, wenn (P)
+ 3, wenn (P)
+ 3, wenn (S)
+ 3 , wenn (S)
+ 3 , wenn (Z)
=1
= fil
=1
= fil
=1
- -
-
- -
ll
- - -
-
-
- - Zyklen/Takte: entspr . "JNC adr"
Flags:
Zyklen/Takte: entspr. " JC adr"
Flags: - -
Zyklen/Takte: entspr. "JNC adr"
Flags:
Zyklen/Takte: entspr . "Je adr
Flags : - - - - -
Zyklen/Takte: entspr . " JNC adr "
Flags : - - - - -
'"
f-' W
- 140 HSP BZ
r,
wenn (CY)
r
~
t
BZ
I
,
~
wenn (CY) = 1
* **
Bild 63
mäßig nur Sprungbefehle mit einer absoluten, 16 - Bit
I
r L
Anm. :
Der MP 8085 hat hardware-
J
r-
langen Speicheradresse . Bei vielen Mikroprozessortypen findet man bedingte Sprungbefehle mit befeh l szählerrelativen Adressen , die sich auf den jeweils aktuellen Befehlszählerstand
nächster Befehl, wenn Sprungbedingung nicht erfüllt
beziehen (siehe Abschn. 6
nächster Befehl, wenn Sprungbedingung erfüllt
Ein typischer Anwendungs -
Abläufe beim bedingten Sprungbefehl "JC adr"
fehle sind Programmschlei -
und 7 , Bild 173).
fall für bedingte Sprungbe fen. Hierzu soll die Aufga be von Beispiel 19 - die
Addition zwe i er 3 - Byte lang er Festpunktzahlen - im Beispiel 23 wieder aufgegriffen werden . Die sich wiederholende Befehls gruppe (Laden, Addieren , Abspeichern) wird als Kern der Pro grammschleife in Beispiel 23 ei nmal (statisch)
in den Haupt -
speicher ge l egt und dreimal (dynamisch) durchlaufen . Neben den eigentlichen Verarbeitungsbefehlen sind nach Bild 64 Schleifen-Organisationsbefehle erforderlich , die Speicheradressen verändern und nach einer gewünschten Anzahl von Schleifendurchläufen durch Abfragen eines Endekriteriums die Schleife verlasse n. Im vorliegenden Fall wird zu Beginn - in der SChleifen-I nitialisierungsphase - ei n Schleifenzähler-Re gister (E) mit dem Wert 3 geladen und in jedem Schleifendurchlauf dekrementiert, bis der Zählerstand (E) =
~
den dritten
Schleifendurchlauf signalisiert und der bedingte Sprungbefehl die Programmschleife verläßt . In den darauffolgenden Befehlen findet meist eine Schleifenendebehandlung statt. Bild 65 zeigt das Flußdiagramm zu Beispie l 23. Als Schleifen Endebehandlung wird in Beispiel 23 das entstande ne Ergebnis auf Überlauf abgefragt, der bei vorzeichenlosen Festpunktzah-
- 141 -
Bild 64 Aufbau einer Pro grammsc h leife (allgemein)
Bild 65
Flußdiagramm zum Beispie l 23
len im CY - Bit erscheint. Das Programm in Beispiel 23 ist ins besondere daraufhin zu untersuchen, ob die bedingten Sprünge die " richtigen " Flag - Zustände abfragen . Beispiel 23: Addition mehrfachlanger Zahlen mit Programmschlei fe.
Zwei 3 - Byte lange Festpunktzahlen sind im Speicher unter
den symbolischen Adressen ADRA und ADRB abgelegt (vgl . Bei spiel 19) . Das Programm BSP23 ist gemäß dem Flußdiagramm in Bild 65 zu codieren. Die physikalische Adresse der Überlauf marke OVF sei
2~~~H .
Die Speicherplätze der Operanden ADRA und
- 142 ADRB sind am Programmanfang zu definieren . Ass e m b 1 e r n 0 t a t i o n OVF ADRA : ADRB
EQU DB DB
2fÖfÖfÖH 85H , fÖBFH,9EH 9AH , 63H,6DH
BSP23 :
LXI LXI XRA MVI
H,ADRA B,ADRB A E, 3
;Adressenzuweisung ; Datendefini tion ; im Speicher
;Adresse ADRA nach HL laden ; Adresse ADRB n ach BC laden ;löscht u . a . das CY-Flag ; Schleife nzähl er laden
}
; (A)_((BC)} ;(A}-(A) + ((HL) } + (CY) ;Summenbyte abspeichern ; ((HL}}_(A) B ;Opera ndenadressen in H ;BC und HL erhöhen E ;Schl eife nzähler vermindern PRSCHL ; Bedingter Schleifensprung
PRSCHL : LDAX B ADC M MOV M,A INX INX DCR JNZ JC HLT
2. 3. 5
OVF
;Überlaufabf rage ; Dynamisches Ende
Schleifen Initiali sierungen
Programmschleife (3x durch laufen)
}
SchleifenEnde
Unterprogramm - Aufruf- und Rückkehrbefehle
In Programmsystemen gibt es oft Teilaufgaben, die an verschie denen Stellen im Programm durch die gleiche Befehlsfolge zu bearbeiten sind . Teilaufgaben in diesem Sinne sind z.B. arith metische Operationen , die nicht als Maschinenbefehle reali siert sind (Multiplikation , Division) , Bedienroutinen für pe riphere Geräte, Erzeugen definierter Zeitverzögerungen und be stimmte Datenaufbereitung svorgänge . Legt man die Befehlsfolge für eine so l che Teilaufgabe an jeder Stelle im Programm ab , an der sie zu bearbeiten ist , dann steht die g l eiche Befehls folge me hrfach im Sp eicher . Um Programme möglichst kurz und übersichtlich zu gestalten, gibt es in allen Mikroprozessoren die Möglichkeit , eine solche Befehlsfolge als Unterprogramm (engl. subroutine) einmal in den Speicher zu legen und sie von verschiedenen Stellen in übergeordneten Programmen aufzurufen und auszuführen . In Bild 66 wird das Unterprogramm UP von den Aufrufstellen A, Bund C mit dem Unterprogramm-Aufrufbefehl "CALL UP" dreimal zur Ausführung gebracht . Als letzter Befeh l
- 14 3 HSP
ij A n+3
auf rufendes Programm
CALL UP
il
B n+3
UP: 1 . Befehl " !...'--."~-
'- /'
CALL UP
'i
(Haupt programm)
'-
II
C n+3
Bild 66
--,
CALL UP
li
/,
)-, \
,/
:-1,
: I i I I .
: I
I
./ '-,\~'-- UJ . _._._.-
Unter programm
~__R_E_T__~
-------- 1. UP-Aufruf - - - - 2. UP - Aufruf _._ . _._ . 3 . UP-Aufruf Adresse n = A, B oder C
Mehrfach er Aufr uf eines Unterprogramms UP
eines Unterprogramms springt der Unterprogramm-Rückkehrbefehl RET (engl . return) an die Adresse nach dem j ewei li gen CALL - Be fehl z urück . Das aufrufende Programm wird an dieser Ste lle fortgesetzt. Der Unterprogramm- Aufruf CALL schiebt das Unterprog ramm -
zeitlich gesehen - in die Befe hlsf olge des aufru -
fenden Programms ein . Di e Maschinenbefehle " CALL adr " und "RET " des MP 8085 (T afel 15) si nd spezialisierte (unbedingte) Sprung b efeh le , die den Stack zur Zwischenspeicherung der Rückke hr a d resse benutzen. Bild 67 zeigt den Ablauf des UnterprogrammAufrufs (CALL adr) und der Rückkehr aus dem Un terprogramm (RET): Der CALL-Befeh l springt auf den ersten Befehl im Unter programm und rettet g l eichzeitig den aktuellen Befehlszähler inhalt (PC(alt))
=
n+ 3 in de n Stack. Nach dem Durchlaufen des
Unt erprogramms springt der RET-Befehl in das aufr uf ende Pro gramm zurück,
indem er die Rückkehradresse n+3 aus dem Stack
abhebt und wieder in den Befehlszähl er PC lädt. Das aufrufen de Programm wird somit genau an der Adresse n+3 nach d em CALL Befehl fo r tgesetzt . Der Stack wird während des Ablaufs wie bei einer PUSH - und einer darauffolgenden POP - Operation verwaltet .
adr
adr
adr
( (SP) - 2) __ (PC l ow) (PC) __ adr
I~~~~~100 1
Ablauf wie Befehl CNC
Unterprogramm- Aufruf , wenn Bed ingu ng ( Z)
Unterprogramm-Aufruf, wenn Bedingung (Z)
CN Z
adr
- - - - -
wenn (CY)
Flags
- - - - = 0
wenn (CY) = 1 Zyklen/Takte 5/1 8 wenn (CY) = 0 Zyklen7Takte 2/9
F l ags
5/18
- - - - -
Zyklen/Takte
Flags
n/m
CYZSACP
Zyklen/Takte
Fl ags
= fi! e r füllt .
= 1 erfüllt.
s. Befehl CNC
s. Befehl CC
Zyklen7Takte 5/18 Bei nicht erfüllter Bedingung (CY) = 1 wird das Programm wenn (CY) = 1 mlt dem auf den CNC - Befehl folgenden Befehl fortgesetzt: Z kl 7T kt 2/9 (PC) __ (PC) + 3 Y en a e
Ist die im Op-Code enthaltene Bedingung (CY) = 0 er füllt , dann wird die Rückkehradresse in den Stack ge rettet und auf Adresse adr verzweigt ( s . CALL - Befehl) .
Ist die im Op - Code entha l tene Beding u ng (CY) = 1 er füllt , dann wird die Rückkehradresse in den Stack ge rettet und auf die Adresse adr verzweigt (s. CALL - Befehl) . Bei nic h t erfüllter Bedingung (CY) = 0 wird das Programm mit dem auf den CC - Befehl fo l genden Befeh l fortgesetzt : (PC) - - (PC) + 3
Nac h dem Retten der Rückkehraaresse in den Stack wird das Programm an der Adresse adr fortgesetzt (unbedingt). Zum Ablauf siehe Bild 66 und 67 .
(SP) - - (SP) - 2 ;
( (SP) - 1 ) __ (PC h i gh) ;
I~~~~~ 100 1
adr
formal verbal
Ablauf wie Befehl CC
CZ
1110101001 ladr l ow I ladr high I
CNC
1110 11100 1 l adr l ow I l adr high l
CC
111 001101 1 l adr l ow I 1adr highl
CALL
Befehlswirkung
8085 - Unterprogramm - Aufruf - und Rückkehrbefehle (S. 144 - 146)
Befeh l sbytes
Mnemonik
Tafel 15
I
I I
I
,... ",. ",.
-1-1 0
-1
-1-1-1-f
RST ,J
a dr
adr
adr
adr
n
111001001 1
RET
Illnnnlll i
RST
1 ~ ~~~~010 1
CPO
1~~~~~100 1
CPE
I~~~~~100 1
CP
I~~~~~100 I
CM
Unterpr ogramm- Aufruf , wen n Bedingung ( S) = 1 erf üll t .
Ablauf wie Befehl CC
(PC high)..--((SP) + 1 )
Die zwei obersten Bytes aus dem Stack werden in das Befehlszählerregister PC gebracht. Üblicherweis e wird mit dem RET - Befehl ein Unterprogramm verlassen und ins aufrufen de Programm zurückgekehrt (Bild 66 und Bild 67) .
(SP) + 2
(PC low)_( (SP)) ;
(SP) -
,,,
Ablauf wie Befehl CNC
((SP) - l )..--(PC high); ( (SP) - 2)_(PC low) (SP) _ (SP) - 2 ; (PC)-8 x n Befeh l ll l n n n l l l i Nach dem Retten der Rückkehradresse in (PC) = 10000000000nnnOOO l den Stack springt der Befehl auf die Adresse n x 8 . Die 3 - Bit lange Nummer n im Op Codebyte nimmt die Werte ~ bis 7 an . Entsprechend der nebenstehenden Adreßbildung sind die Sprung zie l e ~ , 8 , 1 6 , 24 , 32 , 40 , 48 und 56 mög l ich .
parity odd , erfüllt .
Unterprogramm - Aufruf , wen n Bedingung (P) = (15 , d.h .
parity even , erfüllt.
Unterprogramm - Au fruf , wenn Bedingung (P) = 1, d.h .
Ablauf wie Befehl CNC
Unterprogramm- Aufruf , wenn Bedingung (S) = (15 erfüllt .
Abla uf wie Befehl CC
3/10
- - - - Zyklen/Takte
Flags
3/12
- - - - Zyklen/Takte
Flags
s . Befehl CNC
s . Befe hl CC
s . Befehl CNC
s. Befehl CC
,
"""'
U1
.".
111100000 1
RPO
-
---
-
Unt erprogramm-Rückkehr , wenn Bedingung (P) = parity odd, erfüllt . Ab l auf wie Befehl RNC
~,
d .h.
RPE
111101000 1
Un terprogramm- Rü ckkehr , wenn Bedingung (P) = 1, d.h . parity even , erfüllt . Ablauf wie Befehl RC
1111100001
erfüllt.
Unterprogramm- Rückke hr, wenn Bedingung (S) =
Ablauf wie Befehl RNC
RP
~
Unterprograrnrn-Rückke hr, wenn Bedingung (S) = 1 erfül lt .
erfü llt.
Ablauf wie Befehl RC
~
111111000 1
111000000 1
RM
Unterprograrnrn - Rückkehr, wenn Bedingung (Z) =
Ablauf wie Befehl RNC
RNZ
Unterprograrnrn- Rückkehr , wenn Bedingung (Z) = 1 erf üllt .
Ablauf wie Befehl RC
Ist die im Op - Code enthaltene Bedingung (CY) = ~ erfüllt, dann wird auf die Adresse verzweigt, die im Stack oben steht (s . RET - Befehl) . Andernfalls wird mit dem auf " RNC " folgenden Befehl fortgefahren : (PC) - ( PC) + 1
1110010001
1
RZ
111010000
RNC
-
- - -
-
-
s . Befeh l RNC
s . Befehl RC
s . Befehl RNC
s . Befehl RC
s . Befehl RNC
s . Befehl RC
Zyklen/Takte wenn (CY) = 0 3/12 wenn (CY) = 1 1/6
Flags
Ist die im Op - Code enthaltene Bedingung (CY) = 1 erfüllt , Flags - - - dann wird auf die Adresse verzweigt , die im Stack oben Zyklen/Takte steht (s . RET - Befehl) . Andernfalls wird mit dem auf wenn (CY) = 1 3/12 "RC" folgenden Befehl fortgefahren: (PC) __ (PC) + l. wenn (CY) = 0 1/6
8085 -Unterprogramm-Aufruf - und Rückkehrbefehle (F ortsetz ung von S . 14 5)
111011000 1
RC
Tafel 15
... er.
.....
- 147 Er hat vor dem CALL - Befehl und nach dem RET-Befehl (normaler weise) denselben Füllungsstand . Das Unterprogramm kann an je der beliebigen Adresse im Speicher liegen . aufrufendes Programm
n-l
I PC
I--
CD I pc(alt)I--
--
n+l
CALL adr low
n+2
adr h igh
n
n+3
CD
Unt er programm
CD
ADD
Ipc(neu)I---
}_4
adr
1.Befehl
MOV
L---
STACK
STACK
,Cf; 0 1_ m
_bd CD
CD CD GD
Bi ld 67
I---- -I-'-..:....:...;;;.:;...:....:...;~
SP
vor dem Auslesen des CALL -Befehls nach dem Auslesen des CALL-Befe hls nach dem Au sfüh r en des CALL-Befehls nach dem Ausführen des RET - Befehls
Unterprogrammaufruf un d Rückkehr (MP 8085)
Neben den unbedingten Unterprogramm-Befeh 1en CALL und RET gibt es bedingte Unterprogrammbefehle , die die Status - flags abfra gen (Tafel 15) und bei erfüllter Bedingung genauso funktionieren wie der unbedingte Sprung . Ein spezieller Unterprogramm- Aufrufbefehl ist der l - Byte - lange Befeh l
" RST n " (E.estar t , Wiederanlauf) . Er wird in erster Li -
nie für den Aufruf von Systemprogrammen verwendet . Beim ResetVorgang springt der 8085 na ch Adresse
0
(vgl. Abschn . 1.2.5.1);
er hat somit diese l be Mirkung wie der Befeh l
" RST 0 ".
- 148 Im folge nde n Programmbeispie l ist der Inhalt ei nes Register paares nach Dekrementieren auf. abzufrage n, der Befe hl "DC X rp " beeinflußt die Status - flags jedoch nicht (vgl. Tafel 12). Zur Abfrage des Registerpaares DE be nötigt man beispielsweise folge nde Befehle : MOV ORA JZ
A,E 0
;( A) ~(E)
; (A) (A) V (0), "ORA" verän ;dert die Fl ags Z, S un d P ;Be dingt er Sprung , wenn (OE) = • .
Diese Befehle zerstören den Inhalt des Akkumulators , der In halt des Registerpaares OE bleibt bei dieser Abfrage erhalte n. Beispiel 24 : Unterprogramm Zeitverzögerung . Es ist ei n Unter programm UPZEIT zu schreiben, das die von ei n em übergeordneten Programm im Registerpaar OE vorgegebene Zählgröße m auf • herunterzählt und dann ins aufrufende Programm zu rück kehrt. Der Aufruf des Unterprogramms im übergeordneten Programm ist anzu geben . Man ermittle die gesamte Verzögerung t , die das Unter programm bewirkt , a ls Funktion der Zählgröße m. Ass e m b 1 e r p r o 9 r a m m i *** Hauptprogramm ***
HAUPT :
LXI
SP,2 ••• H
LXI D, . l •• H CALL UPZEIT
, Stackdefinition für CALL - Befehl ; Zählgröße m l ade n ; Aufruf des Unterprogramms UPZEIT
; *** Unterprogramm UPZEIT *** ;Eingangsgröße m im Registerpaar OE ; Verzögerungszeit t = (19 + m . 31) . T UPZEIT: PUS H ZSCHL : MOV ORA JZ DCX JMP UPEND : POP RET
PSW A, E 0
UPEND D ZSCHL PSW
; Retten des PSW für das Hauptprogramm ;flags beschreiben den ;Inhalt von Registerpaar OE ;Aussprung aus Schleife, wen n (OE) ; (OE) dekrementieren ; Springe a n Schleifenanfang ;P SW aus Stack rege n e rier en ; Rückkehr ins Hauptprogramm
=.
Die Verzögerungszeit t des Unterprogramms UPZEIT (Beispie l 24) ergibt sich aus den Befehlszeiten der im Unterprogramm (dyna misch) durchlaufenen Befehle . Mit der Eingangszählg r öße m lie fert die gedankliche Simulation :
- 149 PUSH POP RET
(m - l) -mal durchlaufen werden:
DCX JMP
10
MOV ORA JZ
7/10
rn- mal durchlaufen werden :
mit
12 10 10
l - mal durchlaufen werden :
Takten
6 4 4
wobei der Befehl JZ (m-l) - mal nicht springt (tJz/nein) u nd 1 mal springt (t Jz / ja ) · t = (PUSH + t pop + t RET + t Jz / ja ) + (m- l) · (t DCX + t JMP + tJz/nein) + m· (t
+ tORA) = [42 + (m- l) · 23 + m. a]. . '!' = [19 + m. 31 ] · T; MOV Setzt man gern. Programmbeispiel m = l ßß H = 256D und T = 333 ns , ergibt sich die Verzögerungszeit : t
= (19
+ 256·31) ·333 ns
=2
649 015 ns ""' 2 , 649 ms.
Di e Zä hlschl eife im Unterprogramm UPZEIT wurde so orga ni siert , daß sie auch richtig durchlaufen wird , wenn vom übergeordneten Steuerprogramm die Zählgröße m = ß vorgegeben wird. De r Aufruf mit m = ß bewirkt i n Beispiel 24 die vergleichsweise geringe Verzöger ung szeit t = 50 · 333 ns = 16,65 p s . Die Laufzeit des Unterprogramms kann z . B. durch Einfügen von NOP-Befehlen (s . Ab schn . 2 .3.6) in die Programmschleife vergrößert werden . Unter programme , die von verschiedenen Benutzer - Programmen her auf gerufe n werde n, sind so z u erste llen , daß sie Registerin h alte des aufrufenden Programms nicht zerstören . Im Unterprogramm müssen deshalb die Inhalte der während der Ausführ u ng benötigten Register zu Beginn in den Stack gerettet und nach dem Durchlaufen d er Verarbeitungsbefehle vor dem Rücksprung wieder zurückgeladen we rde n . Im Beispiel 24 muß das Programm-Statu s Wort PSW (Akkumulatorinhalt und flags) gerettet und wie der regenerier t werden . Ein wesent l ic h es Element der Programmdokumentation ist der Programmkopf. Er so l l in Kommentarform die für de n Benutzer des Programms wichtigen Eigenschaften kurz zusammenfassen : -
Programmname Verfasser , Erstellungsdatum, Version Aufgabenstellung des Programms Vereinbarungen über Eingangs- und Ausgangsparameter Sp e icherbedarf und sonstige Hardware - Voraussetzungen
formal
Das Flipflop INTE (engl. interrupt enable) im BOBS wird nach Ausführung des auf ~ folgenden Befehls gesetzt; der BOBS nimmt dann Unterbrechungswünsche an , sofern der Unterbrechungseingang nicht selektiv maskiert ist.
111111011 1
111110011 1
DI
(INTE) -
EI
11)
Zyklen/Takte
Flags
Der Befehl DI sperrt alle Interrupteingänge des BOBS (vgl. Bild 44) ; er hat keinen Einfluß auf den TRAP-Eingang.
Das Flipflop INTE (engl . interrupt enable) im BOBS wird unmittelbar nach der Ausf ührung des- Befehls DI gelöscht ; der BOBS nimmt dann keine Unterbrechungswünsche an .
(INTE) _
Der Befehl EI gibt alle Interrupteingänge des BOBS frei; er hat keinen Einfluß auf den TRAP - Eingang (vgl. Bild 44) .
Zyklen/Takte
Flags
Zyklen/Takte
hat keinerlei Wirkung im Prozessor
l
Flags
Leerbefehl
Zyklen/Takte
Flags
1/4
1 /4
1/ 4
1/5
m/ n
CYZSACP
Zyklen/Takte
Flags
100000000 1
Der Halt - Zustand kann durch einen Reset - Vorgang , eine Unterbrecnung oder zeitweise durch eine DMA-Anforderung verlassen werden. Sind Unterbrechungssperren gesetzt , wer den Interrupts auch im HLT - Zustand nicht wirksam.
Nach Ausführung des HLT-Befehls bleibt der Prozessor im HLT - Befehl stehen . Der Befehlszähler zeigt auf d e n nächstfolgenden Befehl .
verbal
1 50 - 151)
NOP
101110110 1
HLT
Befehlswirkung
BOB5 - Sonder - und Steuerungsbefehle (S .
Befehlsbytes
Mnemonik
Tafel 16
f-'
o
cn
qAd8 1
.$IM
7
3 I
4
:;:.==.J
5
IE
6
17.5 1 6.5 1-5 . 5
2
1
o
7
6
5
3
2
1
0
Akku - Bit -N r.
Zyklen/Takte
Flags
1, d . h . Rücksetzen des RST7.S - Flipflops 0 , d.h . RST7.S - Flipflop bleibt unverändert
I
Unterbr~chungsmasken für RST Eingänge 7 . 5 , 6.5 und 5.5 (=0 d.h . Eingang freig eben , =1 d . h. Eingang sperren) Masken - Setz-Freigabe: MS~ = l, d . h. Bits A2 - 0 setzen Maskenbits
M7.S M6.S MS . SJ ---(A7 ... 0)
Wert für serie ll en Ausgang SOD , wenn (SOE) = 1 Obiges Bitmuster ist vor dem SIM- Befehl im Akkumulator aufzubauen .
1= 1, d.h. Freigabe für seriellen Ausgang SOD (~erial out ~nable)
I:
de fi niert
I I
4
X R7 . S MSE
01 l un ~
SOE
1/4
für RST - Eingänge 7 . 5 , 6 . 5 und 5 . 5 ( =0 d .h. freigegeben , =1 d . h. gesperrt)
Der RIM - Befehl (~ead interrupt ~ask) lädt das angegebene Bitmuster in den Akkumulator . Er dient wahlweise zum Ein lesen der seriellen Datenleitu ng SID (vgl. Bild 44) und der Interruptmasken bzw. der RST - Eingänge.
IsoD
"
1/4
~dckit,~ 1",~,,~
Zyklen/Takte
Flags
Unterb~chungsmasken
I
M7 . S M6 . S Ms.sl
Zustand des Generelle Unterbr echu ngs _. seriellen freigabe (INTE - Flipflop) &I!'.~".r(;'c',s<>\'r Dateneingangs (= 1, Unterbrechungen erlaubt) SID Anstehende Unterbrechungssignale an den RST - Eingängen 7 . 5, 6 . 5 und 5.5 (= 1, d . h . Unterbrechungswunsch)
(A7 .. . 0)-!SID
I-'
'"
I-'
C.rct. I~+enc;pr...~~~ :).set clt:..J "''.YJebo("" ,yf..,,,. ä~~,; dc"C/Ju . Eld{c~t vv.J/"vc,ßr 'Ju'YfI'-'~8Q6r <Sel!eLfe' IJcJcde,fo::; . SOlO -5.S. 8.2.. v,cI s .s. -r...,-/ ",.,cI ~u··, ..r,,'7(!r~ dtf1" /,fe>'YU/Ot'ntNlrf:''T
@llOOOO]
SIM
@iÜ ooooo j
RIM
- 1 52 2 . 3.6
Sonder- und Steuerbefeh l e
Der verhältnismäßig einfachen Struktur des 8- Bit- Mikroprozes sors entsprechend besitzt der 8085 nur wenige Sonder- und Steuerungsbefehle. Es sind im wesentlichen die Befehle zur Steuerung der Unterbrechungsmasken im 8085 (EI , DI , RIM, S I M), sowie zum Anhalten des Befehlsablaufs im HLT - Befehl
(~alt) .
In den Beispielen 22 und 23 wird der HLT - Befehl am Ende des Programms zum Anhalten der Befehlsverarbeitung eingesetzt . Der NOP-Befehl (engl.
~o
operation) ist ein Füllbefehl, der ein
Byte im Programm belegt und für seine Ausführung vier Maschi nenzyklen benötigt , ansonsten aber keinerlei Wirkung im Mikro prozessor hat . Der Mikroprozessor 8085 hat eine generelle Unterbrechungssper re, die alle Interrupt - Eingänge des Prozessors mit Ausnahme des TRAP - Eingangs (vgl. Bild 44) sperrt und selektive Unter brechungsmasken, die die Unterbrechungseingänge RST5 . 5 , RST6 . 5 und RST7 . 5 einzeln sperren . Eine zusammenhänge n de Darstellung der Unterbrechungsorganisation mit Programmbeispiel ist in Ab schnitt 2 . 4 gegeben . 2.3.7
Zur Verarbeitung von BCD-Zahlen
In einem Byte können zwei binär codierte Dezimalziffern abge legt sein, wobei jede der zwei Tetraden eines Bytes eine Dezimalziffer
~.
. . 9 enthält ; die Pseudotetraden A .. F sind nicht
zulässig (vgl . Abschn. 1.1 . 2 . 4). Sollen Zahlen dezimal ein und ausgegeben werden und sind nur einfache Verarbeitungsvor gänge im Prozessor erforderlich , so kann man die Zahlen wäh rend der Verarbeitung in ihrer Dezimalstruktur belassen. Die Addition und Subtraktion von binär codierten Dezimalzahlen ist mit den Befehlen der Dualarithmetik möglich , wenn anschließend eine Dezimalkorrektur des Ergebnisses vorgenommen wird : Entsteht bei der Addition zweier BCD-Ziffern (8 - 4 - 2-1 - Code) als Ergebnis eine Pseudotetrade A.. F oder ein Übertrag aus der Tetrade heraus , dann ist 6 zu addieren, um die sechs Pseudote traden A . . F zu überspringen (Bild 68). Mit einem 8-Bit-Additionsbefehl des MP 8085 können zwei BCD -
- 153
-
BeisEiel zu Fall A: 9
10 01
+ 8
+ 1000
17
10
1
0001 + 0110 (Korrektur)
1
0111
BeisEiel zu Fall B: 7
0111
+ 5
+ 0101
1 2
10
1100
0
+ 0110 (Korrektur) nein
Dezimalziffer und Dezimalübertrag
1
Bild 68
0010
Dezimalkorrektur be i binärer Addition von BCD- Ziffern
Stellen auf einmal addiert werden . Der anschließend notwendige Befehl zur Dezimalkorrektur ei nes Registerinhalts DAA (vgl. Tafel 12) setzt die zwei Tetraden des Ergebnisses gemäß Bild 68 in zwei binärcodierte Dezima l ziffern um: 1. Korrektur der niederwertigen Tetrade , wenn sie grö ßer als 9 ist oder das Hilf s -Übertragsbit AC gesetzt ist (zur Funktion von AC vgl. Abschn . 2.1.1). Ein bei der Korrektur entste hende r Übertrag aus der niederwertigen Tetrade wird dabei zur höherwertige n Tetrade addi ert . 2 . Korr ekt ur der höh erwertige n Tetrade des Akkumulators , wenn sie größer als 9 ist oder das Übertragsbit CY auf 1 gesetzt ist. Ein nach dem ADD - Befehl vorhandener Übertrag CY - 1 bzw. ein bei der Dezimalkorrektur entste hender Übertrag zählt mit zur Darstellung der Dezi malzah l und ist vom Programm entsprechend zu berücksichtigen. Bei der Dezimaladdition von Zahl e n, di e mehrere Bytes lang sind, muß jedes Byte ins Dezimal e gewandelt werde n, b ev or un ter Berück sic htigung des Übertrags die nächsthöheren Bytes addiert und adjustiert werden (Bsp. 25) .
- 154 Beispiel 25 : Dezimaladdition von 4- ste ll igen Dezimalzah l en. In den Registerpaaren HL und DE stehe je eine 4-stellige BCD - Zahl zur Verfügung . Die dezimale Summe ist im Registerpaar DE zu liefern u nd es ist festzustellen, ob die Zahl 5- stel li g ist . Ass e m b 1 e r n
0
tat ion
;Dezimaladdition vo n 4-ste lli ge n BCD-Zah l en ;Re gisterpaare DE und HL ent h alten 4-ste lli ge BCD - Zahlen DEZADD: MOV ADD DAA MOV MOV ADC DAA MOV JC VIER :
A, E L E, ~
A, D
; Niederwertiges Byte zuerst ... ; (A) _ (E) + (L) ; Niederwertiges Byte dezimal adj ustieren ;Niederwertiges Ergebnisbyte dezimal ; ... dann höherwertiges Byte ; (A) _
D,A FUENF
;Höherwertiges Byte dezimal adjustieren ;Höherwertiges Ergebnisbyte dezimal ; Sprung, wenn Ergebnis 5-stellig ; Ergebnis 4 - stellig
FUENF :
(D)
+ (H) + (CY)
H
; Sprungmarke für 5-stelliges Ergebnis
Bei der aufwendigeren Dezimalsubtraktion ist im Prinzip das Zehnerkomplement des dezimalen Subtrahenden zu bilden und zum Minuenden zu addieren 2.3 . 8
171.
Zu r Unterprogrammorganisation
Die Unterprogramm- Aufruf - und Rückkehrbefeh l e des MP 8085 wur den in Abschnitt 2 . 3.5 beschrieben. Auf Grund der großen Bedeutung der Unterprogrammtechnik seien hier einige Bemerkungen an gefügt . Um eine n modularen Programmaufbau zu erreichen und aus den in Abschnitt 2 . 3 . 5 genannten Gründen wird der Programmierer ver schiedene Teilaufgaben als Unterprogramme schreiben, die von seinem Hauptprogramm aus aufgerufen werden . Wesentlich verei nfacht wird die Erstellung eines Anwenderprogramms , wenn man auf universell einsetzbare Sta n dard-U nterprogramme z urückgreifen kann , die üblicherweise in einer Programmb ib li othek ve rwaltet werden . Unterprogramme können von Hauptprogrammen oder von anderen , übergeordneten Unterprogrammen aufgerufen werden . Im letzten
- 155 Fall spricht man von versc hachtelt en Unterprogrammen. Die Ab l age der Rückkehradressen im Stack erlaubt eine Versc hachtelun g von Unterprogrammen , wie sie Bild 69 zeigt ; Aufruffo lge: Hauptprogramm HP - Unterprogramm UPl - Unterprogramm UP2 und Rüc kke hr über UPl ins Hauptprogramm. Haup t programm Unterprogramm 1
HP n
n+l n+2 n+3
UPI
CALL adrll adr l h
Unterm m+l m+2 m+3
CALL adr21 adr2 h RET
1 - - _....
Stack
Aufruf
G)i 0i I
I
(SP) -- ~
CD Bild 69
m+3 m+3 n+3 n+3
1
--. - - (SP) I I
1
-..I
h
Erklärungen:
Rückkehr
h
CD
I
I ®
-..J
~r~~J'
CD 0 CD CD 0
vor dem Aufruf von UPl Au fruf von UPl Aufruf von UP2 Rückk ehr von UP2 nach UPl Rückkehr von UPl i n s HP
Unterprogrammaufruf im Unterprogramm (Verschachte lte Unt erprogramme)
Zur Ausführung der gewünschten Operationen benötigt ein aufge rufenes Unterprogramm im allgemeinen bestimmte Daten oder Spei cheradressen (Parameter) , die ihm vom aufrufenden Programm übergeb en werden . Ebenso kann das Unterprogramm Ergebnisse an das Hauptprogramm zurückgebe n. Es gibt unterschied l iche Formen der Parameter übergabe zwische n aufrufendem und aufgerufene m Pr ogramm : Wenige Parameter werden am einfachsten in Universalregistern des Prozessors übergeben. Das aufrufende Programm l ädt die Ope randen oder Adressen vor dem Aufruf in die vereinbarten Regi ster und das Unterprogramm verarbeitet die Parameter aus die -
- 156 sen Registern heraus (vgl . Beispiel 24). Sind mehrere Parame ter zu übergeben, so kann man die Adresse ei n er Parameter liste im Speicher in einern vereinbarten Registerpaar übergeben , über die das Unterprogramm auf die Parameter im Speicher zugreift . Im Beispiel 28 (Unterprogramm HDUMP) wird die Anfangsadresse des darzustellenden Speicherbereichs im Registerpaar HL und die Länge des Bereichs im Register E übergeben. Eine weitere Möglichkeit stellt die Parameterübergabe im Stack d ar , der ja dem aufrufenden und dem aufgerufenen Programm zur Verfügung steht. Da nach dem Unterprogrammaufruf der Stackpointer (SP) auf di e abgelegte Rückkehradresse zeigt, muß zum Aufsuchen der Übergabeparameter der Stackpointer
exp li zit
manipuliert wer -
den. Als Beispiel sei die Para meterübergabe - Vereinbarung beim Auf ruf von Programmen in der höheren Programmiersprache PL/M ge nannt . Ruft ein PL/M - Programm ein in Assemblersprache verfaß tes Unterprogramm auf , dann muß der Programmierer die im PL/M Compiler festgelegte Parameterübergabe
1271
beachten:
* Ein Byteparameter wird im Register C übergeben, ein 16-Bit - Parameter im Registerpaar BC .
* Bei zwei Byteparametern steht der erste im Register C, der zweite im Register E zur Verfügung . Bei zwei 16-Bit- Para metern wird der erste im Registerpaar BC, der zweite in OE übergeben.
* Sind mehr als zwei Parameter vorhanden , so erfo lgt die Übergabe der zwei letzten in Registern (wie eben beschrieben), die Übergabe der vorangehenden Parameter im Stack .
* Ein Ergebnis des Unt erprogramms erwartet das aufrufende PL/M-Programm im Akkumulator (1 Byte) bzw. im Registerpaar HL (16 - Bit-Größe) . Beispiel 26 : Unterprogramm mit Parameterübergabe nach PL/M Konvention . Das Unt erprogramm SUM4 so ll vier Bytegrößen, die ihm von dem aufrufenden PL/M-Programm zur Verfügung gestellt werden, addieren und die Summe i m Akkumulator liefern. Das Un terprogramm SUM4 findet die Byteparameter PAR 1 , PAR 2, PAR 3 und PAR 4 in den Registern E und C sowie im Stack vor , wie
- 157 nebenstehend dargestellt . Zuoberst im
STACK
Stack liegt außerdem die Rückkehradres (SP) _ _ (PC) 1 (PC) h PAR 2
se . Das Unterprogramm (procedure in PL/M) hat in Assembl er sprac h e den folgenden Aufbau :
Ass e m b 1 e r n ; Unterprogramm SUM4 :
MOV ADD POP POP ADD POP ADD PUSH RET
A,E C B D E D E B
0
(E)
I PAR
4
(C)
I PAR
3
~PAR """'-",~ 1
'"
~"''''~"'-":
tat ion
S U M 4 ;P AR 4 in Akkumulator bringen ; (A)-.- PAR 4 + PAR 3 ;Rückkehradresse in BC zwischenspeichern ; PAR 2 i n s E- Register bringe n ; (A)-(A) + PAR 2 ;P AR 1 ins E- Register bringen ; (A) ( A) + PAR 1, Summe im Akku ;Rückkehradresse wieder in den Stack ; Rü ckkehr mit Summe i m Akku
Un terprogramme kön nen verschiedene Eige n schaften haben . Ein Unterprogramm ist im Speicher frei verschiebbar (engl. re locatable) und damit leicht verwendbar, wenn es ohne Änderu n g der Adressen in den Befehlen an beliebige Stellen im Haupt speicher geladen werden kann und dort lauffähig ist. Dies ist möglich, wenn das Unterprogramm keine absoluten Speic heradres sen enthä lt. Da der Mikroprozessor 8085 kei ne befehlszähler relative Adressierung und keine echte Inizierung hat , müssen die abso lu te n Adressen beim Laden des Unterprogramms ei n ge setzt werden. Ein Unterprogramm ist re - entrant (dt. etwa wi e der ei ntr ittsfähig) , wenn es durch ein In terrup t sig n al in sei ner Ausführung unterbrochen und z . B. von einem In terr uptprogramm erneut gestartet werden kann . Nach der Interruptbehandlung soll dasselbe Unterprogramm an der Unterbrechungsste ll e wieder aufgenommen und zu Ende ausgeführt werden können . Diese Eigenschaft von Unterprogrammen ist in inte r ruptgeste uerten EChtzeitanwendungen sehr zweckmäßig. Man erreicht die re - entra n t - Fähigkeit von Unterprogrammen am einfac h sten , we nn
- 158 man zur Speicheru n g von Daten außer den Registern nur den Stack benutzt, also die Adressierung von festen Speicherplätzen unterläßt . Ein Unterprogramm ist rekursiv , wenn es sich se l bst aufrufen kann. Die Rekursivität schließt die re - entrantFähigkeit ein . 2.4
Das Programm-Unterbrechungssystem
2.4. 1
Programmunterbr e chung allgemein
Eine Programmunterbrechung (engl . interrupt) ist die Unterbre chung eines laufenden Programms im Mikroprozessor durch ein externes Signal (engl . interrupt signal) und die Abarbeitung eines Unterbrechungsprogramms mit anschließender Rückkehr in das unterbrochene Programm. Das Unterbrechungsprogramm rea giert auf die Unterbrechungsanforderung, deren Auftreten im al l gemeinen zeitlich nicht vorhersehbar ist , mit einer Unter brechungsantwort (Bi l d 70). Unterbrochenes Programm
Unterbrechungs programm
J
I:B-e-:: fe """'h"""'l,.-:-ll / Un terbrechungs s i gna l ~ lBefehlm !Befehl n ~
I-----i
Bild 70
~
Unter bre chungsantwort RETURN
Prinzip der Programmunterbrechung
Das Unterbrechungsprogramm wird zeitlich zwischen die Ausfüh rung des Befehls m und des Befehls n hineingeschoben. Unterbrechungssignale können von unterschiedlichen Quellen herrühren und ganz verschiedene Unterbrechungsantworten bewirken :
* Im Mikrocomputer erkannte Fehlerzustände wie Spannungsaus fall oder Zeitfehler auf dem Systembus können einen Inter rupt (Alarm) auslösen , der die Rettung von Daten bzw . das Ausgeben von Fehlermeldungen bewirkt.
- 159 -
* In der Echtzeit-Datenverarbeitung führen Interruptsignale aus einer Prozeß - Umgebung (z.B . Digital- und Ana l og - Ein-j Ausgaben, Uhrenunterbrechungen, Grenzwertmelder, Schalter) zur Betätigung unterschiedlicher Stellglieder durch das Un terbrechungsprogramm.
* Interruptsignale von Peripheriegeräten (z . B. Sichtgeräte , Drucker, floppy disc) dienen zur Organisation des Datenaus tauschs zwischen Geräten und Mikrocomputer (s. Abschn. 5 . 2 . 2) . In nahezu allen Mikroprozessoren ist die Möglichkeit der Pro grammunterbrechung vorgesehen. Sie erhöht die Leistungsfähig keit eines Systems im Vergleich zum Betrieb ohne Programmunter brechung entscheide n d , da der Mikroprozessor zwischen den Unter brechungsprogrammen (zur Bedienung der Peripherie) auch andere Programme bearbeiten kann (engl . multiprogramming) . Will man ohne das Hilfsmittel Programmunterbrechung auf externe Signale reagieren , so muß der Mikroprozessor die externen Signalleit u n gen in zyklischen Programmschleifen ständig abfragen , um beim Auftrete n eines externen Ereignisses sofort reagieren zu können . Während dieses polling - Betriebs (s . Abschn . 5 . 2 .1 ) kann kein zusätz l iches Hintergrundprogramm bearbeitet werden. Beim Erkennen einer Unterbrechungsanforderung laufen im Mikro prozessor folgende Aktionen ab: 1. Der gerade in Ausführung befindliche Befeh l wird normal be endet . 2 . Mit der Annahme einer Unterbrechung setzt der Mikroprozessor hardwaremäßig eine Unterbrechungssperre , die die Annah me weiterer Interrupts verhindert . Die folgenden Abläufe sind bei vielen Mikroprozessoren diesel ben wie beim Aufruf von Unterprogrammen (vgl. Abschn . 2.3.5) . 3 . Rette n des aktuellen Befehlszäh l erstandes in den Stack . Nach Ausführung des Befehls m zeigt der Befehlszäh l er auf den nächsten Befehl n (Bild 70) . 4. Verzweigen in ein Unterbrechungs-Unterprogramm an Hand eine r Sprungadresse (Vektoradresse) , die entwede r im Mikro prozessor int e rn erzeugt oder von einem externen Ergänzungsbaustein (Interrupt controller)
geliefert wird.
P I v.
EI
I
-SI H - 160 -
5 . Abarbeiten des Unterbrechungsprogramms . Hierin kann wahlweise die Unterbrechungssperre wieder freigegeben werden . 6. Rückkehr in das unterbrochene Programm (vgl . Abschn. 2 . 3 . 5.) auf die im Stack abgelegte Rückkehradresse. Die Unterbrechung eines laufenden Programms kann durch Interruptmasken verhindert werden. Sämtliche Unterbrechungseingänge eines Mikroprozessors können durch die generelle Unterbrechungsmaske (INTE beim 8085) gesperrt bzw . freigegeben werden; selektive Unterbrechungsmasken schalten einzelne Unterbrechungseingänge ab. Die Unterbrechungsmasken sind mit speziel len Maschinenbefehlen lösch - und setzbar . Gibt man im lauf en den Interruptprogramm die Sperre frei,
ist eine erneute Unter -
brechung des Inte rruptprogramms möglich : man erhält e in e Interruptschachtelung nach Bild 71. Das Unterbrechungssignal INTl aktiviert das Interruptpro HP
gramm INTP1. Da zu Beginn INTPl
INTl
'-
~ /IT" ~ -----li~~T RET
in INTPl die Sperre freige geben wird (Befehl EI beim 8085), initiiert das Signal INT2 den Aufruf der Interruptroutine INTP2, bevor das Programm INTPl abgesch l ossen ist. In INTP2 wird die Interruptsper re erst am Programmende freigegeben.
Bild 71 Interruptversch ac ht elung (Interrupt im Interruptprogramm)
Liegt dann keine weitere Unterbrechungsanforderung vor,
beendet der Mikroprozessor zunächst INTPl und kehrt anschließend in s Hauptprogramm zurück. Der Stack wird dabei streng nach dem LIFO-Prinzip verwaltet. Eine allgemeine Unterbrechungswerksstruktur mit den Unterbre chungseingängen IRo ... IR , sowie genereller und selektiver In n terruptmaskierung zeigt Bild 72. Da von den n+l Unterbrechungseingängen mehrere gleichzeitig aktiv sein können, benö tigt das Unterbr echungserk ein Kriterium zur Auswahl eines Eingangs .
a l(l
J""
Sc'".{t"
1r
1
- 161 -
Priori t-- - - - - - - - - I tä ten-
ent I-- - - - j sch 1 üs -1-++-.-_ selung
Selektive Interruptmaske IR i d . h. i nterrupt request i Bild 72
--1
~l
• • •
• •
Vektor adresse
genere ll e Interr uptsperre
(Eingang)
Allgemeine Mehrebenen - Unterbrechungswerksstruktur mit genereller und selektiver Maskierung
Das Kriterium ist die Prioritätenreihenfolge der Interrupteingänge , die in der Prioritätenentschlüsselung (Bild 72) hardwaremäßig festgelegt ist : Der Eingang IR
hat hier die höchste , o die geringste Priorität . Der Prioritätenent n schlüss l er läßt von den gleichzeitig anstehenden Interruptsig -
der Eingang IR
nalen j eweils nur dasjenige mit der höchsten Priorität passie ren . Dieses u nterbricht die interne Ablaufsteuerung und geht gleichzeitig in den Prioritätenverschlüssler, der daraus die interruptspezifischen Verzweigungsadresse (Vektoradresse) erzeugt . Verschwindet die Anforderung höchster Priorität, über nimmt das nächstgeringere Interruptsignal die gleiche Funktion. Verschiedene Strategien bei der Realisierung von Unterbrechungswerken sind in 1241 beschrieben.
2. 4. 2
Die Unterbrechungssteuerung des 8085
Der Mikroprozessor 8085 verfügt über 5 Unterbrechungseingänge TRAP, RST7 . 5 , RST6.S , RSTS.S und INTR mit tei l weise unter schiedlichen Eigenschaften , die in Tafel 17 zusammengestellt sind . Während die 4 Unterbrechungseingänge (restart - Eingänge)
- 162 TRAP, RST7 . 5 , RST6 . 5 und RST5 . 5 direkt zu einer Verzweigung mit festge l egter Zieladresse (s. Spalte 3 in Tafel 17) führen, wird beim Sammel - Unterbrechungseingang INTR der Verzweigungsbe fehl samt Verzweigungsadresse von einer dezentralen Unterbre c h ungsscha l tung (vgl . Abschn. 2.4.4) vorgegeben . Der Sammel-Unterbrechungseingang gestattet die Erweiterung der 4 direkten Unterbrechungseingänge am 8085 um weitere Eingänge ei n er externen Unterbrechungslogik (interrupt controller) bis zu ins gesamt 68 Unterbrechungsebenen. Den Unterbrechungseingängen des 8085 sind gemäß Tafe l 17 (Spal te 2) feste Eingangsprioritäten zugeordnet. Die Prioritäten entscheiden bei gleichzeitigem Auftreten mehrerer Unterbrechungssignale , welche Anforderung zuerst berücksichtigt wird . Der TRAP - Eingang ist als Alarm - Meldeeingang für Maschinenfehler vorgesehen und setzt sich daher gegenüber allen anderen Anforderungen durch (höchste Priorität 1). Der Sammel - Unterbre chungseingang INTR , und damit sämtliche Eingänge an externen Unterbrechungs - Steuerbau s teinen, haben die geringste Priorität 5 . Im 8085 regelt die Priorität der Unterbrechungseingänge ledig l ich die Reihenfolge bei der Berücksichtigung der Unterbre chungsanforderungen , es gibt jedoch keine Programm - Laufpriori täten wie etwa beim Minicomputer POP 1 1 oder bei dem externen interrupt controller-Baustei n 8259 (s . Abschn . 2 . 4 . 4) . Hierbei wird zusätzlich die Priorität der höchstwertigen Unterbre chungsanforderung mit der aktuellen Laufpriorität (engl . cur rent priority) verglich e n. Die Laufpriorität ist z.B . die Priorität eines gerade bearbeiteten Unterbrechungsprogramms . Eine Unterbrechung des lauf e nden Programms erfolgt nur dann , wenn die Laufpriorität geringer ist als die Priorität der höchstwer tigen Unterbrechungsanforderung . - Im 8085 dagegen kann jedes Unterbrechungssignal beliebiger Priorität eine Interruptrouti ne unterbrechen, sofern die Unterbrechungsmasken dies zulassen . Die Bildung der Verzweigungsadressen (Vektoradressen) bei Unterbrechungen an den direkten Eingängen TRAP , RST7.5, RST6 . 5 und RST5 . 5 erfolgt genauso wie beim URST n U-Befehl (Tafel 15) . S~~
2CH
3
4
RST6.S
RSTS . 5
*3)
*2)
*1 )
S,~.ss
-
MS . 5
M6 . 5
M7 . 5
", ..r 1j(
~
1-
INTE *2)
-
Maskierung Maskierung selektiv*l) generell
H- Pegel bis zur Abfrage*3)
d . h. Interrupteinganq RSTx .5 gesperrt } d . h . Interrupteingang RSTx . S freigegeben
"t = 5 6 7 ml x "
I
1
ro
d.h . Interrupt - Eingänge freigegeben (interrupts enabled) d . h. Interrupt - Eingänge gesperrt ---
Das TTL - Ei ngang ss igna l muß solange high - Pegel (+2,4 V 8085 am Ende der Befehlsausführung erkannt wi rd.
+ 5 V) annehmen, bis es im
Die generelle Maske INTE ist mit den Befehlen EI und DI programmierbar (vgl. Tafel 16) .
(INTE) (INTE)
Die generelle 808S - interne In terr uptmaske INTE sperrt alle Interrupteingänge des 8085 mit Ausnahme des TRAP-Eingangs:
Die Masken - Flipflops sind mit den Befe hl en SIM und RIM setz - und le sbar (vgl . Tafel 16) .
(Mx.S) = 1 (Mx.5) = ß
Bild 81
Bild 74
Bild 74
H-Pegel bis zur Abfrage*3)
Bild 76
Bild 75
H- Pegel bis zur Abfrage*3)
LU
.....
'"
J ~h -.j ~
" l Elngangsschaltune;
-i r'".Il~IJr.
Ansteigende Flanke interne Speicherung
Ansteigende Flanke UND H-Pegel*3) bis zur Abfrage
Art der Triggerung
1131
M7.5, M6.5 und MS.S sind 808S - interne Masken - Flipflops mit der Bedeutung:
Erläuterungen:
lQ~r 0 ... 1-
von externer Schaltung abhängig
34H
2
RST7.5
5
3CH
1
TRAP Lj.f)
INTR
24H
Priorität
Verzweigungs adressen
Die Unterbrechungseingänge des Mikroprozessors 8085 1121
Interrupt Eingänge
Tafel 1 7
C'f'lJ
- 164 Beim Auftreten eines Signals an den genannten
Unterbre -
chungseingängen erzeugt der 808S intern den Befehl "RST 4 . S " (b ei Aktivierun g des TRAP - Eingangs) und die Befe hl e " RST 7 . S", " RST 6 . S" und " RST S.S " bei der Aktivierung der e n tsprec henden RST-Eingänge, deren Verzweigungsadressen zwischen den " ganzzahligen" RST - Adressen der Software-Restart-Befehl e " RS T n " liegen ( Bild 73) . Die zum RSTS . S ge hörige Vektoradresse liegt zwi schen den Zieladressen der " RST S " - und " RST 6 "-Befehle . Statt des Operationscode - Abrufzyklus (OF) wird als erster Maschinen zyklus bei intern erzeugtem RST - Befehl ein bus idle - Zyklus (B1 Zyklus, vg l . Tafel 7) gefahren . Speiche r adresse n RST~
,..------, iZ!iZ!H
RST I I - - - - - l iZ!8H RST2 UR ST n" -
Befe hle aus Pr ogramm oder von externem interrupt controller
RST4 RSTS RST6 RST7
Bild 73
1 8H
RST3
--------------
-----
2iZ!H 24H 28H 2C H _ 3iZ!H 34H _ 38H 3CH -
TRAP4.:; RSTS.S RST6.S
Generierung im 808S intern
RST7 . S
Lage der RST - Adressen im Speicher
Auf die Verzweigungsadressen
RST~ ,
RSTl .. . RST7 wird gesprungen ,
wenn etweder ein entsprechender "software "- Befehl aus dem Pro gramm zur Ausführung gelangt oder ein externer interupt controller in einem 1NA- Maschinenzyklus (vgl. Tafel 7) einen "RST n U- Befehl zur Ausführung bereitstellt. Liefert der externe in terrupt controller- Baustein einen CALL - Befehl samt 16- Bit &s~
- 165 Sprungadresse in drei INA-Zy klen , dann kann auf nahezu beliebige Speicherplätze verzweigt werden. Oas Einholen von Verzwei gungsbefehlen in speziellen INA-Maschinenzyklen wird durch das Sammel - Interruptsignal INTR am MP 8085 ausgelöst. Nach Tafel 17 besitzt der Mikroprozessor 8085 eine generelle Interruptmaske, die in dem internen Masken-flipflop INTE reali siert ist . INTE sperrt die Unt erbrechungseingänge RST7.5, RST 6 .5, RST5 . 5 und INTR -nicht den TRAP-Eingang
- , wenn es ge -
löscht ist und gibt die Eingänge für Unterbrechungen frei , wenn es eine 1 enthält. Mit dem Befehl 01 werden die Unterbrechungs eingänge generell gesperrt Tafel 16) gibt sie frei (INTE)..-l). Mit dem Rücksetzen des Mikroprozessors wird
((INTE)~~),
RSTx.5
der Befehl EI (vgl. RESET IN
r---
(01)
8 0 8 5
die generelle InterInterrupt akzeptiert
ruptmaske stets in den Sperrzustand ((INTE)
=
~)
versetzt.
Ebenso löscht der MP 8085 nach der Annahme einer Unterbrechungs anforderung das INTEFlipflop selbsttätig (Bild 74). Es ist dem
IR intern - - - -
Interruptprogramm überlassen , ob und wann es die generelle
J
rläuterungen:
x = 5,6 IR d.h. interrupt Eequest
Interruptmaskierung wieder frei gibt .
Bild 74 Prinzipschaltung der Interrupt-Eingänge RST5.5 und 6.5
Zusätzlich zu der generellen Interruptmaskie rung sind die Interrupteingänge RST7.5, RST6.5 und RST 5.5 durch die einzelnen Masken - Flipflops M7.5, M6.5 und M5.5 selektiv maskierbar . Das Zusammenwirken eines RST - Eingangs mit dem zugehörigen Maskenflipflop und der generellen Maske INTE zeigt
- 166 Bild 74. Demnach kann ein RST-Interrupt - Eingang nur dann intern wirksam werden, wenn keine der beiden Masken sperrt . Die selektiven Masken-Flipflops blockieren den zugehörigen Interruptein gang , wenn (Mx.5) = 1, bzw . geben ihn frei, wenn (Mx.5) =
~.
Zur Steuerung der selektiven Masken durch das Programm hat der ..s ...... S-1 ;:S-tS"'" 8085 die Befehle RIM (engl. read interrupt mask) und SIM (engl . set interrupt mask) , die in Tafel 16 beschrieben sind . Der SIM Befehl setzt die im Akkumulator (A2, Al,
A~)
aufbereiteten se -
lektiven Maskeninhalte in die Masken - Flipflops M7.5, M6 . 5 und M5 . 5, wenn das Maskensetzen mit dem MSE - Bit (engl. mask set ~nable)
erlaubt wird. Zur Funktion des SIM-Befehls bei der se -
riellen Ausgabe siehe Abschn. 2 . 1 . 5. Der RIM-Befehl l iest die Zustände der Masken - Flipflops M7.5 , M6.5 und M5.5 und der gene rellen 1nterruptmaske (INTE) = IE in den Akkumulator ein . Außer dem werden die an den RST-Eingängen anstehenden Unterbrechungs anforderungen I7 . 5 , I6.5 und 15.5 angezeigt , auch wenn die Ein gänge maskiert sind . Das Rücksetzen des 8085 setzt die selekti ven Masken in den Sperrzustand (Mx.5) = 1) . Für die Eingänge TRAP und INTR gibt es keine selektiven Masken (vgl . Tafel 17) . Die Unterbrechungseingänge ha RST7 . 5
ben unterschiedliche Eingangs -
r--
schaltungen und damit unter schiedliche Trigger - Eigenschaf-
I
ten (s. Tafel 17 , Spalte Interrupt akzeptiert 1
6
Q~---'
8 0 8 5
M7.5
INTE
IR 7 . 5 intern
~.
Die Eingänge RST6 . 5 , RST5 . 5 und INTR sind pegelgesteuert;
I
die Unterbrechungssignale müs-
I
sen solange mit high-Pegel an-
I
stehen, bis sie von der Ab -
I I
laufsteuerung am Ende eines
I I
Befehlszyklus abgefragt wer -
__ J
den . Zur sicheren Erkennung einer Unterbrechungsanforderung müssen die Signale zu -
Bild 75 RST7.5 - Eingangs schaltung (prinzipie l l)
mindest solange anstehen, wie der längste Befehl dauert
- 167 (CALL Befehl mit 18 Takten). Stehen sie noch an , we nn die (auto matisc h gesetzte) generelle Interruptmask e im Progr a mm wieder freigegeben wird , erze ug t dasse lb e Signal erneut eine Unter brechung . De r RST7 . 5- Eingang ist f l a nk e ngest e uert . Das zugehörige Speicher - Flip f l op im 8085 wird mit einer ansteigenden Sig nalflank e am Eingang RST7.5 auf 1 gesetzt (Bild 75) . Eine Interr uptau s lösung erfolg t nur, we nn dies die Masken M7.5 und INTE zu lass e n . Da s interne RST7 . 5- Fli pflop wi rd zurückgesetzt , wenn : - der 8085 die In terrupt - Anforderung an nimmt , - der 8085 von a uß en das Rücksetzsignal RESET IN erh ä lt , oder - der SIM-B e f e hl ausgeführt wird und i m Akkumulator die Bit ste lle R7 .5 (Bit A4) a u f 1 gesetzt ist (vgl. Ta fe l 16). Das Eingangs-Flipflop wird nur durch eine erneute anste igende Flanke am Signaleingang wieder gesetzt (erneute In terrup t - An forderung) . Ein e bes o n dere Art der Tr iggerung hat der TRAP -E ingang . Gemäß Bild 76 wird eine inter ne TRAP Anforderung nur sola nge erzeugt , als das TRAP-Signal direkt ansteht und das TRAP - Kippglied auf 1 gesetzt ist . Es wird mit der a n steigen de n Fla nke des TRAP - Si g n a l s gesetzt. Da der TRAP - Ein gang nicht maskierbar ist, akzeptiert die 8085 - Abla uf steuerung am Ende des laufenden Befehls in j edem Fa ll die inter ne TRAP - Anforderung und löscht
r---
I I I
daraufhin das TRAP - Flipflop. Erst
I
I
Eingang löst eine zweite Unterbre-
I TRAP
SET IN - Eingang macht die TRAP - Anfor derung intern ebenfal ls unwirksam. 2 . 4.3
I I I
I I I I
ei ne erneute Signalflanke a m TRAP chung aus. Ein Rücksetzsignal am RE -
l
8 0 8 5
I I I
TRAP akz ep tiert
t
.J
reguest
t intern
--
Bild 76
TRAP-Ei ngang
Aufb a u von Unterbrechungsprogrammen
Ein Unt erbrec hungsprogramm be nötigt z u r Erarbeitung der Int er rupt-Antwort bestimmte Register des Mikroprozessors. Im Unt er -
- 168 brechungsprogramm müssen deshalb vor Bearbeitung der eigentlichen Aufgabe diejenigen Registerinhalte des unterbrochenen Programms sichergestellt werden , die in der Interruptroutine ansch l ießend belegt werden. Zweckmäßigerweise legt man die zuret tenden Registerinhalte in den Stack , in dem auch die Unterbrechungs-Rückkehradresse liegt (Bild 77) . Vor der Rückkehr in das unterbrochene Programm müssen die geretteten Registerinhalte in umgekehrter Reihenfolge aus dem Stack heraus in die Register zurückgeschrieben werden. Der Stackpointer zeigt dann wieder auf die Rückkehradresse (PC) im Stack , die mit dem RET - Befehl in den Befehlszähler PC geladen wird. Bild 77 zeigt neben dem Stack- Inhalt den prinzipiellen Aufbau eines Unterbrechungspro gramms. Das Retten der Registerinhalte im Stack erlaubt die Verschachtelung mehrerer Unterbrechungsprogramme nach Bi l d 71. Die beim Erkennen einer Unterbrechungsanforderung hardwaremäßig in den Sperrzustand versetzte genere ll e Interruptmaske kann vom Programmierer - abhängig von der vorliegenden Aufgabe - im Un terbrechungsprogramm an beliebiger Stelle wieder freigegeben werden. Wird der Befehl EI (vgl . Tafel 16) als vorletzter Befehl im Unterbrechungsprogramm ausgeführt, so ist das gesamte Unterbrechungsprogramm einsc hli eßlic h der Rückkehr ins üb erge ordnete Programm nicht unterbrechbar . Darüberhinaus können im
INT i
~ VA(i) n+l
Unterbrechungs programm i
Erklärungen :
Register ret retten (PUSH rp)
VA(i) .. .. yektor~dresse (i)
INT i
Stack
--
InterruptAntwort evtl. Masken verändern
(C)
Register regenerieren (POP rp) Interrupts zulassen (EI) RET Bi ld 77
. .. Interrupt - Nr . i
(SP)
(B) PSW (F)
z.B . 2 Register} paare
PSW (A) n+l low n+l high
} (PC)
V~
Aufbau eines Unterbrechungsprogramms mit Stack - Inhalt
- 169 -
...--
Vektoradresse (RST5 . 5) , - -
~~2CH
I I
JMP
RAM/ROM
-
INT55
- - -, I
I I I
;;--
I RST5.5L!-
r I
0:
I
L __
Ha uptp rogramm INTTl gibt Leerzeichen auf Bildschirm
:0 __ J
In terruptprogramm IN T55 gibt l x die In terruptmaske aus
Erk l ärungen zu
..... Bild 78
siehe Text
Speicherp lan zum Interrupt - Testprogramm (Beispiel 27)
Interruptpro gramm nach Bedarf die selektiven Masken - Flipflops mit dem Befehl SIM (Tafel 1 6) verändert werden. In Beispie l 27 ist ein I nterrupt -Testprogramm (INTT1) gegeben. Es besteht aus ei nem Hauptprogramm (INTT l), das die notwendi gen Initialisierungen ausführt und dann fortlaufend Leerzeichen (b l anks) auf den Konsol - Bildschirm ausgibt , sowie einem I nter ruptprogramm (INT55) , das einmal den aktuellen Inhalt des Interrupt-Maskenworts hexadezimal verschlüsselt auf den Bi l d sc hi rm ausgibt, we nn ein Unterbrechungssignal am Eingang RST5.5 des 8085 erkannt wird (vgl . Programmkopf in Beis p ie l
27) . Der
Speicherplan (Bild 78) zeigt die Lage der Programme im Haupt speicher und die RST5 . 5 - Adresse , die mit einem Sprung auf die Int erruptrout i ne INT55 zu l aden ist. Der zeitliche Ab l auf bei Auftrete n ei ner Unterbrechung nac h Bild 78 ist :
~
CD CD
Verzwe i gen zur RST5 . 5- Vektoradresse rung der Rück kehradresse .
~~2CH mit Kel l e -
Von dort Sprung ins Interruptprogramm INT55. Rückkehr in das Hauptprogramm nach Ausführung des Unter brech un gsprogramms .
Da im Betriebsprogramm vie l er 8085-Übungssysteme di e RST-Vektor -
- 170 adressen im allgemeinen in einem ROM - Bereich liegen, sind an diesen Stellen Verzweigungsbefehle fest einprogrammiert, die wiederum auf feste Adressen im RAM - Bereich verzweigen. Kann an dieser Stelle - wie im vorliegenden Beispiel 27 - das Unterbrechungsprogramm (INT55) nicht abgelegt werden, so gelangt man über ei n e weitere Indirektion ("JMP INT55" auf Speicher platz URST55 und folgende)
in die Interrupt Subroutine INT55.
RST5.5~
Registerinhalte des unterbrochenen Programms retten: (PSW) und (BC) Befehl " JMP INT55" an Verzweigungsstelle URST55 im RAM ablegen
Selektive Interruptmasken setzen: - RST5.5 freigeben - RST6.5/7.5 sperren
a) Hauptprogramm INTTl Bild 79
b) Interrupt - Unterprogramm INT55
Flußdiagramme zum Beispiel 27 (Interrupt-Testprogramm)
- 171 Im Hauptprogramm INTTI wird der Befehl "JMP INT55" in den Befehlszeilen 17 - 20 in die Speicherplätze URST55 und folgende abgelegt. Die Flußdiagramme in Bild 79 beschreiben die Abläufe im Hauptprogramm INTTI und im Unterbrechungsprogramm INT55 . Zur Programmierung der Bildschirm-Ausgabe werden die Ausgabe Unterprogramme CO
(~onsol ~ut)
und NMOUT
(~u~erical
out) ei nes
Betriebsprogramms (Monitor - Programm s . Abschn . 3 . 3) aufgerufen. Die Subroutine CO gibt ein im Akkumulator stehendes , ASCII verschlüsseltes Zeichen auf den Bildschirm aus . Die Subroutine NMOUT schreibt eine beliebige 8 - Bit Kombination aus dem Akku mulator als Folge von zwei Hexadezimalziffern (linke und rech te Tetrade) auf.. den Bildschirm (s. Abschn . 3 . 2) . In der Inter ruptmaske ist zum Abfragezeitpunkt das Interrupt - Anforderungs bit 15 . 5 auf 1 gesetzt. Das Unterprogramm ZEIT in Beispiel 27 erzeugt eine konstante Zeitverzögerung mit Hilfe einer Zäh lsch l eife. Es wird sowohl im lI auptprogramm als auch im Interruptprogramm jeweils nach der Ausgabe eines Bytes aufgerufen , um die Ausgabe auf den Bildschirm langsamer und damit besser verfolgbar zu machen.
Im Experiment werden die Unterbrechungen am RST5 . 5 - Eingang durch Betätigen einer entprellten Taste erzeugt. Da dieser Eingang pegelgesteuert ist , erscheint bei anhaltendem Tasten druck die Interruptmaske (vgl . Tafel 16) mehrfach hinterein ander auf dem Bildschirm :
1 6
1 6 1 6 1 6
Das Programmbeispiel wurde mit Hilfe des (automatischen) 8 085 Assemblers auf einem Mikrocomputer - Entwicklungssystem übersetzt (s . Abschn . 3) . Im Beispiel 27 ist der Programmausdr uck (engl. program listing) nach dem Übersetzen wiedergegeben. Das symbolische Assemblerprogramm (rechts der LINE-Nr.) wird vom Programmierer in das System eingegeben, links von der LINE Nr . stehen die absoluten Speicherplatzadressen des Programms (LOC) und der übersetzte Objektcode (OBJ) in Hexadezimaldar stellung .
Interrupt Testprogramm INTT1.
<"'f~\\;",,\es
12 NM OUT 13 CO 14 URST 55 15 16 3EC3 E'~~r 'u' ~ 7 INTT 1: 32DA0B()~c.:c~ 18 211D0A {«tl"Je... 19 22DBBB 213 31800B 21 3EBE 22 313 23 FB 24 25 3E2B ~ 26 BLANK:
06C6
~ Iov"-\llv"~~r<.",, ~
BA12
BABB BABB 0A02 BAB5 BA08 0A0B BABE 0A10 0A 11
BBDA
!!15M
11
113
8 9
5 6 7
4
****************************************************************
MVI
ORG MVI STA LXI SHLD LXI MVI SIM EI
EQU EQU EQU
~ADRESSZUWEISUNGEN
FUER AUFGERUFENE
I C3 FUER RST5.5 IM MIT SPRUNG IN DIE INTERRUPT SERVICE INT55 LADEN NACH ZELLEN BBDBH UND 0BDCH DEFINIEREN ~INTERRUP T MASKE ERZEUGEN: RST5.5 FREIGEBEN ~SELEKTIVE MASKEN-BITS SETZEN ~GENERELLE INTERRUP TMASKE FREIGEBEN
~PROGRAMM-ANFANGSADRESSE
~MONITOR-UNTERPROGRAMME
A,2BH
A,BEH
~ASCII-CODE
FUER BLANK ERZEUGEN
~INTERRUPT-VEKTORADRESSE ~RAM ~ROUTINE URST55+1~SPRUNGADRESSE SP,BB8BH~STACK
BABBH A,BC3H URST55 H,INT55
B6C6H B5A6H BBDAH
GIBT FORTLAUFEND LEERZEICHEN AUF DEN BILDSCHIRM AUS. BEI AUFTRETEN EINES UNTERBRECHUNGSSIGNALS AM EINGANG RST5.5 SOLL EINMAL DIE AKTUELLE INTERRUPTMASKE DES 81385 HEXADEZIMAL AUF DEN BILDSCHIRM AUSGEGEBEN WERDEN. RUFT AUF: MONITOR-UNTERPROGRAMME CO (=AUS) UND NMOUT (=BYAUS) CO GIBT EIN ASCII-ZEICHEN AUF BILDSCHIRM AUS NMOUT GIBT EIN BYTE HEXADEZIMAL AUF BILDSCHIRM AUS
INTERRUPT TESTPROGRAMM 1
**************************************************************** INTT1
PAGE
173)
3
SOUR CE STATEMENT
MODULE
(Seite 172 -
1 2
OBJ
LOC
LINE
ISIS-II 813813/81385 MACRO ASSEMBLER, V4.1
ASM8B :F1:INTT1.A85 DEBUG MOD85
Beispiel 27:
='
'"
>-' -.J
0tll'
01FF0F 0B 79 B0 C8 C32D0A
0A2A 0A20 0A2E 0A2F 0A30 0A31
CO ZEIT
NO ERRORS
A 05A6 A 0A2A
INT55
A 0A1D
INTT1
A 0A00
NMOUT
A 06C6
AUFRUF DES UNTERPROGRAMMS CO CALL CO CALL ZEIT AUFRUF DES UNTERPROGRAMMS ZEIT 28 BLANf( ENDLOSSCHLEIFE 29 JMP 30 31 ***** INTERRUPT SUB ROUTINE INT55 FUER RST5.5-EINGANG ********* 32 :BENOETIGTE REGISTER FUER DAS UNTERBROCHENE PSW 33 INT55: PUSH PUSH B :PROGRAMM INTT1 RETTEN 34 :AKTUELLE INTERRUPTMASKE IN DEN AKKU LADEN 35 RIM NMOUT :INTERRUPTMASKE HEX AUF BILDSCHIRM AUSGEBEN 36 CALL :UNTERPROGRAMM ZEI T AUFRUFEN 37 CALL ZEIT 38 POP B :REGISTER FUER UNTERBROCHENES PROGRAMM :AUS STACK REGENERIEREN 39 POP PSW :GENERELLE INTERRUPTMASKE FREIGEBEN 40 EI :RUECKKEHR AN UNTERBRECHUNGSSTELLE IN INTT1 RET 41 42 43 ***** UNTERPROGRAMM ZEIT ***** 44 :BEWIRKT EINE KONSTANTE ZEITUERZOEGERUNG FUER BILDSCHIRM-AUSGABE 45 B,0FFFH :ZAEHLGROESSE NACH BC LADEN 46 ZEIT: LXI :REGISTERPAAR eBC) DEKREMENTIEREN 47 DCX B A,C :UORBEREITUNG FUER NULLABFRAGE 48 MOU 49 ORA B :RETURN, WENN eBC) = 0 50 RZ ZEIT+3 Si JMP 52 END
("
ASSEMBLY COMPLETE,
USER SYMBOLS BLANf( A 0A 12 URST 55 A 0BOA
F5 C5 20 CDC606 CD2A0A Ci F1 FB C9
0A1D 0A1E 0A1F 0A20 0A23 0A26 0A27 0A28 0A29
0A14 CDA605 0A17 CD2A0A 0A1A C3120A
w
.... -.J
- 174 2.4.4
Unterbrechungssystem mit externen Unterbrechungs Steuerbausteinen
Als Beispiel für die Erweiterung der Unterbrechungseingänge des 8085 durch eine externe Unterbrechungssteuerung seien der Anschluß und die Arbeitsweise des verbreiteten programmierbaren Unterbrechungs - Steuerbausteins 8259 (bzw. dessen neuere Version 8259A) besc h rieben. Der programmable i n terrupt controller (PIC) ist eine Ergänzungseinheit im Sinne des Abschnitts 1 . 2 . 7 , die - wie ein Ein - /Ausgabebaustein programmiert - das Unterbre chungssystem des Mikroprozessors auch fu n ktionell wesentlich erweitert . Die 8 Unterbrechungseingänge IR~
(~nter r upt ~equest)
(höchste Priorität) bis IR7 (niederste Priorität) des Bau -
steins splitten die Priorität 5 des Eingangs INTR am 8085 wei ter auf (Bild 80). Mit Ausnahme der zwei Leitungen INTR/INT und INTA ist der Ansch l uß des Bausteins identisch mit dem An schluß eines Ein - /Ausgabebausteins an den Systembus . Mit Hilfe der Kaskadierungsansc h lüsse kön n en bis zu 9 Baustei n e des Typs 8259A mit 64 zusätzlichen Unterbrechungseingä n gen zusammenge schaltet werden. Zu der nur bei größeren Mikrocomputersystemen erforderlichen Kaskadierung mehrerer 8259(A) - Bausteine sei auf
- - - - - - - - - - - - - j ! - - - t - ' I A15 8 0 8 5
~
--------_~-.,---,-Jl D7-~
:r;:
INTA~~==========~~==~========~~
I NTR 1-- - - - - ,
INT INTA WR RD
D7 - ~
Steuer bus
A~
Erläuterungen : Kaskadierungs l eitungen **) V anlegen, wenn nur CC ein 8259A vorhanden
**)
*)
Bi ld 80
Unterbrechungsanforderungen
Un t erbrec h ungs-Steuerbaustein 8259A a m Systembus
- 175 die Hersteller-Handbücher 1151 und 1161 verwiesen. Die Schaltung des Sammel-Unter brechungseingangs IN
im 8088
ist im Prin zip nach Bild 81 realis iert. Die generelle Interrupt maske INTE maskiert auch den Sammel-Unterbrechungseingang INTR (vgl . Abschn . 2 . 4.2); d.h. mit (INTE) =
0 sind sämtliche exter -
nen Unterbrechungssteuerungen blockiert Wird der Baustein 8259(A) durch
INTR
RESET IN
r-18085
I I I I I I I I I
IR intern - - - __ INTA
Übertragen von Steuerwörtern in der Initialisierungsphase geeig net programmiert, läuft beim Er -
Bild 81 Prinzipschaltung des Unterbrech ungse inga n gs INTR im 8085
kennen einer Interruptanforderung folgender Dialog zwischen dem 8085 und dem 8259(A) ab: 1. Der 8259(A) unterbricht den MP 8085 durch ein Signal vom INT - Ausgang (Bild 80). 2 . Sofern es die generelle Interruptmaske (INTE) zuläßt , nimmt der 8085 nach Beendigung des lauf en den Befehls den Unterbrechungswunsch an, indem er einen INA-Maschinenzyklus (vgl. Tafel 7) mit dem Signal (INTA) = 0 fährt. 3 . Das INTA-Sign al veranlaßt den interrupt controller , den Ope rationscode des CALL - Befehls auf den Datenbus zu l egen , den der 8085 einliest. 4 . Ausgelöst durch den Operationscode CALL , fügt der 8085 zwei weitere Maschinenzyklen mit (INTA) = 0 an , in denen der 8259(A) als Antwort zuerst die niederwertigen 8 Bit (2 . INA-Zyklus) und dann die höherwertigen 8 Bit (3. INA - Zyklus) der Vektoradresse auf den Datenbus legt . 5 . Der 8085 nimmt die Adreßbytes entgegen und führt den Unter programmaufruf aus , der in ein der Interr uptnummer i zugeordnetes Int erruptprogramm i führt. (Arbeitet d er 8259A mit den l6-Bit Mikroproz essoren 8086/88 zusammen , weicht der Dialog von dem eben beschriebenen ab.) Der Baustein 8259(A) realisiert ein Mehrebenen-Interruptsystem mit Vektoradressen, in dem jedem Unterbrechungseingang IR i über das Verzweigungsschema gemäß Bild 82 ein Interruptpro -
- 176 i n terrupt request am 8259(A):
Vektor adressen vom
8i59 (A)
InterruptVektortabe ll e
~nterrupt
Erogramme
0
VA(0)
I- VEKTOR(0)
IP
IR 1
VA(l)
I - VEKTOR( l )
IP 1
VA(2)
I - VEKTOR(2)
IP 2
VA ( n )
I- VEKTOR(n)
IP n
IR
->
IR 2
IR n Bild 82
0
Verzweigung bei Mehrebenen - Interruptsystem
gramm I P i fest zugeordnet ist . Der interrupt contro l ler 8259 erzeugt die Vektoradressen VA(i) hardwaremäßig nach Bild 83 im Abstand ix4 bzw . ix8 bezogen auf eine Rumpfadresse, die i n der Initialisierungsphase an den Baustein übertragen wird . Die Vek toradresse VA(i) legt der interrupt control l er auf den Systembus. Sie zeigt auf einen der äquidistanten Int erruptvektoren I - VEKTOR(i) im Speicher, in denen Sprungbefehle auf d i e Interr uptprogramme IP i
(mit beliebi g en Anfangsadressen) stehen .
Die Eigenschaften des Bausteins 8259A sind in 1151 und 1161 detai ll iert beschrieben . Im folgenden seien nur ein paar we sentliche Merkmale dieses leistungsfähigen, vielseitig ei n setzbaren interrupt contro llers herausgegriffen . Sein Verhalten ist
Interruptnummer i
(bei der Initialisierung ge l adene
**)
+
Rumpfadresse
fest *)
r---------------~--------------~\~~ AlS A14 A9 A8 A7 A6 A5 A4 A3 A2 Al A0
' - - - - - -__v , - - - - - - - . J A ' - - - - - - _ y
(3 . INA - Zyklus)
(2. INA- Zyklus)
'--------------_v~------------~J Vektoradresse VA(i)
*) wenn Adreßintervall 4 eingeste ll t **) mit i
Bild 83
= 000 ,
001 bis 111
x
= 0/ 1
Bildung der Vektoradresse VA(i) im Baustein 8259(A)
- 177 durch das Übertragen von Steuerwörtern (initialization command words leWs und operation command words Oews) an verschiedene Aufgabenste I lungen anpaßbar . Die Grundbetriebsart ist die voll verschachtelte Betriebsart (eng l. ful l y nested mode) . Sie entspricht weitgehend dem in Abschnitt 2.4 . 1 beschriebenen Verfahren mit festen Eingangs prioritäten , wobei zusätzlich die Laufpriorität berücksichtigt wird ; das aktuelle Interruptprogramm kann nur durch Unterbre chungsanforderungen höherer Priorität unterbrochen werden . Hat man in einer Anwendung mehrere Unterbrechungssigna l e von i m Prinzip g l eicher Priorität , die nacheinander ber ücks i chtigt werden sollen, wählt man die Betriebsart rotierende Prioritäten (eng l . rotating priority mode) . Bei automatischem Rotieren wird stets der eben bediente Unterbrechungseingang i auf die niedrigste Priorität gesetzt , der Eingang i+l erhält die höch ste Priorität usw. Beim Rotieren durch Software wird die j e weils niedrigste Priorität während des Betriebs durch Übertra gen eines Steuerworts festgelegt . In jeder Betriebsart sind die Interrupteingänge
IR~-7
des Bau -
steins durch ein Unterbrechungsmaskenregister selektiv sperr bar, wobei ein Maskierungsbit wahlweise nur den betreffenden Eingang sperrt oder diesen Eingang und alle Eingänge geringerer Priorität. Die Interrupteingänge des Bausteins sind durch ein Steuerbit auf Pegeltriggerung (high Pegel) bzw. auf Flankentriggerung (ansteigende Flanke) einstellbar .
- 178 3
3. 1
Hilfsmittel zur Programmentwicklung
Übersicht
Die Abläufe bei der Entwicklung eines Mikrocomputer - Programms wurden bereits in Bild 42 dargestellt. Man versteht darunter die Erstellung eines ablauffähigen Objektprogramms und den Test des Programms auf dem Mikrocomputer - Zie l system , auf dem das Programm ablaufen soll . Zur Un terstützung der einzelnen Entwicklungsphasen werden verschiedene Hilfsprogramme und Geräte eingesetzt . Der Erfolg beim Einsatz von Mikrocomputer schaltungen wird wesentlich durch die verfügbaren EntwicklungsHilfsm itte l mitbestimmt. Der Text - Editor ist ein Hilfsprogramm zur Eingabe und zur Kor rektur von Quellprogrammen (in Assemblersprache oder einer höher en Programmi ers prache) über die Tastatur eines Bedienge räts . Der Texteditor legt das eingegebene Programm in einer Quelldatei auf dem Hintergrundspeicher des Rechnersystems ab. Prog ramme in ihren verschiedenen Zuständen werden in Form von Datei en (engl. files) verwaltet. Eine Datei ist eine logisch zusammenhängende Datenmenge mit einem symbolischen Namen (s. Abschn . 3.2). Assembl er - bzw . Compilerprogramme übersetzen Quellprogramme in Objektprogramme , die zum Ablauf auf einem Mikrocomputersy stem bestimmt si nd. Zusätzlich zur Objektcode - Datei liefern die Üb ersetzer ei ne List -D atei , die das komplette Programmlisting (vgl . Beispiel 27) enthält . Linker (Binder) - und loca ter-Programme benötigt man nur bei der modularen Entwicklung von Mikrocomputer - Programmen
171.
Der linker verbindet mehrere selbständig übersetzte Objektmoduln, die in verschiedenen Sprachen geschrieben worden sein können, zu einem Programmkomplex . Oft werden ein Hauptprogrammmodul und mehr ere Unterprogrammmoduln zusammengebunden . Der locater setzt die bis dahin programmrelativen Adressen in ab solute Speicheradressen um (Ent re l ativierung) .
- 179 Ein Ladeprogramm (loader) bringt das ablauffähige Mikrocompu ter - Programm zur Ausführung bzw . zum Test in den Hauptspeicher . Das Monitor - Programm, auch als debugging-Programm bezeichnet , beinha l tet die wichtigsten Funktionen, die zum Bedienen des Mikrocomputers über eine Bedienkonsole (Sichtgerät, Fernschreiber oder Hexadezimaltastatur mit alphanumerischer Anzeige) er forderlich sind sowie einige Vorkehrungen zum Test von Program men (s . Abschn . 3.3) . Test - Emulatoren bilden das Verhalten eines Ziel-Mikroprozessors (meist) durch einen Mikroprozessor desselben Typs hardwaremäßig im Emulator nach. Der besonders be scha l tete Emulationsprozessor führt das zu prüfende Programm mittels Testhilfen wie Halte punkt - und Einzelschritt- Steuerung quasi auf dem Zielsystem aus , wobei er von einem übergeordneten (master) Prozessor ge steuert und überwacht wird . Der Emulator ist mit einem vielpo ligen Kabel über den Bausteinsockel des Zie l prozessors mit dem Zielsystem verbunden (Bild 84). Der Vorteil der Emulation be steht darin , daß im Zielmikrocomputer selbst keinerlei Testhil fen (weder Hardware noch Software) erforderlich sind. Der realtime tracer (Echtzeit - Ablaufverfolger) ist eine wert volle Erweiterung des Emulators; er nimmt die Zustände der
Test system
Mikro prozessor sockel
Entwick l u ngs programme
,,"
, )- - - - - ---
(Personal) Computer , mi t Per i pher ie
Emulator
v~--------------J
Zie l system mit Anwenderperipher i e
En t wick l ungssystem Bild 84
Trennung von Entwicklungssystem und Zielsystem
- 180 Daten -, Adressen- und Statusleitungen am emulierenden Prozes sor während jedes Maschinenzyklus auf und schreibt sie in ei nen sehr schnellen trace - Speicher . Dies geschieht beim Ablauf des zu testenden Programms im Echtzeitbetrieb auf dem Zielsy stem . Im Anschluß daran läßt sich der Programmablauf durch An zeigen der trace - Speicher- Inhalte rückwärts verfolgen. Nach dem erfolgreichen Test des Programms wird das ablauffähi ge Objektprogramm in der Regel mit einer Programmier - Einrich tung (PROM-/EPROM-programmer) in einem Festwertspeicher kon serviert. Bei der Programmierung von herkömmlichen Computern ist im all gemeinen das Zielsystem , auf dem das entwickelte Programm ab laufen soll , identisch mit dem EntwiCklungscomputer, auf dem das Programm erstellt bzw.erprobt wird. Computer ab einer ge wissen Leistungsklasse bieten die hardware- und softwareseiti gen Voraussetzungen für den Betrieb der beschriebenen Programme . Ein Emulator ist hier naturgemäß nicht erforderlich , eine realtime trace - Einrichtung ermöglicht auch im größeren Compu ter den Echtzeittest von Programmen , insbesondere im Bereich der Prozeßrechnertechnik. In der Mikrocomputertechnik herrschen andere Randbedingungen. Bei vielen technischen Anwendungen , die man etwa mit dem Be griff Geräteautomatisierung umreißen könnte , ist das Mikrocomputer-Zielsystem so klein , daß die hardwareseitigen Vorausset zungen (Bediengeräteanschluß , Speicherumfang , Testschaltungen , evtl . Betrieb von Hintergrundspeichern) für den Betrieb von Hilfsprogrammen nicht gegeben sind . Hier müssen Zielsystem und Entwicklungssystem gerätemäßig getrennt werden (Bild 84) . Das EntwiCklungssystem kann ein spezialisiertes Mikrocomputer - Ent wicklungssystem
1281 sein , das sämtliche Entwicklungshilfen
einsch l ießlich einem realtime trace - Emulator beinhaltet (s iehe Abschn. 3 . 4) oder ein Universa l rechner, häufig ein Personal Computer, auf dem die Entwicklungs-Hilfsprogramme laufen. Ne ben Text - Editor , Lader und Hintergrundspeicher - Verwaltung er möglichen Cross Assembler und Cross Compiler das Übersetzen von
- 181 Programmen für beliebige Ziel - Mikroprozessoren , di e nicht im Entwick l ungscomputer enthalten sind. Das Zielsyste m kann an den Universalrechner über ei nen externen Emulator angeschlos sen werden , der das übersetzte , ablauffähige Programm aufnimmt oder in das Zielsystem überträgt und den Test lauf unter den vorgegebenen Bedingungen durchführt . Der Emulator hängt dabei am Systembus des Universalrechners oder an e iner serie l len Schnittstelle (z.B. V. 24, s. Abschn . 5.1.3) . Hat man nur einen Universalrechner mit cross software , jedoch keinen Emulator zur Verfügung, so kann das überse tzte Programm über ein e serielle Kopplung in das Ziel system übertragen oder mit Hilfe einer Tastatur von Hand eingegeben werden (Bild 85 ) .
seri e lle Kopplung
system cross software
Universalrechner Personal Computer
Zielsystem Prototypensystem
Bedien Sichtgerät
System Design Kit Bild 85
Konfiguration bei Programm-Entwicklung ohne Emulator
In diesem Fall muß das Zi elsyste m üb er ein eigenes Betriebs und Testprogramm (Monitor) und di e notwendigen Peripheriean schlüsse verf ügen. Zur Übertragung des Programms aus dem Uni versalrechner (host computer) in das Zielsystem sind auch Da t e nträger wie Kassette, Di sket te oder Lochstreifen möglich. Zielsysteme mit den genannten Bedien- und Testmög l ichkeiten sind z . B. Prototypensysteme , Ein - Platinen-Baukastensysteme und Perso nal Computer . Statt großen Universalrechn ern werden in zunehmendem Maße preis werte Personal - Computer als host computer ohne oder mit externem
- 182 Emu lator eingesetzt . Di e Betriebssysteme CP!M , UNI X und MSDOS auf diesen Systemen gestatten ei ne kom fortab le Pro 1301 1311 grammentwicklung und Datenha ltun g für Mikrocomputer - Zielsyste me . Somit gibt es - abhängig von der verfügbaren Geräteausstattung - zwei Möglichkeiten des Programmtests (Bild 86.a und b). We nn im Zielsystem selbst keine Testhilfen zur Ver fü gu n g stehen , wie dies im Automatisierungsbereich oft der Fall ist , bleibt nur der Test mit dem Emulator.
a) Programmtest mit Emulator Objekt-
,--~_~_~_:_~_'_. . . HDUMP.OBJ auf floppy disc
Objekt-
~
. .~_~_~_~_m_~ . ~ Ö =>
Programmausführung auf Zielsystem unter Reg ie des Emu lators
im Zielsystem oder im Entwicklungssystem
8
b) Programmtest mit Monitor im Zi e lsyst e m Objektcode __d_a_t_e_i_~ HDUMP.OBJ auf floppy disc Bild 86
3. 2
Objektpro --.:>.... ......g_r_a_m_m_--' - r
~lon i tor
=:::;>
Programmausführung auf Zie lsystem un ter Regie des Monitors (debuggers)
~--------~vr----------,J
im Zi e ls ystem
Programmtest mit Emulator (a) oder Monitor (b)
Programm-Entwick l ung in Asse mblersprac h e (Beispie l)
Vor der weiteren Besch reib ung ei nz e lner Entwicklungs-Hilf smit t el sei an Hand eines Programmbeispiels (Beispiel 28, HDUMP) deren Einsatz erläut ert . Nac h der Erstellung des Flußdiagramms (Bil d 90) und der Niederschrift des Progr a mms in der 8085 - As s e mbI ers pra che ASM85 wird das Mikrocomputer - Entwicklungssystem SME der Firma SIEM ENS bzw . MDS der Firma INTEL (Serie 11)
132 1
zur weiteren Programm - Entwicklung und Dokumen tation ei nges etzt .
- 183 Eine kurze Beschreibung der einzelnen Komponenten des Mikrocomputer -Entwicklungs systems folgt im Abschnitt 3 .4 . Die Eingabe des Quellprogramms HDUMP über die ASCII -Tastatur des Bedien-Sichtgerätes erfolgt unter der Regie des Text-Edi tors CRED IT im Entwicklungssystem, der ei ne QuellprogrammDatei (engl . source file) HDUMP . SRC auf dem Hintergrundspei cher anlegt (Bild 87) . Die Erweiterung des Dateiname n s . SRC (von
~ouE~e)
ist frei wäh l bar . Ansch l ießend wird der 808S - As-
sembler ASM80 MOD8S gestartet. Er holt den Quellcode aus der Datei HDUMP . SRC (der hier eine ORG - Pegelanweisung enthä l t) , übersetzt ihn, und l iefert den absolut adressierten Objektcode in einer Objektdatei mit dem Namen HDUMP.OBJ und ein ProgrammDo kument (program l isting) in der List-Datei HDUMP .LST. Die Er weiterungen . OBJ und . LST legt der Assemb l er fest. Läßt man den Inhalt der List - Datei ausdrucken , so erhält man ein vol lstä nd iges Programmprotokoll (program listing)
(siehe Bsp . 27
und Bsp. 28) das z un ächst die Unterlage für den Programmtest und danach ein wesent l icher Teil der Programmdokumentation ist . HDUMP . OBJ Objekt programm
HDUMP.SRC
RWIT ~~~_~_S~_~_~_1_er_~ ~ ~8 ~
HDUMP . LST
programm
Programm -l isting
--
BedienSichtgerät Bild 87
Text - Editor
Da tei
Assemblier programm
Dateien
Programm-E ingabe , Übersetzung und Programmspeicherung im Mikrocomputer - Entwicklungssystem (SME/MDS)
Au f gabenste Ilun g für Beispiel 28: In einem UnterprogrammHDUMP ist ein vorgegebener Hauptspeicherbereich hexadezimal ver schlüsselt auf dem Bildschirm des Mikrocomputer-Terminals darzus te llen. Jedes Speicherbyte ist als Folge zweier Hexade zima lziffern anzuzeigen und zwischen benachbarte Bytes ist je
- 184 -
ein Leerzeichen einzufügen, sodaß man z . B. erhält : 5A 4 1 3F 15IL . . Kommt ma'n auf dem Bildschirm ans Zeilenende , so fügt dessen Steuerung selbsttätig die Steuerzeichen Wagenrücklauf (CR) und Zeilenvorschub (LF) ein . Anfangsadresse u nd Länge des Speicher bereichs er h ält das Un terprogramm HDUMP vom a u fr uf e nden Pro gramm in den Registern HL (Anf~ngsadresse) und E (L änge in Bytes) . Der darstellbare Bereich ist somit h öchstens 255 Byte lang . Zur Lösung: HDUMP zerlegt j e des Speicherbyte gemäß Bild 88 in eine linke und eine rechte Tetrade, die a l s Hexadezima l zi f fern 15 .. . F interpretiert werden. Der 4- Bit Code jeder Hexadezimal ziffer ist in deren 7-Bit-langen ASCII - Code um zuwande ln und dann au f den Bi ldschirm auszugeben; der Bildschirm " verste h t " ASCI I-codi erte Zeichen .
Byte im Speiche r
11010:00101
~
I
Binär codierte Hexadezima l ziffer
~Ir-0- 0- 1""01
I
I
, ASCII - codierte Hexadezimalziffer
Byte auf Bildschirm Bild 88
1 ...0"T11-0-
Unterprogramm
t - -- CNHASC
0 -00.:...0-l.....1 10 101 100101
~/
____ __ Unterprogramm CO
A 2
Hexadezima l e Darstellung eines Bytes
Die Umwandlung e iner Hexadezimalziffer aus dem Tetradencode in den ASC II- Code geschieht in dem Unterprogramm CNHASC. Es erwar tet die binär versch lüsselte Hexadezimalziffer in de n rechten 4 Akkumulatorste ll en (rechtsbündig , die übrigen Ste llen sind gelöscht) und lie f ert die 7- Bit ASC II-Kombination in den Stel l en A6 . .. A15 des Akkumulators (die Stelle A7 ist gelöscht) . Das Verfahren der Codeumwandlung zeigt das Flußdiagramm in Bild 89 . Dabei er f ordern die Hexadezimalziffern 15
9 eine
andere Umwandlung als die Ziffern A . .. F , da von der Ziffer 9
- 185 -
(=
A
39H) zur Ziffer (=
41 H) ein Sprung
in der ASCII - Codierung erfolgt . Man vergleiche hierzu die Codetabellen in Tafel 2 und Tafel 3. Zur Ausgabe eines ASCII - Zeichens aus dem Akkumulator auf de n Bi l dschirm des Bediengerätes ist das Zeichen - Ausga beprogramm CO (eng l. ~onso l
~ut)
des Mo -
Bild 89 Codeumwandlung der Hexadezima lziffern von Tetradencode in ASC II- Code
nitorprogramms (s . Abschn. 3 . 3) aufzurufen , dessen Existenz im Zielsystem vora u sgesetzt wird . CO erwartet das auszugebende ASC I I-Zeichen rechtsbündig im Register C und kehrt erst nac h der Ausgabe des Zeichens in das aufrufende Programm ( HDUMP) zu rück . Zum Übersetzungszeitpunkt muß die Aufrufadresse des Moni tor - Unterprogramms CO dem Assembler bekannt gemacht werden (EQU - Anweisung im Programm-listing Beispiel 28) , damit er sie in den Aufrufbefehl CALL ... einsetzen kann . Den Gesamtablauf des Programms HDUMP veranschaulicht das Fluß diagramm in Bild 90 . Die Programmschleife wird für jedes anzu zeigende Byte einmal durchlaufen , das Konvertier - Unterprogramm CN HASC und das Ausgabe - Unterprogramm CO werde n jeweils zweima l aufgerufen . Beispiel 28 gibt das Programm- listing (Programmliste) für das Programm HDUMP wieder. Es ist der Ausdruck der l ist file (dt . Listendatei) HDUMP.LST , die der Übersetzer ASM80 MOD85 des Mikrocomputer - Entwicklungssystems angelegt und dem Betriebs system ISIS 11 zur Speicherung auf dem Hintergrundspeicher übergeben hat. Nach dem Aufruf des Assemblers (Bsp . 28 , 1 . Zeile) mit Angabe der Que ll datei : Fl:HDUMP.SRC meldet sich der Assemb l er mit
- 186 "1S1S - 11
Der Zusatz
" :Fl: " vor dem Dateinamen gibt die Nummer des floppy disc Speicherbyte Höherwertige rechtsbündig (A) - - fHH1~
holen Tetrade in Akku HEX
Laufwerks an, auf dem die Da tei HDUMP.SRC steht. Das ei gentliche Programm- listing be ginnt mit der Zeilen-Nummer (LINE) 1 und endet mit der Nummer 56. Wie schon beim Beispiel 27 er läutert, enthält das Programmlisting das eingegebene Quell programm und den vom Assembler für jede Programmzeile abge setzten Objekteode im Hexade zimalcode (Spalte OBJ) . Die line - Nr. kennzeichnet die mit dem Editor eingegebenen Zei len
Bleibt in einer Pro -
grammzeile die OBJ - Spalte frei , dann hat der Assembler bei der Übersetzung dieser Zeile kein e n Objekteode er zeugt. Dies ist bei einigen Assembler - Anweisungen (Pseu dobefehl e n) wie ORG, EQU und END und stets bei reinen Kommentarzeilen der Fall. Bei der Übersetzung eines Programms mit absoluten Adressen gibt die ORG-Anweisung vor der ersten codeerzeugenden Pro grammzeile die absolute Adres Bild 90
Flußdiagramm zum Programm HDUMP (Beispiel 28)
- 187 se des ersten belegten Speicherpl atzes an . Im Beispiel 28 wird in Zeile 18 der erste Programm- Speicherplatz
EC~~
(hexadezimal)
mit dem Operationscode 31 (hexadezimal) belegt, der sich bei ~EE~~H '
der Übersetzung des Befehls "L XI SP ,
ergibt. Die Spa l-
te LOC (engl. locati on) gibt die absolute Speicheradresse der für eine Programmzeile abge l egten Objektcodebytes an. Zum Bei spie l ist aus Zeile 26 zu e ntnehmen, daß für den Befeh l
"CALL
CNHASC " die drei Objektcodebytes "CD26EC " erzeugt und in die Speicherplätze
EC~A,
EC~B
und
EC~C
(hexadezimal) abgelegt wur -
den. Das Un terprogramm CNHASC schließt unmittelbar an das übergeordnete Programm HDUMP an und beginnt auf dem absoluten Adreß pege l EC26H (Ze ile 48). Di ese Adresse setzt der Assembler bytevertauscht in den o . g. CALL-Befehl in die Speicherplätze und
EC~CH
EC~BH
ein . An Hand de s Adreßpegels in der LOC - Spa l te und
des Objektcodes in der OBJ- Spalte kann man prüfen , ob der rich tige Ob j ektcode im Speicher steht und gegebenenfalls einze lne Speicherinhal te ändern . Im Interesse ei ner guten Lesbarkeit des Programms e mpfiehlt es sich , an den Anfang des Programms (vor die erste Asse mbl eran weisung) einen Programmkopf (vgl. Abschn. 2.3.5) zu st ellen , der ei ne kurze verbale Beschreibung des Programms enthält . Der Assembler übernimmt den Programmkopf wie a lle Kommentare mit in das l isting . Nach Absc hn itt 1. 4 . 3 legt der Assemb l er während des Übersetzens eine Symboltabelle (user symbols) an, die den im Markenfeld auftretenden symbolischen Namen die ermittelten absolute n Adressen bzw. Werte zuordnet . Di e Symboltabelle wird i n der list fi l e gespeichert und im Anschluß an die Programmzeilen ausgedruckt (Beispiel 28) . Durch den Steuerparameter DEBUG beim Aufruf des Assemblers wird die Symboltabelle als zusätzliche Information in die Objektdatei übernommen , um im in circuit emulator mit symboli schen Namen arbeiten zu können 1331. Mit dem Steuerparamete r XREF (Beispiel 28)
legt der Assembler
zusätzlich eine Symbol - Que rve rwei s liste ( engl . symbol cross refer ence) an , die mit in die list file übernommen wird. Diese
EC00 EC03 EC04 EC0S EC06 EC07 EC08
EC00
000F 0411 0020
LOC
3100EE 7E 0F 0F 0F elF E60F
OBJ
***
HDUMP
***
6.12.83
SOUR CE STATEMENT
MODULE
SC HOLZE
PAGE
***
(Seite 188 - 189)
25
23 24
22
20 21
19
16 V 18 HDUMP:
15
LXI MOV RRC RRC RRC RRC ANI
MASKE ZUM AUSBLENDEN DER LINKEN TETRADE UNTERPROGRAMM AUS IM MONITOR ASCII-CODE FUER LEERZEICHEN
MASf(
(-- (A) UND 0FH, LOESCHEN DER LINKEN ~AKKUMULATORHAELFTE
~(A)
~PROGRAMM-ANFANG AUF ADRESSE EC0e1H B0aS-BEFEHLE SP,0EE00H A,M ~DARZUSTELLENDES BYTE IN AKKU HOLEN ~HOEHERWERTIGE TETRADE RECHTSBUENDIG IN DEN ~AKKUMULATOR STELLEN
0EC00H
0FH 0411H 20H
~A U SFUEHRBARE
ORG
EOU
EQU
EOU
~AUSGANGSPARAMETER:
~EINGANGSPARAMETER:
12 MASf( 13 AUS 14 SPACE
11
3 4 5 6 7 8 9
ANFANGSADRESSE IM REG.-PAAR HL BEREICHSLAENGE IN BYTES IM REG E KEINE ~WIRKUNG: HDUMP STELLT DEN ANGEGEBENEN BEREICH DES HAUPTSPEICHERS AUF DEM BILDSCHIRM DES f(ONSOLGERAETS HEXADEZIMAL DAR. ZWISCHEN DIE BYTES SIND LEERZEICHEN EINGEFUEGT. ~RUFT AUF: UNTERPROGRAMM AUS DES MONITORS (AUSGABE EINES ZEICHENS) 10 ~PROGRAMM HDUMP LAEUFT AUF SMP-SYSTEM MIT MONITOR SMP-MON2
2
1
LINE
ISIS-II 8080/B08S MACRO ASSEMBLER, V4.1
ASMS0 :F1:HDUMP.SRC MODSS DEBUG XREF
Bei sp i e l 28: Pr o gramm HDUMP i n Assemblersprache (listing).
co
co
I-'
DA32EC DEeJ9 F64eJ C334EC F63eJ C9
NO ERRORS
CNHASC A EC26
ASSEMBLY COMPLETE,
USER SYMBOLS AUS A 13411
EC28 EC2B EC2D EC2F EC32 EC34
(,7
ENDE MASf(
A EC25 A 0eJeJF
4eJH UPEND 3eJH
9
HEXeJ9
10
A ECeJeJ A 0020
HEX09 UPEND
A EC32 A EC34
FUER ZIFFERN 13,1,2 •. 9 EINFUEGEN
HDUMP SPACE
~ZONE
ZUR UNTERSCHEIDUNG VON DEZIMALZIFFERN0 •• 9 UND PSEUDOTETRADEN A•• F SPRUNG, WENN (A) = 13,1,2, .•• 9 ASCII-CODE FUER ZIFFERN A•• F ERZEUGEN
48 CNHASC: CPI 49 50 JC 51 SBI 52 ORI 53 JMP 54 HEXeJ9: OR I 55 UPEND: RET 56 END
eJE2eJ CD11eJ4 23 1D C2eJeJEC CF
EC1B EC1D EC2eJ EC21 EC22 EC25
EC26 FEeJA
7E E6eJF CD26EC 4F CD11eJ'l
EC11 EC12 EC14 EC17 EC18
CALL CNHASC ~KONVERTIER-UNTERPROGRAMM AUFRUFEN 26 C,A MOV 27 CALL AUS ASCII-CODIERTE HEXADE ZIMALZIFFER AUF BILD28 SCHIRM AUSGEBEN: HOEHERWERTIGE TETRADE 29 A,M 313 MOV DARZUSTELLENDES BYTE ERNEUT HOLEN MASf( LOESCHEN DER LINKEN AKKUHAELFTE 31 ANI CALL CNHASC KONVERTIER-UNTERPROGRAMM AUFRUFEN 32 C,A 33 MOV 34 CALL AUS ASCII-CODIERTE HEXADEZIMALZIFFER AUF BILDSCHIRM AUSGEB EN : NIEDERWERTIGE TETRADE 35 MVI C,SPACE CODE FUER LEERZEICHEN IM AKKU ERZEUGEN 36 LEER ZE ICHEN AUF BILDSCHIRM AUSGEBEN CALL AUS 37 IN X H WEITERSCHALTEN AUF NAECHSTES SPEICHERBYTE 38 DCR BYTEZAEHLER DEKREMENTIEREN E 39 413 JNZ HDUMP SPRUNG IN DUMP-SCHLEIFE, WENN E = / 0 SPRUNG IN DEN MONITOR 41 ENDE : RST 1 42 43 * UNTERPROGRAMM CNHASC * 44 ~EINGANGSPARAMETER: (A) 4-BIT-HEXADEZIMALZIFFER (RECHTSBUENDIGl 45 ~AUSGANGSPARAMETER: (A) = 7-BIT ASCII-CODIERTE HEXADEZIMALZIFFER 46 ~ZERSTOERT FLAGS
EC0A CD26EC ECeJD 4F ECeJE CD11eJ4
'"
00
,....
- 190 enthält - nach Symbolen geordnet - Verweise auf alle Programm zeilen , in denen die Symbole im Operanden - /Adressentei l auf trete n (Bild 91) . In der mit
~
gekennzeichneten Zeilen - Nummer
ist der Name definiert.
ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2 .1 AUS CNHASC ENDE HDUMP HEX09 MASK SPACE UPEND
13U 26 41U 18U 50 12U 14U 53
28 32
34 4BU
40 54U 24 36 55U
31
37
CROSS REFERENCE COMPLETE Bild 91
Symbol-Querverweis liste zu Beispiel 28
Der gesamte Leistungsumfang des Assemb l ers im Entwicklungssy stem MDS/SME i st aus 133 1 zu entnehme n. Aus Pl atzgr ünden ka nn hier nicht auf die Fehlermeldungen des Assemblers eingega ngen wer den.
3.3
Monitor - Betriebsprogramm
Erzeugt man lauffähige Objektprogramme auf ei nern host computer (vgl . Bi l d 85) mit Hilfe von cross software , so werden Zi e l systeme benötigt, die das Laden , Starten und Austesten von Pro grammen im stand a l o n e - Betrieb ermög lich en . Zie l systeme mit diesen Eige n schaften sind Mikrocomputer - kits (z.B. SDK 85 von INTEL) , Experimentiercompu ter (z.B . ECB 85 vo n SIEMENS) auf eine r Leiterplatte oder ausbaufähigere Prototypsysteme auf mehreren Leiterplatten ( z . B. SMP - und AM S-Sys teme von SIEMENS , SBC - System von INTEL), die über einen Mik rocomp u terbus mit ei n ander verbunden sind ; auch die Personal Computer si nd hier zu nennen.
Diese Zielsysteme verfügen über Betriebsprogramme - auch Moni torprograrnme oder kurz Monitoren genannt -, die automatisch
- 191 nach dem Erzeugen eines Rücksetzimpulses auf Speicheradresse
0000
gestartet werden (vgl. Abschn. 1.2.5.1) und den Dialog
des Mikrocomputersystems mit dem Bediener herstellen. Das Monitorprogramm steht jederzeit aufrufbereit im Festwertspeicher des Mikrocomputers. Der Monitor ermöglicht dem Benutzer : die Steuerung des Mikrocomputers mit Kommandos über ein Konsolgerät (Daten - Sichtgerät) oder über eine auf der Mikro computerplatine integrierte Hexadezimaltastatur mit opto elektronischer Anzeige .
*
die hexadezimale Ein - jAusgabe von Programmen und Daten über das Konsolgerät mit Kommandos und durch den Aufruf von Unterprogrammen des Monitors. die Fehlersuche in Programmen mit Testhilfen wie Haltepunkt und Einzelbefehlssteuerung .
Zum Betrieb eines Monitors muß das Mikrocomputersystem folgende Hardware - Komponenten besitzen:
*
Einen Festwertspeicher (ROM, BPROM) zur Aufnahme des Monitorprogramms (ca.l KB bis 4 KB Umfanq) .
*
Lese - jSchreibspeicher zur Kellerung von Registerinha lten, als Hilfs-Speicherplätze für den Monitor und zur Aufnahme vo n Anwenderprogrammen im Teststadium .
*
Einen seriellen Datenkanal zum An sch luß eines Bediengeräts oder eine einfache Bedieneinrichtung auf der Leiterplatte .
*
Evtl. erfor derlich e Schaltungsvorkehrungen am Mikroprozes sor für die Ausführung der Einzelbefehlssteuerung und LEDAnzeigen. Eine Rücksetztaste oder ein Einschalt-Reset ist in jedem Fall notwendig .
3.3 .1
Monitor - Kommandos
Die grundlegenden Monitor-Kommandos sind in Anlehnung an den Monitor ei nes industriellen Mikrocomputer - Prototypensystems
134 1 in Tafel 18 zusammengestellt und erläutert . Kommandos
- 192 setzen sich aus einem Kommandosymbol , das die Fun ktion angibt - hier ein Großbuchstabe - , und angefügten Parametern mit Trennzeiche n ( e ngl . delimiter) zusammen. Nach Tafel 18 können Par ameter sein: Registernamen (reg), Speicheradr esse n ( adr) und Dat en (dat). Mehrere Parameter sind durc h Trennzeichen zu tre nnen; a l s Trennzeichen akzeptiert der zugrunde ge l egte Mo ni tor wahlweise Leerzeichen (blank), Komma oder l-vagenrücklauf . J edes Kommando wird durch e inen Wagenrücklauf (CR) abgeschlossen bzw . z ur Ausf üh rung gebracht . Tafel 18
Monitor - Kommandos 1341
(~nsert)
I
I CR adr
(Seiten 1 92 - 194)
Eingeben in den Speicher h~'Mo' I'~ dat . . CR . . Eingabe von Programmen u nd Daten in .he= ·xadezimaler Form i n den RAM ab Adresse adr. Die Bytes dat werden in aufeinan derfo l ge nde Speicherzellen geschrieben. CR am Zeilenende, Beendigung der Dat e n~ ei ngabe durch Trenn zeiche n .
D (9.isplay)
Anzeigen von Speicherinhalten
D adrl adr2 CR v
Anzeigen der Speich erinha lte in hexa dezimal er Darstellung auf dem Bildsc hi r m von Adresse adrl bis einschließ lich adr2. Jede Ausgabezeile beginnt mit einer Adresse , gefolgt von maximal 16 Bytes , die durch Leerzeichen vone inander ge trennt sind . Oq, ,·,1 c' &j~_~ c:l02.0JC~'''~C ~f;SC/l-(c,rJt:.1
S
(~ubstitute)
s~a dr
M
dat - (dat) ..
(~ov e )
F"",
Nach der Ei ngabe eines Leerzeichens gibt der Monitor den Inhalt des Speic h er platzes adr hexadezimal mit nachfolgen dem Bi ndestrich auf dem Bi ldschirm aus. Fa ll s gewünscht , kann der Inha l t durch Eingabe zweier Hexadezimalziffern über schrieben werden , sonst mit Leerzeichen zum nächsten Speicherplatz weiterscha l ten. Beende n des Kommandos mit CR. Verschieben vo n Speic h er b ereic h en
M adrl adr2 adr3 CR 'i~,,"1
An zeigen und Ändern von Speicherinhal ten
;>,~(
Die Inha l te der Speicherplätze des Ur spr ungsbe reichs von adrl bis adr2 we r den i n de r gleichen Reihenfolge byteweise in den Zie lbereich ab adr3 über tragen.
- 193 -
F (fill)
Speicherbereich mit Konstanten füllen
F adrl adr2 dat '-'s~",t E\cl ß't1"
Die Speicherplätze von adrl bis adr2 werden mit einer Folge von max. 16 8- Bit - Konstanten (dat) gefüllt. Bei Be darf wird die Folge sooft wiederho l t , bis die Endadresse erre i c ht ist. Been den des Kommandos mit CR.
x (e!!.amine)
Anzeigen und Ändern von Registerinhalten
X CR
a) Anzeigen a ller Registerinha l te
I
.. in einer Zeile ohne Änderungsmöglichkeit . Angezeigte Register : A, B, C , 0, E, H, L, M (=HL) , P (=PC) , S (=SP) , F, I (vgl . Bild 45) . Form der Anzeige: A=5F B=~2 C=~~ D=4A E=43 H=EC L=l~ M=EC1~ ... x
reg CR
b) Anzeigen eines Registers mit Än dern ,
reg = dat (dat) CR
falls gewünscht . Nach der Eingabe des Registernamens reg (s . o.) gibt der Moni tor aus : reg=dat bzw. reg=adr . Auf Wunsch kann der Registerinhalt mit einem neuen ~Iert überschrieben werden. Beenden des Kommandos mi t CR. Soll der alte Wert erhalten bleiben , nur mit CR beenden . Für beide Varia nt en des X- Komma ndos gilt , daß nicht die augenblicklichen Inhalte der Register angezeigt bz~ ge ändert werden , sondern die in einem SChattenspeicher (im RAM) zu l etzt abgelegten Registerinhalte (z.B. nach Verlassen des Anwenderprogramms) .
G ( 9.0) G adrl adr2 adr 3 CR ~1a.,t
.sj~pl
S;.~1.
Starten eines Programms Das Programm im Hauptspe ich er wird ab Adresse adrl gestartet. Wahlweise können ein oder zwei Haltepunktadressen adr2 und adr3 im Kommando angegeben wer den , die auf das erste Byte von Befeh len zeigen müssen. Der Mikroprozessor verzweigt dann vor der Ausführung des adressierten Befeh l s in den Monitor auf Adresse ~~~8H . Die Registerinhalte im Haltepunkt wer den in den Schattenspeicher abge l egt und könn e n z .8. mit dem X- Kommando a ng ezeigt werden. Programmfortsetzung im Ha lt epunkt mit : G CR . Der Haltepunkt wird nach einmaligem Anha l ten gelöscht .
I
- 194 -
Während im Monitor gearbeitet wird, sin d Interrupts gesperrt . Endet ein Programm mit dem RST1-Befehl , werden die Regi,... sterinhalte ebenfalls in den Schattenspeicher abgelegt . Mit G CR wird der Befehlszähler PC aus dem Schattenspeicher heraus ge l aden. E (exe·cute T (-jvo.ce ) J:ns-t,-PtlC ';'on) E (adr) CR
xP.J P
x)(}(
-1 0 °.::--1
T
T.,
U.. ~nput
Einsabe von Datenkanal
)
PI port CR
--PO (!2.0rt
Das Programm ab Adresse adr wird im Ein ze lb efeh lsmodu s (single i nstruction) abgearbeitet . Nach jedem ausgeführten Befehl werden alle Registerinhalte auf dem Bildschirm angezeigt . Es können wei te re Kommandos zur Programmanalyse ver wendet werden. Danach Fortsetzung im Einzelbefehlsmodus mit : E CR bzw . Fortsetzu ng im Normalbetrieb mit:G CR . Die Registerinhalte einschließlich Be fehlszählerstand (PC) werde n hierbei aus de m SChattenspeicher aufgenommen, in den sie der Monitor nach jedem Befehls schritt ab l egt.
V.,-t.c..ce
PI (!2.0rt
Programmablauf im Einzelbefehlsmodus
~utput)
PO port dat CR
---------
Vom Eingabekan dlliiIt der Adresse port wi rd der-anstehende Bytewert eingelesen und hexadezimal auf dem Bildschirm an gezeigt . Aussabe an Datenkana-l- -
-
Das im Kommando hexadezimal definierte Byte dat wird über den Ausgabekanal mit der Adresse port ausgegeben.
Erklärungen zu Tafel 1 8: adr adrl adr2 port dat reg (
CR
Speicheradressen als 4stellige Hexadezimalzahlen Ein - /Ausgabeadresse (2stellige Hexadezimalzahl) Datenbyte als 2stellige Hex - Zahl Registername wahlweiser Parameter im Kommando in Klammern Steuerzeichen CR (carriage return) im ASCII Code
Zusätzlich zu den Monitorkommandos in Tafel 18 sind in den Mo nitorprogrammen verschiedener Her ste ll er vereinzelt weitere Kommandos verfügbar zur:
- 195 -
*
* * *
Bedienung einfacher Hintergr u ndspeicher (z.B. Audio-Kas sette) elektrischen Programmierung von EPROM-Festwertspeichern Lochstreifen - Ein - /Ausgabe Disassemblierung von Objektprogrammen im Speicher ( Test hilfe) Behandlung von Unterbrechungen 1341.
Ein Disassembler bewirkt die Rückübersetzung des im Speicher befindlichen Maschinencodes in die mnemotechnischen Abkürzun gen der symbolischen Assemblersprache ; Adressen und Daten blei ben in hexadezimaler Darstellung. Während des Programmtests er leichtert die Disassemb l ierung die Kontrolle der Objektprogramme im Speicher. Bei dem Monitor nach 1341 wird jedes Kommando während der Kom mandoeingabe durch ein unzulässiges Zeichen z . B . RUBOUT (ent spricht DEL= 7FH in Tafel 3) abgebrochen und ein neues Komman do angefordert. Ein bereits in Ausführung befindliches Konwan do l äßt sich während der Ein-/Ausgabe über das Bedien- Sichtge räte durch Eingabe des Zeichens ESC (vgl. Tafel 3) abbrechen. Eine laufende Ausgabe auf den Bildschirm kann durch gleichzei tiges Drücken der Tasten CTRL und S vorübergehend angehalten und mit den Tasten CTRL und Q wieder fortgesetzt werden . 3. 3. 2
Aufbau des Monitor - Programms
Der Aufbau von Monitorprogrammen entspricht im Prinzip dem Fluß diagramm in Bild 92 135 1. Die oberste Programmebene stel l t die Kommando - Entschlüsselungsroutine dar, die in die dem Kommando symbol entsprechende Ausführungsroutine verzweigt . Ist das ein gegebene Zeichen nicht a l s Kommandosymbo l definiert , wird ein Irrungszeichen (z . B. ? oder
# ) ausgegeben und mit dem Zeichen
> ein neues Kommando angefordert . Die Ausführungsroutine steu ert den Ab l auf des Komman dos - einschließlich dem Einholen der Parameter von der Tastatur -, wobei sie Arbeitsroutinen (engl . utilities) aufruft, die oft wiederkehrende Grundfunktionen wie Ein - /Ausgaben über das Bediengerät und Zahlenko n vertierun gen erledigen. Eine solche Arbeitsroutine ist z.B . das Unterprogramm CO (AUS) , das wie in Beispiel 28 mit CALL - Befeh l en auch vom Anwenderprogramm aus aufger u fe n werden kann.
- 196 Warmstar t 0008 :
Ka l t-
Bildschirm , pointer und Speicher zellen initialisiere
Retten der Register inhalte in den Schattenspeicher
Me l d un g auf Bildschirm : SMP-MON2 vx . y
> .0-____--1
display - Ro u tine
> "'-_ _ _ _--1 Befehl ausführen ,
Register anzeigen
> " - - - - - - - 1 f i ll- Rou t ine
> - - - - - - 1 insert - Routine
>~------1 move - Routine
> _ _ _ _ _--1 port input/ port output - Routine
~--------~ substitute - Routine
> "--____--1 Register - Anzeige Änder - Routine
> 0------1 go - Rou t i ne
oh n e/ mit Haltepunkten
'v'''--------~ error - Routine :
?
und
- 197 Das Rücksetzen d es Mikrocomputersystems
(entspr . Befehl
RST~ )
fü hrt gemäß Bild 92 in ein Ka l tstartprogramm (Initialisie rungsprogramm), das die serielle Konsol - Ein - /Ausgabe und ande re , evt l. vorha n dene Ein-/Ausgabebausteine i n einen arbe i ts fähigen Zustand versetzt (initialisiert) , einen Stack für den ~lonitor
definiert und bestimmte Speicherzellen im RMl vorbe -
l egt. An sch l ieße n d wird in die Melderoutine verzwe i gt, die nach
134 1 auf den Bildschirm der Konsole ausgibt: SMP - MON2 Vx.y .
Der daraufhin folgende Kommandoentsch l üssler gibt dem Bediener mi t
dem Zeichen> bekannt , daß er auf definierte Kommandos von
der Konsoltastatur wartet . Beendet man ein Anwenderprogramm mit dem Befehl RST 1, so wird i n die Warmstartroutine (Wiederanlaufroutine) des Monitors ver zweigt, die u.a. die Registerinhalte des Anwenderprogramms i n den Schattenspeicher ablegt . Sie können danach z.B . mit d em X- Kommando angeschaut werden. Si nd im G- Kommando Haltepunktadressen angegeben , dann ersetzt der
~l oni tor
vor dem Start des Programms den Or igina lb efehl ,
auf den die Haltadresse zeigt , durch einen " RST l "- Befehl , der in die Warmstartroutine des Monitors führt . Dieser setzt da rauf h in den Originalbefehl wie d er ein u n d stel l t
den Befe hl s -
zähler um 1 zurück. Es können dann nach Bedarf die Registe rund Speicherinhalte mit Hilfe der Kommandos analysiert werden . Setzt man das angehaltene Programm durch Eingabe von G CR fort , werden die Registerinhalte einschließlich des Befeh l szählers
Beispie l
29 :
Zur Anwendung der Monitor-Kommandos .
> G ECß'ß' ECß'7 # ECß'7 SMP - t10N2 Vx.y > X CR A=xx B=xx C=xx D=xx E=xx H=xx L=xx 11=xxxx S=EEß'ß' P=ECß'7 F=xx I= xx > G CR
<1
Bi l d 92
Strukt u r von Monitorprogrammen
- 190 aus dem Schattenspeicher geladen und das Programm fährt am Haltepun kt mit dem wieder eingesetzten Befehl fort.
Im Bei -
spiel 29 wird das Programm HDUMP (Beispiel 28) bei Adresse EC~~H
gestartet und an Adresse
EC~7H
angehalten.
Der Einzelbefehlsmodus (Tafel 18, E- Kommando) kann entweder rein softwaremäßig durch die E- Kommandoroutine 134 1 oder mit Hilfe eines Zählerbausteins realisiert werden , dessen Ausgang mit einem Unterbrechungseingang des Mikroprozessors (z . B. TRAP - Eingang des 8085) verbunden ist 136 1. Der Zählerbaustein wird für den single step-Betrieb so programmiert , daß immer genau ein Befehl des Anwenderprogramms abläuft, bevor die Unterbrechung wirksam wird und in den Monitor zurückführt. In der Kommandoroutine werden auch die Register in den Schattenspeicher gerettet und angezeigt . Tafel 19
Hilfs-Unterprogramme des Monitors 134 1
AUS Adr . : engl . : CO
~4llH
AUS gibt ein ASCII - Zeichen, das im C- Register übergeben werden muß, auf den Konsol - Bildschirm aus.
EIN
~539H
EIN h olt ein ASCII - Zeic h en von der Kon sol - Tastatur in das C-Register mit (Bit 7 = 0) und liefert im A- Register im Fal le einer Hexadezimalziffer deren binäre Codierung .
Adr. :
engl. : CI
BYAUS
Adr . :
~52 1 H
BYAUS gibt den Inhalt des Akkumulators in Form von 2 ASCII - codierten Hexadezimalziffern auf den Bildschirm aus . Zur vlirkungsweise vgl. Bild 88!
engl. : NMOUT
HOLAD
Adr . :
~56EH
HOLAD empfängt eine Fo l ge von Hexadezi malziffern von der Konsol - Tastatur und legt die letzten 4 Zeichen vor einem Trennzeichen ( , , ,CR) in das-Register paar HL . Falls nur ein Trennzeichen eingeht, wird (CY) = ~ gesetzt , sonst (CY) = 1
KONV
Adr. :
~644H
KONV wandelt eine 4- Bit- Ziffer (rechts bündig) im Akkumulator in die entspre chende ASCII - Codierung um . (Bit7) =~.
~55~H
ZIFF? liefert zu einer ASCII - codierten Hexadezimalziffer ~ .. F im Akkumulator deren Binärwert rechtsbündig im Akku .
engl. : PRVAL ZIFF?
Adr. :
engl. : CNVBN
- 199 -
3.3.3
Hilfsprogramme des Monitors
In Tafel 19 sind einige wichtige Arbeits -U nterprogramme (u tili ties) von Monitoren zusammengestellt , die in Anwenderprogrammen oft aufgerufe n werde n. Neben den Programmnamen nac h 134 1 sind die e ngli sche n Bezeichnungen der entsprec henden
Arbeitsrouti~
nen in den INTEL - Monit oren , z . B. nach 136 1 angegeben, die sich in ihrer Wirkung im Prinzip - jedoch nicht in allen Einzelheiten - g l eichen . Beim Aufruf mit " CALL name" muß die physikali sche Adresse nach Taf el 19 dem Übersetzer mit Hilfe einer EQU Anweisung bekannt gemacht werden . Neben der Parameterübergabe ist se hr sorgfältig zu beachten, welche Register durch das auf gerufene Unterprogramm zerstört werden . Der hier zugrundegelegte Monitor bietet außerdem eine Anzahl von Arbeitsroutinen, deren Parameterübergabe nach der PL/M- Kon vention ( vgl . Abschn . 2 . 3.8) organisiert ist ; diese Programme könn e n von PL/M - Programmen aus aufgerufen werden.
3.4
Mikrocomputer - Entwicklungssysteme
Mikrocomputer - Entwicklungssysteme beinhalten alle Hardware und Software - Hi lfsmi ttel für die effektive Entwicklung von rÜkrocomputer - Programmen. Das Flußdiagramm in Bild 42 gibt alle Entwicklungsschritte an , die von der Aufgabendefinition bis zur Konservierung des ablauffähigen Objektcodes in einem Fes twertspeicher au s zuführen sind . Im Abschnitt 3 .1 wurden die Hil fsprogra mme u nd di e Emulations- und Koppe l ei nrichtun ge n al l gemei n b eschr ieben , die die einzelnen Entwicklungsschritte un terstützen bzw . automatisieren . In diesem Abschnitt soll auf spezialisierte Mikrocomputer - Ent wi cklungssysteme eingegangen werden , die bei der Programmentwicklung für d ie Reihe der 80 ' er Mikroprozessoren ei ngesetzt werden . Die Systeme SME bzw . MDS (vgl . Abschn . 3 . 2) der Serie 11 für die Entwicklung mit 8- Bit- Mikroprozessoren sind se hr ausbaufähig und dann auc h für 16-Bit Mikroprozessoren und Ent wic klungs system- Netzwerke geeignet . Aus Koste ngründen wird zu ne h me nd der Personal Computer a ls Zentraleinheit von Entwick -
- 200 -
lungssystemen eingesetzt , an die der Test-Emulator und die übrige erforderliche Peripherie angeschlossen ist (Bild 93). Eine einigermaßen befriedigende Beschreib ung des Mikrocomputer Entwicklungssystems SME/MDS würde den Rahmen dieses Skriptums sprengen. Trotzdem soll versucht werden , Struktur u nd Wirkungsweise dieses Standardsystems auf wenigen Seiten zu umreißen , um dem zukünftigen Anwender eine Vorstellung von der Arbeits weise und dem Leistungsumfang derartiger Geräte zu gebe n. Die Einarbeit ist am wirkungsvollsten , wenn sie durch mög lich st viele Bedienübungen am vorhandenen System unterstützt wird.
3.4. 1
Struktur eines Mikrocomputer - Entwicklungssystems
Die wesentlichen Hardware - und Softwarekomponenten des Entwicklungssystems SME/MDS sind in Bild 93 1371 zu erkennen . OSS . .
MO'
-~
UPP
~~;-;-~-- -- ---i==~.::=:,~ ws
Bi l d 93 Systemstruktur des Entwicklungssystem SME/MDS
~
m==:
~=:_---------~
I I
I I
iL _______ .JI ""s
Die ze ntr ale Verarbeitungseinheit des Entwicklungssystems SME/MDS 138 1 ist zusammen mit der Datensichtstation DSS, dem Standard-Bediengerät, zu einer Einheit zusammengefaßt . Die Zentraleinheit besteht aus MULTIBUS(I)-Platinen, die als Haupt -
- 20 1 prozessor den 8085 , 64 KB Speicher und Peripherieschnittstel len für die abgebildeten Peripheriegeräte
beinhaltet. Neben
dem Hauptprozessor (engl. master processor) enthält die Zen traleinheit weitere Mikroprozessoren zur Steuerung der periphe ren Schnittstellen. Für die Speicherung der umfangreichen System-S oftware (mehrere 100 KB) und der Anwenderprogramme s ind im Zentra lgerät ein floppy disc -L aufwerk mit einfacher Schreib dichte (Speicherkapazität 250 KB) fest eingebaut und nach Be darf weitere floppy disc-Speicher (FDS) mit doppelter Schreibdichte (Speicherkapazität 500 KB pro Laufwerk) oder Winchester disc - Laufwerke mit je 35 MB Speicherkapazität (MPS d.h. Elatten~peicher)
~agnet
anschließbar . Letztere sind dabei , die wesent -
lich l angsameren Diskettenspeicher zu verdrängen . Die Ausgabe von Programm-listings erfolgt über einen Matrixdrucker (MDR) mit 1 36 Zeichen/Zeile, der über eine CENTRONlCS - Schnittstelle (s. Abschn . 5 . 3.4) mit der Zentraleinheit verbunden ist. Das universelle PROM-Programmiergerät (UPP) dient zum Einschreiben von ablauffähigen Programmen in die gängigen EPROM-Baustein typen (z.B 2716, 2732, 2764, 27128). Man benötigt hierzu "persönliche " Programmiermoduln mit Adaptersockel für die Pro grammierung eines Bausteintyps oder einer Familie von Baustei nen. Die Programme werden vom Hintergrundspeicher ge holt und Byte für Byte in den Festwertspeicher übertragen. Zum sichtba ren Emulationsadapter, der nur Leitungstreiber enthält , gehö ren zwei Leiterplatten im Zentralgerät und ein Software - Paket . Sie bilden zusammen den in circuit emulator (lCE) oder Echtzeit - Test-Adapter (ETA) . Als in circuit emulator
bezeich -
net man einen Emulator, dessen emulierender Prozessor von demselben Typ ist wie der emulierte Ziel-Mikroprozessor . Das Flachbandkabel stellt die Verbindung zum Zielmikrocomputer über dessen 40 - poligen Prozessorsockel her. Der lCE85 ermöglicht den Programmtest auf dem 8085-Anwendersystem, ohne daß im Anwender syste m f ü r den Test irgendeine Vorkehrung getroffen wu rde. Die gesamte System-Software befindet sich auf den Hintergrundspeichern. Nach dem Rücksetzen des Systems ist daher zunächst ein Urladevorgang zu starten, der die wichtigsten Teile des Be -
- 202 triebs systems von einer Systemdiskette in den Ha u ptspeicher des Entwicklungssystems lädt . Diesen schrittweisen Ladevorgang initiiert ein Urladeprogramm (engl . bootstrap loader) in einem 256 Bytes umfassenden PROM - Baustein, der als Schattenspeicher parallel zu einem RAM - Bereich von 256 Bytes l iegt und nur wäh rend des Ur l adens aktiviert wird . Die System- Software des Mikrocomputer - Entwicklungssystems er füllt grundsätzlich dreierlei Aufgaben:
* Steuerung der Hardware - Komponenten des Entwicklungssystems * Unterstützung der Programmentwicklung * Programmtest auf Mikrocomputersystemen Der 2 KB lange , in einem Festwertspeicher residente Monitor des Entwicklungssystems enthält die e l ementaren Ein-/Ausgabe programme für alle Peripheriegeräte mit Ausnahme der Hinter grundspeicher . Auch die Bedienung des PROM - Programmiergeräts unterliegt dem Monitor. Er wird mit einem Satz von Kommandos über das (auswählbare) Konsolgerät gesteuert , der entsp r ec h end den erweiterten Aufgaben umfangreicher ist als der in Abschnitt 3 . 3 beschriebene Kommandovorrat. Unter der Regie des Monitors können Programme ablaufen und getestet werden. Findet der Urla der nach dem Rücksetzen keine Systemdiskette im festgelegten Laufwerk (Laufwerk
~
oder 4) , dann erhält der Mon i tor die Regie
und meldet sich mit : MDS - MONITOR , V2.0. Findet der Urlader - was den Normalfa l l darstellt - eine gülti ge Systemdiskette im Diskettenspeicher, dann aktiviert er das plattenorientierte Betriebssystem ISIS 11 , d . h . der Urlader initiiert das Laden der wichtigsten Betriebssystemprogramme von der Diskette in den RAM des Entwicklungssystems und meldet sich mit : ISIS 11 , Vm.n Der Bindestrich am Zeilenanfang bedeutet, daß nun ISIS - Komman dos eingegeben werden können. Das Betriebssystem I SIS 11 139 1 ist eine Gruppe von Programmen zur Verwaltung von Dateien und Peripheriegeräten . Es verwaltet die gesamte Information eines Systems (Programme und Daten) in Form von Dateien. Nach dem Ur -
- 203 -
laden bleibt der Betriebssystemkern (etwa 12 KB bei ISIS II) ständig im RAM resident, während die übrigen ISIS-Programme ebenso wie Anwenderprogramme nur bei ihrem Aufruf in den Hauptspeicher des Entwicklungssystems geladen , ausgeführt und danach überschrieben werden. Zur Durchführung von Ein-jAusgabeoperationen ruft ISIS II die bereits im Monitor vorhandenen Unterprogramme auf ; lediglich die Software - Schnittstelle zu den Hintergrundspeichern (floppy discs und Winchester drives) ist im ISIS - Kern enthalten . Nach 1391 können die folgenden ISIS -I I - Funktionen (utilities) durch Kommandos vom Hintergrundspeicher geladen und ausgeführt werden . Es handelt sich dabei um Kommandos - zur Einteilung einer Diskette bzw. Magnetplatte in Informationsblöcke von je 128 Bytes (Formattierung) und zur Wartung von Disketten . - zur Ausführung von Programmen unter ISIS- oder Monitorregie. -
zur Dateisteuerung und -verwaltung. Dateien können kopiert , umb e nannt, ge l ösc h t und auf Peripheriegeräte ausgegeben werden . Die Eigenschaften einer Datei (Attribute) sind änderbar und die Inhaltsverzeichnisse von Disketten (engl . file directo ries) können angezeigt werden .
- zur Codeumwandlung von Objektdateien . Dabei wird jedes Byte der Objektdatei nach Bild 88 in zwei ASCII - codierte Hexadezimalziffern zerlegt (Kommando OBJHEX) und umgekehrt (Kommando HEXOBJ) . Bild 94 zeigt , wie die nichtresidenten Kommandoroutinen (utili ties) und die Systemprogramme wie Editor (CREDIT) , Assemb l er (ASM8~),
Sprachübersetzer (PLM80) , Emulationsprogramm (ICE85) ,
Binder (LINK), Locater (LOCATE) und Bibliotheksprogramm (LIB) vom residenten Systemkern aufgerufen werden und nach Been di gung ihrer Funktion die Regie wieder an den Systemkern zurückgeben . Die Aufgaben der Systemprogramme sind in Abschnitt 3 . 1 kurz er läutert , der Ablauf der Programmerstellung mit Editor und Assembler des Entwicklungssystems ist in Bild 87 dargestellt . Die LIB-Funktion gestattet es, Bibliotheksdateien anzulegen , die häufig benötigte Programme und Unterprogramme in Form von (übersetzten und relativ adressierten) Objektmodu l n enthalten . Bi bliotheksdateien können beim Binden von Programm-Moduln als
- 204 Eingangsdateien aufgeführt werden . Das LINK - Programm binde t dann nur diejenigen Programm-Moduln aus der Bibliothek zum Hauptmodul , die aufgerufen werden . Z. B. enthält die Bibliotheksdatei SYSTEM.LIB diejenigen Systemprogramme des Entwick lungssystems , die in Anwenderprogrammen aufgerufen werden können .
Bild 94
Str u ktur des Betriebssystems ISIS -I I
139 1
Die ISIS-II - Kommandofunktionen können auf drei Arten zur Aus führung gebracht werden :
* Durch direktes Eingeben des vollständigen Kommandos von der Konso l tastatur oder
*
durch Systemaufrufe in Assembler- und PLM - Programmen oder
* mit Hilfe des SUBMIT-Kommandos aus einer Kommandofolge-Definitionsdatei (command sequence definition, CSD) heraus. Z.B. können sämtliche Kommandos zum Übersetzen , Ausdrucken , Binden und Lokatieren eines Programms (mit dem Editor) in eine Datei ENTW . CS D eingetragen und mit dem SUBM IT- Kommando be l iebig oft (für verschiedene Ob j ektmodu l n) zur Ausführung gebracht werden. Der Assembler ASM8ß MOD85 des Entwicklungssystems ist ein Ma kro-Assembler, d . h . kürzere Befehlsfolgen , die an verschiedenen Stelle n eines Programms benötigt werden, können einma l als Ma kro unter einem Makronamen definiert werden (Makrodefinition). Bei jedem Makro-Aufruf mit dem Namen des Makros (Beispiel 30) wird an die Aufrufstelle die definierte Makro- Befehlsfolge eingesetzt (Makroexpansion) . Die eingesetzten Befeh l e werden vom
- 205 Assembler in den Maschinencode übersetzt. Die vollständige Makrodefinition einschließlich der Makro-Parametrierung ist in [7[ gegeben.
Beispiel 30: Makrodefinition. Die Befehlsfolge , die den Akkumu latorinhalt um vier Stellen nach rechts verschiebt und die linke Akkumulatorhälfte auf
~
setz t, ist a l s Makro ROTATE zu defi-
nieren. ROTATE
MACRO RRC RRC RRC RRC ANI ENDM
; MAKRO - Anweisung MAKRO-Rumpf ~FH
;MAKRO-Ende-Anweisung
HAU P T P R 0 G R A M M
NN:
ROTATE
;MAKRO-Aufruf ; Ab der Stelle NN wird der Makrorumpf ; eingefügt (MAKRO-Expansion).
Eine sich öfter wiederholende Befehlsfolge kann wahlweise als Makro oder als Unterprogramm (vgl . Abschn. 2 . 3 . 5 und 2 . 3 .8 ) defi ni ert werden . Die Gegenüberstellung der zwei ähn lichen Pro grammierverfahren ergibt : Bei Mehrfach - Aufruf benötigt das Unterprogramm weniger Spei cherplatz , weil es nur einmal im Speicher steht, braucht jedoch mehr Zeit für Aufruf , Rückkehr und Parameterübergabe während der Programm-L aufzeit. Der Makro wird mehrfach in das Anwender programm hineingesetzt , belegt daher mehr Speicherplatz , ist jedoch in der Ausführung schneller .
3.4.2
Grundbegriffe und Bedienhinweise
Adressierung von Dateien und Geräten . Im Di skettenbetriebssystem 1515-11 [ 39 [ sind die Namen für Geräte und Dateien auf den Hintergrundspeichern nach dem folgenden Schema einheitlich benannt: [: gerät :] [dateiname] [.erweiterung]
- 206 Die eckigen Klammern sagen , daß einzelne Teile des Namens weg gelassen werden können . Der logische Gerätenamen :gerät: be steht aus zwei alphanumer i schen Zeichen von Doppelpunkten ein geschlossen (Tafel 20). Tafel 20
:~:}
: F2: :CO: :CI: : LP:
Einige Gerätenamen in 1515-11 139 1 Laufwerke :Fß: bis : F9 : für Disketten- und Plattenlaufwerke Konsol - Bildschirm Konsol-Tastatur Matrixdrucker
Bei Disketten und Platten benötigt man zur Identifizierung einer Datei auf einem Laufwerk zusätzlich einen Dateinamen bestehend aus 1 bis 6 alphanumerischen Zeiche n . Läßt man die Laufwerksbezeichnung vor dem Dateinamen weg , greift 1515-11 stets auf das Laufwerk : Fß : zu . Beispielsweise befindet sich die Datei PROG auf der Diskette in Laufwerk ß,
: Fl :PROG im
Laufwerk Fl . Di e Erweiterung des Dateinamens besteht aus 1 bis 3 alphanumerischen Zeichen; sie unterscheidet Dateien, die das selbe Programm in
verschiede ner Darstellung enthalten (vgl .
Abschn . 3.2). Die Erweiterung ist teilweise vom Programmierer anzugeben und t ei lweise vom 5ystem her festge legt . In Tafel 2 1 Tafel 21
Bedeutung d e r Dateinamens - Erweiterungen in 1515-11
: Fl:PROG . 5RC
vom Benutzer eingegebenes QuellprogrammPROG, Erweiterung frei wählbar
:Fl:PROG.BAK
ist die alte Quelldatei, die I51 5 -II anlegt , wenn die Quelldatei (PROG . 5RC) geändert wird
:Fl : PROG . OBJ
Objektdatei , enthält den Objektcode, vom Assembler er zeugt
: Fl : PROG . L5T
List - Datei (vgl. Beispiel 28) , vom Assemb l er erzeugt
:Fl : PROG.LNK
enthält de n aus mehreren Programmmoduln ge bundenen , relativ adressierten Objektcode, v om Binder LINK erzeugt
:FI : PROG
e nthält ab s olut adressi e rten Objektcode als Ergebnis des LOCATE - Laufs
- 207 sind verschiedene Date i en mit dem Namen PROG auf Laufwerk : Fl : e rläut e rt. Sämt lich e Dateien auf einer Diskette (maximal 200 Dateien pro Di skette) werden bei ihrer Einrichtung in ein Inhaltsverzeich nis
(engl. file directory) auf der Diskette eingetrage n. Gi bt
ma n da s ISIS-II-Komma n do DIR (oder DIR 0) auf der Tastatur ein , wi rd das Inhaltsverzeichnis der auge nblicklich im La ufwerk 0 befindlichen Diskette auf dem Konsol-Bildschirm angezeigt. Das Kommando DIR 1 TO : LP : bewirkt , daß das Inhaltsverzeichnis der im Laufwerk 1 befindlichen Diskette auf den Matrixdrucker ausgegeben wird (Bi ld 95 ) . Für j e de Datei ist d ie Anzahl der Blökke (BLKS) von j e 1 28 Bytes Länge angegeben , die sie auf d er Di skette belegt .
DIRECTllRY OF :F1 :BSPD1 .. NOS LENGTH ATTR NAME .EXl BUCS 2el83 18 HDLJ MP • BAfC 4703 38 HDLJI1P .LST ,~07 3 PHI1 .. BAfC 2 8B P101 .OBJ 49 2 1'101 .LOC 210 3 PI01 .P LM 105 2 14/4004 BLOCKS USED Bild 9 5
NAME HDLJMP HOLJI1P PID1 PI01 PI01
.EXl BUCS .OBJ 3 .SRC 18 . LNfC 2 . LST 14 2 .HEX
LENGTH ATTR 16 4 2083 81 15B6 77
Inhaltsverzeichnis der Diskette : Fl :BSPD1 . NOS
Mit dem COPY -Kommando können Dateien zwischen Geräten übertra gen werden . Mit dem Kommando COPY : Fl : HDUMP . LST TO :LP : wird die List-Datei des Programms HDUMP auf den Matrixdrucker ausge geben (vgl. Beispiel 28). Eine formattierte 8 - Zo11 - Diskette mit doppelter Schreibdichte (engl . double density) und einer Speicherseite (engl . single sided) hat 77 Spuren mit je 52 Sektoren, was ei n e Speicherkapa zität pro Diskette von 4004 Blöcken zu j e 128 Bytes (; 512 K Bytes ) ergibt . Eine Datei belegt auf einer Diskette eine mehr oder weniger große Anzahl von Blöcken (Bild 95). Die physikali sche Adresse eines Blocks besteht aus Laufwerksadresse , SpurNummer und Sektornummer .
- 208 Texteditor CREDIT. Bei der Programm-Entwicklung ist als erstes das Quellprogramm in das Entwicklungssystem einzugeben (vgl. Bild 87). Eines der im Entwicklungssystem SME!MD5 verfügbaren Text - Aufbe reitungsprogramme ist der bildschirm- orientierte Text-Editor CREDIT
1401.
Er kann im Bildschirmmodus (engl. screen mode)
und im Kommandomodus (engl . command mode) arbeiten und von ei nern Modus in den anderen umgeschaltet werden (Bild 96) . Im Bildschirmmodus von CREDIT können Programmzeilen über die Kon soltastatur fortlaufend eingegeben werden, wobei die aktuelle Eingabeposition im Puffer durch eine Schreibmarke auf dem Bildschirm, ein blinkendes Unterstrichzeichen, angezeigt wird. Sind Änderungen, Einfü gungen oder Löschen von einzelnen Zeichen oder von
Zei~henfolgen
im eingegebenen Text erforderlich , können
diese mit Hilfe einfacher AUfbereitungskommandos im Bildschirmmodus vorgenommen werden. Die zu ändernde TextsteIle muß dabei natürlich auf dem Bildschirm angezeigt werden, was man durch Vor - und Zurückblättern von Text -" Seiten" (CREDIT -Kommandos CTRL!N und CTRL!P ) erreicht, CTRL!N erfolgt durch gleichzeitiges Drücken der Tasten CTRL und N.
Eine Textänderung wird sofort
in die Bildschirmdarstellung übernommen. Der Kommandomodus stellt komplexere Text-Aufbereitungsfunktionen wie Suchen und Ändern von Zeichenfolgen (engl. strings), Kopieren und Verschieben von Abschnitten und Editier - Makros
140 1
zur Verfügung .
In der Regel wird man mit dem Bildschirmmodus zurechtkom~enund nur in den Kommandomodus übergehen (Taste HOME drücken) , umaus
ISIS-II Betriebssystem - 1S15 -1 I-Kommandos
~~~'r:-=-F~~~Y_ , CREDIT Bildschirmmodus Schreibmarke
Bild 96
_._.~ ~~,;Q'
HOME
CRED1T Kommandomodus * KOMMANDO
IS1S - II Kommandos
CREDIT Kommandos
Übergänge zwischen 1515 - 11 und Text-Editor CREDIT
- 209 -
dem CREDIT - Programm wieder in das ISIS - II-Betriebssystem zu rückzukehren. Bi l d 96 zeigt die möglichen Übergänge zwischen dem ISIS-II-S ystemkern und dem Text - Editor CREDIT. Es ist zu beachten, daß in ISIS - II nur die ISIS - II - Kommandos und nach dem Aufruf des CREDIT - Programms ausschließlich d i e CREDIT - Komman dos ge l ten . Nach dem Aufruf des Editors mit z . B.: - CREDIT : Fl:HDUMP . SRC meldet sich CREDIT auf dem Bildschirm : ISIS - II CRT-BASED -TEXT EDITOR Vx . y und man befindet sich im Bildschirmmodus. Ist der eingegebene Dateiname HDUMP.SRC in der file directory der Diskette noch nicht vorhanden , dann erzeugt der Editor eine neue Datei dieses Namens und gibt in der n ächsten Zeile aus: NEW FILE BLKS LEFT = nnnn (nnnn ist Anzahl der freien Blöcke). Der Benutzer kann die leere Datei mit Text (Programmzeilen) fül l e n. Ist der eingegebene Name HDUMP.SRC
i~
Inhaltsverzeichnis
schon vorhanden , meldet sich der Editor : OLD FILE SIZE = mm BLKS LEFT = nnnn und der Benutzer kann den vorhandenen Dateiinhalt ändern , ergänzen, löschen usw. Hierbei ist zunächst der Textausschnitt von 20 Zeilen , in dem zu ändern ist , auf dem Bildschirm darzustellen (CTRL/N , CTRL/P) und die Sch reibmarke mit den 4 Cursor - Posi tionierungstaste n auf die zu ändernde Stelle im Text hin zu bewege n.
>,
1\ ,
< ,V
Will man vor -
handene Zeichen ersetzen, dann werden sie an der Cursor - Posi tion einfach durch neue Zeichen überschrieben. Einfügen eines Zeichens an der Position der Schrei bmarke erfo l gt mi t d em Kommando CTRL/C [ zeichen]. Der folgende Text wird um eine Stelle nach rechts v e rschoben . CTRL/D löscht ein Zeichen an der Posi tion der Schreibmarke. Die nachfolgenden Zeichen werde n um eine Stelle nach links verschoben. Ähnliche Kommandos gibt es für Zeichenketten . Das Kommando CTRL/A [ text] zufügenden Zeichen [text1
CTRL/A setzt die ein -
unmittelbar links neben der Schreib -
marke ein . Zum Löschen einer Zeichenfo l ge setzt man die Schreib marke auf das erste zu löschende Zeichen, gibt CTRL/Z ein , ver schiebt die Schreibmarke auf das letzte zu löschende Zeichen und gibt wieder CTRL/Z ein .
- 210 Eine Editiersitzung beendet man durch Rückkehr in den ISIS - IISystemkern nach Bild 96. Das Kommando EX (exit) im CREDIT - Kom mandomodus kehrt nach ISIS-II zurück , wobei die neu erste llt e oder die geänderte Datei unter dem Namen im Aufruf (HDUMP.SRC) auf die Diskette geschrieben wird . Stattdessen beendet das Kommando EQ die CREDIT - Sitzung , ohne daß die Diskettendatei verändert wird. Mit den 16 - Bit - Systemen hat INTEL den Text-Editor AEDIT ei n geführt . Auf den Personal Computern wird vielfach der StandardZeilen - Editor EDLIN verwendet 1671 . 3.4.3
Programmtest mit dem Testemulator
Aufbauend auf den Vorbemerkungen in Abschn . 3 .1 soll der Test emulator ICE85
(~n ~ircuit ~mulator
80~)
1411 des Mikrocompu -
ter - Entwicklungssystems SME/MDS erläutert werden . Er ermöglicht in der Anordnung nach Bild 84 einen Programmtest auf dem Ziel system einschließlich der Original - Anwenderperipherie , wobei der emu li erende Mikroprozessor 8085 durch die komfortablen Testfunktionen des Emulators gesteuert und überwacht wird . Die Kontrolle des emulierenden Mikroprozessors geschieht durch das Abfragen seiner Systembus - Leitunge n (Daten, Adressen , Status) und die gezie l te Beeinflussu n g einze lner Steuereingänge ( z . 8 . READY-Eingang) . Der Programm-Ablaufverfolger (engl . tracer) des ICE85 - Emulators übernimmt den Zustand der Systembus - Leitungen während jedes Maschinenzyklus ohne zusätzliche Zeitverzögerung in einen schnellen Trace-Speicher (realtime trace), in dem bis zu 1024 abgelaufene Befehle erfa ßt werden können . Die Hardware des Emulators einschließlich des Trace-Moduls is t auf zwei Leiterplatten im Entwicklungssystem realisiert , der emulierende Prozessor sitzt auf dem (40poligen) Sockel-Adap ter im Zielsystem. Die Hardware wird vo n der Emulator - Software ge ste uert , die mit dem Aufruf im ISIS - II - Betriebssystem - ICE85 in den Hauptspeicher des Entwicklungssystems geladen und gestar tet wird. Das Symbol * fordert dazu auf , nun Kommandos in der
-
211 -
I CE85 - Kommandosprache an der Konsole einzugeben . Das ICE85 - Kommando EXI T (CR) gibt am Ende einer ICE85- " Sitzung " die Kontrol le wieder ' an ISIS - II zurück . Die wichtigsten Testhilfe n des Emulators ICE85 sind im folgen den kurz erläutert . Beispiele für die entsprechenden ICE85 Kommandos enthält Tafel 22. Wegen der Fülle der Möglic h keiten kön nen die Funktionen des Emu l ators ICE85
141 1
hier nur aus-
zugsweise beschrieben werden:
* Symbolische Adressierung von Speicherplätzen und Ein-/Ausgabekanälen während des Tests. Die symbolischen Namen können entsprec hend der Symboltabelle verwendet werden , wen n bei der Übersetzung des Programms der Steuerparameter DEBUG (vgl . Beispiel 28) eingegeben wurde. In Tafel 22 . a ist das Symbol .HEX09 verwendet . Der Punkt vor dem Namen kennzeichnet die sen als Anwendersymbol . Darüberhinaus können in ICE85 Symbole mit de m DEFINE - Kommando der Symboltabelle hinzugefügt und dann in ICE85 - Kommandos venvendet werden .
* Die im Programm benötigten Speicher- und Ein - /Ausgabeberei che können für die Emulation wahlweise in das Zielsystem oder in das Entwicklungssystem gelegt werden , wenn z . B . die Hardware des Zielsystems im Teststadium noch nicht vol l ständig vorhanden ist . Diese Speicher- und Ein - /Ausgabekanal - Zu ordnung geschieht mit den MAP - Kommandos (Tafel 22 . b) vor dem Laden des Objektprogramms . Der Speicher wird dem zu testenden Programm in Blöcken von 2 KByte , die (8 - Bit) Ein - /Ausgabekanäle (ports ) werden in Gr u ppen von je 8 ports zugewiesen . Al l e nic h t
zugewiesenen Adreßbereiche sind zugriffsgeschützt
(guarded) ; ein Zugriff des Programms während der Emulation auf diese Bereiche wird mit einer Fehlermeldung und Abbruch der Emulatoin quittiert . Die Ausführung des Programms bzw . von Abschnitten des Programms kann als Echtzeit - Emulation mit dem GO - Kommando oder als Ei n zel sc h ritt- Emulation (single step emulation) mit dem STEP - Komman do gestartet werden . Der Bediener kann eine laufende Em ul ation jederzeit durch Drücken der ESC - Taste auf der Konsoltastatur
- 212 Tafel 22
Beispiele für Emulator-Kommandos (ICE85)
a) Symbolische Adressierung im Emulator *BYTE
;Das BYTE- Kommando zeigt den Inhalt des ; Speicherbytes HEX~9 an (vgl . Bsp. 28) .
. HEX~9
*DEFINE . DELIM = EC1BH ; Das DEFINE-Kommando weist der Adresse ; EC1BH für den Test den Namen DELIM zu. b) Speicher - und Ein-/Ausgabekanal - Zuordnung (mapping) *MAP MEM
~~~IilH
*MAP MEM
E8~~H
TO
~7FFH
= USER ;Der 2 KByte Adreßbereich ist ;im Zielsystem (USER) realisiert
= INTELLEC 28K
*MAP 10 E8H TO EFH = USER
; Der 2 KB Speicherblock E8~~H ; bis EFFFH (USER- Adressen) wird ;in den RAM des Entwicklungssy ; sterns ab Adresse 28 K geladen . ;Die 8 EA- Adressen sind im ;Zielsystem (USER) vorhanden .
c) Steuerung der Echtzeit- Emulation *GO FROM . HDUMP
;Programmausführung ab Marke ;HDUMP (Bsp.28) in Echtzeit ;ohne Haltebedingung.
*GO FROM . HDUMP TILL EC21H EXE
; Start der Echtzeit- Emulation ; ab Marke HDUMP bis zur Aus;führung (EXE) des an Adresse ; EC21H beginnenden Befehls.
d) Steuerung der Einzelschritt-Emulation *ENABLE DUMP
;Ausdrucke n von Systembusdaten ;und von Registerinhalten nach ; jedem Befehlsschritt (s . STEP).
*STEP FROM .HDUMP COUNT
l~
*STEP FROM .START COUNT
2~
; Ab Marke HDUMP sind 10 Befehle ;schrittweise auszuführen. TILL PC=ABCDH OR BYTE .CTR>35
;Ab START sind 2~ Befehle schrittweise ; auszuführen , jedoch Abbruch , wenn Be; dingung (PC) = ABCDH oder Bedingung ;(CTR»35 erfüllt. e) Kommandos zur Programmanalyse (Anzeigen und Ändern) *RA *RBC =
; zeigt den Inhalt des Akkumulators an EC~IilH
*PORT EDH *PRINT
- l~
; lädt Registerpaar BC mit
EC~~H
; zeigt das Byte am EA - Kanal EDH an zeigt die Systembusdaten der 10 zuletzt ausgeführten Befehle aus dem Trace speic her an.
- 213 abbrechen.
*
Bei der Echtzeit- Emulation wird das Anwenderprogramm gestar tet und mit der echten Ablaufgeschwindigkeit des Zielsystems bis zum Erreichen einer Haltebedingung ausgeführt (Tafel 22 . c). Die Haltebedingung oder eine Kombination von Bedingungen kann im GO- Kommando angegeben werden . Der Emulator hält nach der Ausführung des Befehls , in dem die Haltebedin gung erfüllt ist, und meldet sich mit EMULATION TERMINATED,
pe
=
nnnnH. Durch die Spezifikation FOREVER werden vorher
gesetzte Haltebedingungen unwirksam . Fehlt das Schlüsselwort FROM einsch lie ßlich Startadresse, wird das Programm ab dem letzten Haltepunkt fortgesetzt . Eine Echtzeit- Emulation ist nur dann wirklich gegeben, wenn die Hardware des Zielsystems (Speicher und Ein - /Ausgabe) vollständig vorhanden ist und bei der Emulation benutzt wird . Von Echtzeit-Emulation spricht man, wenn die Laufzeit (Ausf Ühr ungszeit) des Programms im Emulator unter Testbedingungen nicht größer ist, als die Laufzeit des ausgetesteten Programms ohne Emulator - Kontrolle . Muß der emulierende Pro zessor auf den Hauptspeicher und/oder Ein - /Ausgabekanäle des Entwicklungssystems zugreifen , so ist kein Echtzeittest im genan nt en Sinne gegeben . Während des Emulationslaufs übernimmt der Trace - Modul die Information auf dem Systembus (Adresse , Status, Daten) während jedes Maschinenzyklus für bis zu 1024 abgelaufene Zyk len in den Trace - Speicher , dessen Inhalt nach abgeschlosse ner Emulation angezeigt werden kann.
* Bei der Einzelschritt-Emulation (single step emu l ation) können nach jedem ausgeführten Befehl die Systembus - Zustände und Registerinhalte auf den Bildschirm ausgegeben werden . Im STEP-Kommando (Tafel 22.d) sind verschiedenartige Haltebedingungen zugelassen . Die Einzelschritt- Emulation ist natür lich keine Echtzeit-Emulation.
* Nach dem Abbruch einer Emulation können zur Analyse des ab gelaufenen Programms dessen hinterlassene Speicher - , Regi ster- und Port- Inhalte angezeigt und wahlweise über die
- 214 Konsoltastatur geändert werden (Tafel 22.e). Ein sehr wirkungs volles Hilfsmittel ist die Anzeige des Trace - Speicherinhalts mit dem PRINT-Kommando in 3 wählbaren Anzeigemodi. Da die Sy stembus-Zustände während der letzten 1024, vor dem Haltepunkt abgelaufenen Maschinenzyklen angezeigt werden können , läßt sich der (Echtzeit-) Programmablauf gut rückwärts verfolgen. Die Eingabe eines Kommandos in ICE85 wird stets mit Wagenrücklauf (CR) abgeschlossen; CR ist in Tafel 22 weggelassen. Es soll nun das Programmbeispiel HDUMP (Beispiel 28) mit dem Testemulator ICE85 unt ersuc ht werden . Beispiel 31 gibt das Druck erprotokoll des Testdia l ogs wieder, das durch das ICE85 Kommando LIST : LP:
(:LP : ist die " Datei"
~ine
Erinter) erzeugt
werden kann. In dem Testprotokoll ist die Reaktion des Emula tors auf die eingegebenen Kommandos enthalten . Im folgenden sind die Wirkungen der Kommandos in Beispiel 31 an Hand der Bezugsnummern kurz erläutert : ~
Die drei MAP -Kommandos legen die Speicher- und EA- Adres -
sen - Zuordnung für den Emulationslauf fest (s . Bild 97) . Die ab soluten Adressen im Programm HDUMP werden im Emulator auf die Programm-Anfangsadresse
7~~~H
(Offset) im Entwicklungssystem
umgerechnet . Im freigegebenen Ein-/Ausgabeadressen-Block E8 bis EF liegen die Konsolgeräte - Adressen EC und ED, die im Monitor des Zielsystems verwendet werden . ~ Laden d'e s ablauffähigen Anwenderprogramms HDUMP in den
Haupts peicher des Entwicklungssystems . ~
se
Starten des Monitors im Zielsystem (SMP -S ystem) ab Adres -
~~~~
bis zur Ausführung des a n Adresse
~~BAH
beginnenden Be-
fehls . Das Durchlaufen der Kaltstart - Routine des Monitors im Anwendersystem bereitet das Konsol-Sichtgerät auf die folgende Datenausgabe vor. ~
Laden der Anfangsadresse
(~~~~)
und der Länge (FF hex . )
des in Beispiel 29 darzustellenden Speicherbereichs in die Re gister HL und E mit ICE85-Kommandos . ~
Einzelschritt-Emulation von 3 Befehlen (COUNT 3) ab der
Anfangsmarke HDUMP. Das Vorab-Kommando ENABLE DUMP bewirkt , daß nach jedem ausgeführten Befehl die Systembus -Zus tände währe nd
- 215 -
Beispie l 31: Untersuchung des Programms HDUMP (Bsp. 28) mit dem Testemulator ICE85
(Testprotokoll) .
*M~P MEM 0000H TO 07FFH = USER *MAP MEM E800H TO EFFFH = INTELLEC 28K WARN C1:MAPPING OUER SYSTEM *MAP 10 E8H TO EFH ~ USER *LOAD :F1: HDUMP.OBJ *GO FROM 0 TILL 00BAH EXECUTED EMUL..ATlON BEGUN EMUL..ATION TERMINATED. PC=00BDH *RH 00 *RL.. = 00 *RE = FF ·)fENABLE DUI1P *STEP FR DM .HDUMP CO UNT 3 EMULATION 8EGUN EC00-E-31 EC01-R-00 EC02-R - EE P~EC03H S=EE00H A=0CH F=10H B=00H C=20 H D=FFH E=00H H=0 2H L=FF H I=87H 5) EC03-E-7E 02FF-R-CD P=EC04 H S=EE00H A=CDH F=10 H 8=00H C~20H D=FFH E=00H H=02H L. =FF H I=87H EC~1'!-·E -~)F
P=EC0SH S=EE00H A=E6H F=11H B=00H C=20H D=FFH E=00H H=02H L=FFH I=87H EMULATIDN TERMINATED. PC=EC06H *GO FROM .HDUMP TILL EC21H 6) EMl.ILATION BEGUN EMUL.ATION TERMINATED. PC=EC22H *R P=EC22 H S=EE00H A=20H F=B0H 8=00H C=20H D=FFH E=FEH H=00H l...o.'01H I =87 H 7) *BYTE 0 TD 5 0000H=C3H 40H 00H FFH FFH FFH *PORT EDH 45H *GO TILI... .ENDE } EMULATION BEGUN 8) EMULATION TERMINATED. PC=0008H *PRINT ADDR -S INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA } 1003: 0418 RET EDFE-R-20 EDFF-R-EC 1009: EC20 INX H 9) 1011: EC21 OCR E 1013: EC22 JNZ 1~17: EC25 RST EDFF- W- EC EDFE-W-26 *EXIT Anm . : Zu den Nummern 1) bis 9) siehe Erläuterungen im Text!
- 216 der Maschinenzyk l en und die Registerinhalte nach dem abgesc hl ossenen Befehl auf dem Bi ldschirm des Entwicklungssystems ange SP,~EE~~ H
zeigt werden. Der erste Befehl LXI EC~~ H
bis
EC~2H
auf den Adresse n
(des Anwendersystems) wird folgendermaßen pro -
toko l liert : (ADR) EC~~
(STAT) - E
(DAT)
(ADR) EC~l
- 31
(Zyklus MI)
(STAT) -
R
(DAT)
(ADR)
~~
-
(Zyklus M2)
EC~2
(STAT) -
R
(DAT) - EE
(Zyklus M3)
Erklärungen sind in Klammern hinzugefügt . Der Status E (exe cute) kenn zei chnet einen Befehlhol-Zyklus , der Status R
(~ead)
e inen Lesezyklus und We i nen Schreibzyklus . ~
Echtzeit - Emulation vom Programmanfan g bis z ur Haltepunkt -
Adresse EC 21H, sodaß der Befehl DCR E in Beispiel 28 als letz ter ausgeführt wird . ~
Mit den Kommandos R , BYTE und PORT werden die Inh alte
der Register , von Speicher ze llen und EA- Kanälen angezeigt, wie man s i e im Haltepunkt (hi er EC21H, nach Ausf üh ru n g des Befehls DCR E) vorfindet . Das Interruptregister I enthält dabei die Interruptmaske , wie sie der Befehl RIM liefert (vgl . Absc hn. 2 . 3.6). Das Byte - Kommando gibt die Inhalte der Speicherplätze ~~~~H
bis
~
Fortsetzung der Echt zeit - Emulation nach dem Haltepunkt
~~~5H
auf den Bildschirm aus.
mit (PC) = EC22H bis zur Marke ENDE im Programm HDUMP (Bsp . 28) . Der let z t e ausgeführte Befehl RSTI führt auf die Haltadresse ~~~ 8H
im Monitor des Zielsystems .
~
Mit dem Kommando PRINT - 5 werden die Trace - Speicherinha l-
te für die letzten fünf ausgeführten Befehle auf dem Bildschirm angezeigt. Im instruction mode
(=
voreingeste llter PRINT- Anzei -
gemodus) wird in einer Zeile (frame) die Befehlsadresse un d der disassembl ierte Befehl ausgegeben . Laufen außer dem Befeh l hol zyklus weitere Buszyklen (Speicher - oder Ein - /Ausgabezyk l en) ab, dann werden die Systembus - Zustände (ADDR-S-DA) für diese Zykl en in derselben Zeile protokolliert. Im Programm HDUMP (Bsp. 28) bewirkt der Befehl JNZ HDUMP an der Adresse EC22H beim l etzten Schleifendurchlauf keinen Sprung an den Programmanfang , weil die Sprungbedingung nicht erfüllt ist . Die Sprung -
- 217 Zielsystem (SMP)
Entwicklungssystem (hex) Hauptspeicher FFFF SME - Monitor
c::::::=J
(hex) Hauptspeicher FFFF
ge schützt
ICE-Variable
-,- - - -Symboltabelle - -------
791!1! 78F'F
progra~ HDUMP //,
'/'
ICE85 (16 KB)
3i!1!1! 2FFF
Bild 97
ISIS II (12 KB) resident
u ngeschützt
ungeschützt
./ 28 K ,
TO'
Ein-/Ausgabeadressen FF EF } unge E8 ~KOnsol-Gerät schützt
---
~
I!I!~
Speicher- und Ein-/Ausgabeadressen-Zuordnung für einen Emulat10nslauf gemäß MAP-Anweisungen in Beispiel 31
adresse des Befehls wird daher nicht aus dem Speicher ausgelesen, wie aus dem Trace-Protokoll zu ersehen ist. Der Befehl RSTI im frame 1017 legt die Folgeadresse in zwei Schreibzyklen (W) in den Stack ab. Neben dem beschriebenen Mikrocomputer-Entwicklungssystem der Serie 11 gibt es die leistungsfähigeren Geräte der Serie 111 und der Serie IV 1601, die in erster Linie für die Entwicklung mit 16-Bit-Mikroprozessoren (8086 bis 80286) vorgesehen sind. Den Platz der Zentraleinheit im Serie-lV-System nimmt inzwischen ein Personal Computer (mit Winchester Laufwerk) ein, an den der Echtzeit-Testemulator I'ICE 1691 angeschlossen wird. Verschiedene INTEL - Entwicklungs systeme können als Entwick lungsstationen über ETHTERNET zu einern Systemverbund zusammengeschaltet werden.
- 218 4
Aufbau von Mikrocomputersystemen
Um ein arbeitsfähiges Mikrocomputersystem zu erhalten , ist der Mikroprozessor über den Systembus mit Speicher- und Ein-/Aus gabeeinheiten zu beschalten. Allen busorientierten Mikrocomputerkonfigurationen unterschiedlichen Umfangs liegt die Struktur nach Bild 11 zugrunde . Neben den Funktionseinheiten, deren Wirkungsweise in den Abschnitten 1 . 2 . 3, 1 . 2.6 und 1 . 2.7 be schrieben wird, benötigt man Hilfsbausteine für die Verstär kung von Signalen (Puffer - bzw. Treiberbausteine) , für die Zwischenspeicherung von Bussignalen (engl . latche s) , für die Dekodierung von Adressen , für Taktst e u erung , Rücksetz-Einrich tung und Einzelschritt - Steuerung. 4.1
Mikrocomputer - Konfiguration
Der Umfang eines Mikrocomputersystems richtet sich nach der geplanten Anwendung. Lange Programme und große Datenmengen be dingen einen umfangreichen Ausbau des Hauptspeichers (max . 64 KB beim MP 8085) , viele Ein-/Ausgabeeinrichtungen bzw. Hinter grundspeicher erfordern entsprechende Ein-/Ausgabebausteine. Ergänzungsbausteine wie OMA-Controller , Interrupt Controller , Arithmetikprozessor oder programmierbarer Zeitgeberbaustein steigern die Verarbeitungsleistung eines Mikrocomputersystems erheblich und reduzieren in der Regel den Aufwand an Software. Zu den meisten Mikroprozessortypen gibt es systemkompatible Speicher- , Ein-/Ausgabe- und Ergänzungsbausteine , die aufgrund ihrer Anschlüsse und ihrer Signalpegel, sowie ihrem zeit lichen Verhalten direkt an den Systembus des Mikroprozessors (vgl . Abschn. 2.1.3 und 2 .1.4 ) angeschaltet werden können. Da die Anzahl der Bausteine eines Mikrocomputersystems unmit telbar in dessen Herst ellkosten eingeht , wird man - insbeson dere bei großen Stückzahlen - ein Mikrocomputer - Anwendungs system mit der geringstmöglichen Anzahl von Bausteinen zu rea lisieren suchen. Dies hat zudem den Vorteil einer geringen Fehlerhäufigkeit, denn die Fehlerwahrscheinlichkeit wächst mit
- 219 der Anzahl der ver schalteten Bausteine. 4.1 . 1
Blockschaltbi l d für 8085 - Mikrocomputersysteme
Den verschiedenen Systemkonfigurationen mit dem Mikroprozessor 8085 liegt im Prinzip das Blockschaltbild nach Bild 98 zugrunde . Im Verg l eich zu der allgemeinen Struktur eines busorien tierten Mikrocomputersystems (Bild 11) werden hierbei die Systembus - Schnittstelle und die Standard-Peripheriebausteine des 8085 berücksichtigt . Es gibt für den Mikroprozessor 8085 einige Speicher - und Ein - j Ausgabebausteine (8155,8156, 8355 , 8755, 87C64) , die direkt an de n ge mu ltiplexten 8085-Systembus angeschlossen werden können . Diese 8085 - Spezialbausteine (Multifunktionsbausteine , siehe Abschn . 4.2.4 ') erlauben den Aufbau von 8085 - Kleinstsystemen mit minimal 3 Bausteinen . Sie sind auch an den Mikroprozessor 8088 (s . Abschn. 7) anschaltbar . - Im Blockschaltbi l d (Bild 98) werden jedoch die allgemein eingesetzten Speicherbausteine (vgl . TafelS) und die weitverbreiteten Standard- Ein - jAusgabe bausteine (8251,8253, 8255, 8259) der 80'er Mikrocomputerreihe dargeste l lt. Diese Bausteine benötigen einen 8-Bit - Datenbus und gleichzeitig den vol l ständigen Adressenbus durch Zwischenspeicherung der Adressensignale
A15 - ~ , A7 - ~
was man
in einem
externen 8- Bit- latch erreicht (vgl . Bild 50) . Die in Bi l d 98 gestrichelt eingezeichneten Pufferbausteine (Treiberbausteine) haben die Aufgabe , die Leistung der 8085Ausgänge zu verstärken , wenn eine größere Anzahl von Speicher und Ein-jAusgabeeinheiten am Systembus zu betreiben ist. Ein 8085 - Signalausgang liefert z.B. im low-Zustand einen Gleich strom von 2 mA bzw . von - 400
~A
im high - Zustand 1121 . Er kann
somit gleichstrommäßig einen TTL - Eingang und bis zu 36 MOS-Ein gänge treiben , solange dabei die gesamte kapazitive Belastung durch Baustein-Eingänge und Leitungen ca . 150 pF nicht über steigt . Ein Eingang des EA-Bausteins 8255 1161 stellt am Systembus z.B. eine kapazitive Last von CL ; 10 pF (max.) dar . Die Signal - Zeitdiagramme des 8085 und die angegebenen Buszeiten
für DMA
externe Ereignisse
Bild 98
R
T
GRD
' : :i :1 I Ii
AD7 - ~
8 08 5
PA
V::11
CTRL
PB
INTR ,-
I.
PC
RAM/ROMDekodierer
11
11
CLK GATE OUT
"
11
IR 0 1 2
11 11 li 1I
7
::
CTRLBus
Abk.: CTRL (control) ... Steuerung CSi ... chip select-Signale (i = ~ .. n) IR~-7.~ interrupt request-Signale weitere Abk . .. s. Tafel 7 und Abschn. 5 . 3-5.5
Blockschaltbild für 8085-Mikrocomputersystem mit Standard-Bausteinen
EADekodierer
::
Al5 -8 ALE
MIKROPROZESSOR
XlX2 HOLD HLDA TRAP RST5.5 6.5 7.5
Quarz
'"'" o
- 221 in den Datenbüchern 1121,
1131 gelten bei einer kapazitiven
Belastung der Ausgänge mit 150 pF. Größere Kapazitäten bewir ken eine Verlangsamung der Signal flanken und damit Impulsver zögeru ngen, die ein System " außer Tritt" bringen können . Werden in einern System die für den 8085 vorgegebenen Belastungs grenzen gleichstrornrnäßig oder kapazitiv überschritten, so ist der Einsatz von Pufferbausteinen unumgänglich . Verbindet ein Bussystem mehrere Leiterplatten miteinander, dann steigen die Leitung skapazitäten , sodaß sich hier immer eine Pufferung der Bus - Ausgänge auf den Platinen empfieh lt. Während eines Buszyklus liegt auf dem Adressenbus
A 1 5 -~
die
Adresse des auszuwählenden Bus-Teilnehmers, deren Dekodierung die Auswahlsignale
~hip ~elect
CSi oder
~hip ~nable
CEi für
die peripheren Bausteine liefert. Üblicherweise hat man auf einer Mikrocomputerplatine eine getrennte Speicheradressen und EA- Adressendekodierung (Bild 98). Mehr zu Adressierungs und Dekodierungsfragen folgt im Abschnitt 4.2. Ein-/Au sgabebausteine können in einern System nach Bedarf einzeln oder mehrfach eingesetzt werden. Die Funktionsweise einiger Standard-Peripheriebausteine wird in Abschnitt 5 gebracht. 4 . 1.2
Realisierungsformen von Mikroco~putern
Das Spektrum der Mikrocomputersysteme reicht vorn Ein-Chip-Mi krocomputer üb er Ein-Platinen-Mikrocomputer und modulare Mehr Platinensysteme (Baugruppensysteme) bis zum Persona l Computer und zum Mehrbenutzersystem. Für Kleinanwendungen besonders geeignet ist der Ein - Chip - Mikrocomputer (engl. single chip computer), der neben dem Mikropro zessor einen RAM- und ROM-lEPROM-Bereich begrenzten Umfangs, Ein - /Ausgabekanäle und verschiedene Ergänzungsschaltungen in einern Baustein vereint . Der Ein-Chip - Mikrocomputer 805 1 (Bild 99) beinhaltet die dargestellten Funktionen einsch li eß lich zweier 16-Bit- Zähler in einern 40poligen dual in line - Gehäuse 1421. Unter der Typenbezeichnung 8051 enthält der Baustein ei nen maskenprogrammierten 4 - KB-Fe stwertspeicher (ROM), der a ls Prototyp verwendete Typ 8751 enthält stattdessen einen 4-KB -
- 222 Quarz
TESTj!'
TESTl
r------------------------,
I I I I
Takt
4096x8 B~t Festwer t speicher
128 x8 B~t
2x 16 B~t Zähler / Zeitgeber
Lese / Schre~b
speicher
I I
I
8- Bit
I ~;~~~~sor I E/ASteuer ung
I
Paral l el Ein- / Ausgabe _
~--
Unterbrechungen Bild 99
_
E/A - und SpeicherErwe iterungssteuerung
I I I Serielle I Ein - /Aus- I gabe L...:..-y-_--..---' J EIN
AUS
Ein-Chip - Mikrocomputer (Beispiel 8051)
EPROM-Speicher, dessen Inhalt der Anwender nach Bedarf ändern kann . Da neben gibt es - vorwiegend für Experimentiersysteme die Version 8031 des Mikrocomputers ohne integrierten Festwer t speicher. Der extern zu realisierende Programmspeicher - wie eventuell weitere periphere Bausteine - werde n dabei über die Ein-/Ausgabekanäle angeschlossen , die dann zu einem Sy stembus umfunkt ioni ert werden . Beim Ein-Pl atinen - Mikrocomputer sind sämt liche Hardware - Kompo nenten auf ei ner Leiterplatte aufgeb aut . Übliche Leiterplatten größ e n si nd das (Einfach-) Europaformat (100 mm x 160 mm), das Doppel - Europaformat (233 ,4 mm x 160 mm) und verschiedene in USA genormte Kartentypen . Die Firma INTEL bevorzugt für ihre Single Board Computer- Rei he (SBC) ein Kartenformat mit den Ab messungen 304 , 8 mm x 171 , 5 mm , auf denen Mikrocomputer mit ei nem umfangreichen Speicher- und Ein - /Ausgabespektrum realisiert sind 143 1. Den Ein - Platinen- Mikrocomputern lie gt im Prinzip das Blockschaltbild nach Bild 98 zugrunde . Eine gewisse Anp assung an den jeweiligen Umfang der zu lösenden Aufgabe kann hierbei
- 223 durch das Vorsehen von Bausteinsockeln auf der Leiterplatte erreicht werden , die bei Bedarf bestückt werden . Typische EinPlatinen- Computer sind die system design kits mit SichtgeräteAnschluß und Monitor - Programm (vgl . Abschn. 3 . 3) . Für mittlere bis größere Anwendungen im Bereich der Meß-, Steuer - und Regeltechnik setzt man bevorzugt Mehr - Platinensysteme (Baugruppensysteme) ein . Hierbei s ind verschiedene Funktions einheiten auf einzelnen Leiterplatten (Baugruppen) aufgebaut , die über ein festgelegtes Bussystem miteinander Information austa u schen . Oas Bussystem ist im allgemeinen als gedruckte Rückwandverdrahtung (eng l. motherboard) realisiert (Bild 100). Baugruppen am Systembus können sein :
o o
o o
Prozessorplatinen mit verschiedenen Mikroprozessortype n Prozessorplatinen mit/ohne Arithmetikprozessor, Prozessor platinen mit/ohne OMA- Steuerung RAM -, ROM- und EPROM - Platinen Ein - /Ausgabeeinheiten mit serieller/paralleler EA , mit di gitaler/analoger EA, Int errupt - Steuerungs - und Zeitgeber einheiten .
Stecker -
Rückwand - Busverdrahtung
~ rls=J 11
reihen - - -
96 - polige Steckerleiste (OIN 41612) 1 11 pro - . . , . . 11 Baugruppe J..l 11
.
Elnbau-
11
11
1
11 2 11 .,./ J..--Ir 11
11
1
?--' 1
11
11
\
3 11 4 1
11 11
1 1
cba
I::l
1
1
1 1 121 1 1
1
1
1
~==~==~==~==~========================~~~
platz - Nr .
L-J L-...J L...J L...J
---'1 A15 -ß'
L I ,_ _ _ _ _ _ _ _
SMP Systembu s
C:::::::::::::::==========================:JI OB7-ß' {
I CTRL
1 I
*)
*) Versorgungsleitungen ,
Bild 100
32
L-.J
CTRL d . h . Steuerbus
Mikrocomputer - Mehrplatinensystem (Beispie l SMP)
- 224 Tafel 23
Bus-Steckerbelegung (Beisp. SMP - Bus 1441)
Anschluß-Nr . Reihe a 1 2 3 4 5 6 7 8 9 10
-
-
15 V 5 V
- --
CLK
---
RES ET ALE MEMR RESIN MEMW
11
---
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
RDYI N BUSEN OB ~ HLDA OB 1 HOLD OB 2 INT OB 3
- --
Reihe c
-
12 V GND + 5 V MMIO A 12 A (0 A 13 A 1 A 14 A 2 A 15 A 3
---
A 4
In Bi ld 1 00 ist das SMP-Baugruppensystem 1441 zugrunde gelegt. Es ist ein verhältnismä ßig ei nf ac h es Bussystem mit ei n e m 8-Bit Datenbus DB7 - (O und ei ne m 16-Bit Adressenbus A1 5-(O für Europa - Format - Platine n mit max. 21 Einbauplätzen im Baugr uppe nträger. Prozes sorbaugruppen gibt es mi t den Mikroprozessore n 8080, 8085, 8088 oder dem Mikrocomputer
---
8031 . Es kann stets nur eine
A 5
Prozessorplatine als aktiver
- --
A 6
---
A 7
---
bus master arbe iten ; Multi prozessorbetrieb ist nicht möglic h .
OB 4 INTA OB 5
---
Di e Definition der Busleitun-
A 9
gen einsc hl ieß lich des Ste u-
OB 6
A 1(0
-- -
- --
OB 7 EOP 101'1
+ 15 V + 5 V
A 8
---
erbus b er uh t
im Prinzip auf
---
der 8080-Standard-System-
-- -
A 11
sc hni ttstel l e
IOR GND + 12 V
4.2.5). Di e zeitlichen Abläu-
(s. Abschn.
fe (timing) auf dem SMP-Bu s werden durc h den als Zentral -
prozessor eingesetzten Mikroprozessortyp und dessen Grundtakt bestimmt. Di e Anforderu ng von Warte zyklen durch
pass~ve
Bus-
teilnehmer (Signal RDYIN in Tafel 23) ist möglich. Zu dem dr e iteiligen Systembus kommen die Versorgungsleitungen (GND und
+/ - 5 V, +/- 1 2 V, +/- 15 V) hinzu. In Tafel 23 ist die Standard-Belegung des SMP-Bussteckers angegeben. Die Steckerrei h e b i st für Erweiterungen f ü r 16-Bit Mi k roprozessoren vorgesehen. Die mit einem Signalnamen versehenen Stecker ansch lü sse sind an jedem Einbauplatz dur ch die Rückwandverdrahtung miteinande r verbunden. Zusätzlich können für einzelne Platinen Sonder-Si gnale auf die freigebliebenen Ansch lü sse gelegt werden. Di e
- 225 Steckerreihe b des 3reihigen DIN-Steckers für Erweiter ungen ist in Tafel 23 nicht enthalten. 4.2
Anschaltung von Funktionseinheiten an den 8085 -S ystembus
4.2.1 Isolierte und speicherbezogene Ein - /Ausgabe Über die Adressenleitungen des Systembus werden Speicher- und Ein-/Au sgabe -Funktionseinheiten adressiert. Die Lese- und Schreibzyklen auf dem 8085 -S ystembus (vgl. Abschn. 2.1.3) sind für Speicher- und Ein - /Ausgabeeinheiten gleich. Allein das
101M
Ste uersignal
ermöglicht die Unterscheidung zwischen
Ein - I
Ausgabe- und Speicherzyklus. Führt der Mikroprozessor einen Ein-/Ausgabebefehl (IN porti OUT port) aus, dann aktiviert er das RD - oder WR - Signal un d setzt zusätz lich das Unterscheidungssignal Taf e l 7) . Auf dem Adressenbus
A7 - ~
101M
auf hi g h (vgl.
(bzw. auf A1 5 - 8) liegt dann
eine 8- Bit - lange Ein-/Ausgabeadresse , die einen von 256 8 - BitKanälen auswählt . Führt der 8085 Befehle mit Speicherbezug (z . 8. "MOV r ,M", " STA adr" , " ADD M" ) aus , geht das Unterschei dungssignal
101M
auf low, was bedeutet, daß auf dem Adressen -
bus ei ne 16-Bit-lange Speicheradresse liegt. Bezieht man die Steuerleitung
101M
h ardwaremäßig mit in die Auswah l der Funk -
tionseinheiten am Systembus ein , dann wendet man das übliche Verfah ren der isolierten Ein - /Ausgabe (engl . isolated 10)
11 2 1
1131 an . Gemäß Bild 101 stehen dann nebeneinander ein 256 Ka näle umfassender Ein - /Ausgabeadressenraum und ein 64 KByte umfassender Speicheradressenraum zur Verfügung. Verwendet man für Ein - /Ausgabevorgänge nicht die hierfür vor gesehenen IN-IOUT-Befehle, sondern Befehle mit Speicheradressen (Speicher-Referenz-Befehle), dann liegt das seltener ange wendete speicherbezogene Ein - /Ausgabeverfahren (engl. memory mapped 10) vor . Das Steuer signal
101M
ist dann bei Speicher -
und Ein-/Ausgabezugriffen stets im low-Zustand und damit ohne F~nktion.
Da die Ansprache von Speicher- und Ein - /Ausgabeein -
heite n dann ausschließlich mit der 16-Bit- langen Speicheradres se geschieht , muß der 64 KByte Adressenraum in einen Speicher und Ein-/Ausgabebereich unterteilt werden , wie dies in Bild 102
- 226 lO/M = l ow
\ IO/M = high EA- Adreßraum
EA-Adr esse
A7
fJ
Sp e icher adresse A1 5 fJ
7
I
L
fJ 1
2 1-------1
~----~.~
Speicher Adreßraum 7 fJ
port
255'--_ _.........
Bild 101 Adressenräume bei isolierter Ei n- /Ausgabe
64K-l
Byte
D
mit Hilfe des Adreßbits A1 5 gezeigt wird . Die Auf teilung l äßt sich zugunsten des stark reduzierten Speicher- Adressenbereichs verschieben , wenn mehrere Adreßbits zur Unterscheidung heran gezogen werden . Das memory mapped lO - Verfahren hat den Vo r tei l, daß Daten von Kanä l en (wie Speicherdaten) direkt mi t arithmetischen und l o gischen Befeh l en verarbeitet werden können . Der Befehl " ADDM" hat z . B. die Wirk u ng:
(A)~(A)
+ (por t) , wenn die 16 - Bit-
Adresse des ports im HL-Registerpaar steht . Andererseits d a uSpeicher adresse
64 KB Raum
A15 A14
7
I ~_
fJ
}
___ ___ f--::--
By te
----l
Sp e icher (-Adressen) bereich (A15) = fJ
32K -l 32K - - - - - }
~~~~~~~:~~~e ' - - - - - __
port
b erei ch (A15) = 1
64 K-1 '--_ _--' Bild 10 2
Auf teilung des 64 KB Adressenraums b e i speic her b ezoge n er Ein - /Ausgabe (Bei spie l)
-
227 -
ern die Befehle "LDA adr " und " STA adr" länger als die IN/OUT Befehle beim isolated IO-Verfahren. Ein Nachteil des memory mapped IO - Verfahrens ist bei größeren Mikrocomputer - Anwendungen , daß der Speicher nicht mehr bis zu 64 KB ausgebaut werden kann . 4. 2 . 2
Auswahl der Funktionseinheiten
Für die üblichen Speicherbausteine und Standard- Ein - /Ausgabe bausteine (vgl . Bild 98) läßt sich eine einheitliche Schnittstelle zum Systembus hin angeben . Jede Einheit benötigt neben den Steuersignalen (RD, WR) den vollen Dat enbus
D7 - ~
und eine
unterschiedliche Anzahl von Adressenleitungen A des Systemnm bus (Bild 10 3) . Bei Speicherbausteinen dient dieser intern de kodierte Teil des Adressenbus (A
) zur Auswahl der Speichernm plätze (Bytes) innerhalb des Bausteins . Die Adreßsignale AIO - 0 adressieren z .B. in einem Speicherbaustein einen von 2048 Spei-
cherp l ätzen (Bild 104.a). Bei den Interface-Bau steine n (Ein - / Ausgabebausteinen) wählen die niederwertigen Adreßbits A ein mn Register bzw . einen Kanal innerhalb des Bausteins aus . Ein - /Ausgabebausteine können vom/zum Systembus
2 bis 16 interne Adressen haben. In Bild 104.b sind zur Unterscheidung von 4 internen Adressen die 2 Adreß -
RESET es
leitungen Al-0 vorgesehen.
RD
WR
D7 - ~
Anm
Ein - /Ausgabekanäle / Register oder Speichermatrix
Das RESET - Signal bringt den Interface - Baustein in einen normierten Zustand ; es ist nicht bei allen Bausteinen vorhanden .
Bild 103 Einheitliche Schnitt stelle von Standard-Bausteinen
Di e Auswahlsignale eSi für Speicher - und Ein - /Ausgabebausteine werden aus den höherwerti gen Adreßleitungen des Systembus ' gewonnen (Bild 104). Ist die Bausteinadresse verschlüsselt, dann muß dieser Tei l des Adres senbus extern dekodiert werden . Allgemein gilt, daß die Auswahlsignale (Selektionssignale) für
- 228 a ) Sp e i cheradresse 101M; l ow
die Einheiten am Systembus aus dem Teil der
AlS
Adresse gebi l det werden , '-------~vr------~
Alfj - fj zu den Speic h erbaustei n en CS k
2 1 fj
der nicht von den Ein heiten se l bst benötigt bzw. dekodiert wird . Die höherwertigen Adreßste llen Al S-l I
Ba u stein - Auswahl
(Bild 104 . a)
bestimmen , in we l chem b ) Ein- lAu sgab eadresse 101M; h ig h A lS
1 fj
8 7
Teil des 64 K Adressen raums d i e 2 K Speicher p l ätze des Speicherbauste ins liegen . Entspre chend l egen die Bitste I-
Signa l b e l eg u ng i d entisch mit A7 - fj
len A7 - 2 der Ein - /Ausga beadresse (Bi l d 104 . b) fest, wo die vier EACS k
21
~
steinen
Baustein - Auswah l
Adressen des Bausteins im 2S6 - Byte - großen EA-
Bil d 10 4 Adressierung von Spe ic h e r- und Ein - /Ausgabebausteinen be i i ßo l ierter Ein - /Ausgabe (dekodierte Baustein - Auswahl)
Adressenraum liegen (iso lierte Ein - /Ausgabe vor ausgesetzt) . Ein Baustein nach Bild
1 03 ist am Systembus ausgewählt und reagiert mit einer Lese oder SChreiboperation, wenn - sein Auswahl - Eingang CS (oder CE ) " enab l ed " wird , d . h. auf l ow- Potential liegt und - sein Lese - oder Schreib-Steuereingang RD (auch OE , ~nab l e)
oder WR (auch WE ,
~rite
~nable)
~utput
aktiv, d . h . auf low -
Potential geschaltet wird . Die Ausgänge nicht selektierter Bausteine auf den Systembus sind hochohmig. Beim Ein - Platinen-Computer gern. Abschn . 4.1.2 werden die Bau ste i n - Auswahlsignale auf einer Platine (ggfls . durch Dekodie rung) gebildet und auch auf dieser Platine benötigt . Beim Mehr p l atinen - Mikrocomputer sind die Speicher- und I nterface - Bau-
- 229 steine auf verschiedenen Platinen verteilt. Die Adresse muß hier die Baugruppe (Platine) , den Baustein auf der Baugruppe und schließlich das Byte (Speicherplatz oder Register) im Baustein auswählen. Entsprechend ist die Adresse in eine Baugruppenadresse , eine Bausteinadresse (bei mehreren Bausteinen auf einer Baugruppe) und eine Byteadresse aufzuteilen, wie dies in Bild 105 am Beispiel der Ein - /Ausgabeadresse gezeigt wird. Die Auswahl der Baugruppe geschieht im al l gemeinen durch ei -
Ein-/Au sgabeadresse (IO/M = 1) A76543210
nen Vergleich der Baugruppenadresse auf dem Systembus mit einer festen oder (durch Scha l ter) einstel l baren Adreßkombination auf der Baugruppe (Bild 106). Bei Gleichheit der
Baugruppenadresse (im System)
austein~ ,y,:~
~
adresse
(auf Baugr uppe )
adresse
(im Bau steln)
Bild 105 Auf teilung der Adresse bei Bussystemen (Beispiel)
Binärkombinationen wird ein Baugruppen- Selektionssignal erzeugt, das die übrigen Funk tionen auf der Platine , u . a . die Bausteinauswahl auf der Bau -
Rückwand - S t e c k e r l e i s t e
IO/M
A7 A6 A5 A4
A3 A2
Al AO
Adressen vergleich Adressenschalter
z u de n Auswahlsigna l e für E/A- Bausteine
Anm .: BGSEL d.h. Bi l d 106
E/A-Bau stei nen
~au~ruppen - Selektionssignal
Auswahlschaltung auf Ein - /Ausgabebaugruppe in eine m Bussystem (dezentral)
- 230 gruppe freigibt. Hierdurch vermeidet man Stichleitungen, die bei einer zentralen Baugruppenauswahl unumgänglich wären. 4.2 . 3
Dekodierung der Speicher- und Ein-!Ausgabeadresse
Die Bildung der Auswahlsignale eSi für die Funktionseinheiten am Systembus kann auf unterschiedliche Weise erfolgen: Bei kleineren Systemen mit wenigen Speicher- und Ein - !Ausgabe einheiten wird die lineare Bausteinauswahl bevorzugt . Dabei verbindet man einzelne höherwertige Adreßleitungen direkt mit dem eS-Anschluß des Bausteins . Bei einer Auf teilung des Adres senbus gemäß Bild 104 sind damit 5 Speicherbausteine und 6 Ein - !Ausgabebausteine linear adressierbar. Bild 107 zeigt ein Beispiel für die lineare Auswahl von 3 Standard- Speicherbau steinen zu je 2 KBytes und von 3 Standard-Ein-!Ausgabe - Bausteinen bei isolierter Ein - !Ausgabeadressierung. Jeweils ein Adreß bit wählt mit (Ai) = 1 einen Baustein aus. Die übrigen Adressenbits müssen im Zustand
~
sein, soweit sie zur Bausteinaus -
wahl dienen. Um die gleichzeitige Auswahl eines Speicher - und eines EA-Bausteins bei bestimmten Adressen auf dem Bus zu vermeiden, müssen die Adreßbits Ai zur Bildung der chip selectSignale mit dem Unterscheidungssignal IO!M bzw . dem negierten Signal IO!M UND-verknüpft werden (Bild 107) .
Eine andere und
häufigere Realisierung der isolierten Ein - !Ausgabe findet man bei der BOBO-Standard- Schnittstelle (siehe Bild 116). Durch das auswählende Adreßbit ist der Adressenbereich jedes Bausteins im jeweiligen Adressenraum festgelegt. In Bild 107 sind die Speicher - und Ein-!Ausgabeadressen angegeben, die der Verschaltung entsprechen . Bei den Standard-Ein- !Ausgabe-Baustei nen wurden die Adreßbits Al und AO für die bausteininterne Adressierung reserviert. Die Darstellung der linearen Bausteinauswahl nach Bild 107 hat mehr grundsätzliche als praktische Bedeutung , da man für den Aufbau von Kompaktsystemen meist die BOB5-Spezial - Bausteine (s.Abschn. 4.2.4) verwendet und bei größeren Systemen eine De kodierung der höherwertigen Adreßbits vornimmt . Die Verschlüsselung des höherwertigen (Baustein - ) Adressenteils hat im Spei cherbereich überdies den Vorteil, daß die Speicherbausteine zu -
- 231 -
Speicher adresse Adressen bereich
A
15
11
0
A 15
10 0 0 0 1 Y iY I
11
0
100010ylyl
AlS
11
o
1 00 1 00y\~yl
2K - (4K - l)D 4K - (6K-l )D 8K - (lOK - l)D ,0'8,0',0'H - ,0'FFFH l,0',0',0'H - 17FFH 2,0',0',0'H - 27F FH
StandardSpeicherBausteine
RAM 6116
IO/M
es RD WR A~ StandardEin - /Ausgabe 825Z Bausteine (Z= 1. .. 9) Adressenl,0'H - 13H bereich EA- Adresse
825Z
2,0' H
yl
! 0 0 0 1 0 O:y A7 4 10
- 23H
!OOlOOO:yyl A7 5 1 0
825Z
4,0'H - 43 H 1010000:yyl A7 6 1 0
Abk. : Y d.h. relevante Bitstelle , kann Werte 0 und 1 annehmen. Bild 107
Lineare Bausteinauswahl bei Standard- Bausteinen Beispiel für isolierte Ein-/Ausgabe (ohne Datenbus)
sarnrnenhängende Adressenbereiche belegen, was bei linearer Aus wahl nicht der Fall ist . Ferner ist zu beachten, daß im vorlie genden Beispiel der Speicherbereich ,0',0',0',0'H bis ,0'7FFH nicht adres sierbar ist. Da der 8085 beim Rücksetzen auf die Startadresse ,0' verzweigt , muß die Adreßkombination A15-11 = ,0',0',0',0',0' für die Aus wahl eines Speicherbausteins zusätzlich dekodiert werden . Bei verzweigteren Mikrocomputersystemen ist die vollständige
- 232 -
oder teilweise Verschlüsselung der Baustein-Auswahladresse un umgänglich, weil nur hierbei der volle Adressenbereich nutzbar wird. Zur Entschlüsselung der höherwertigen Adreßbits verwen det man zweckmäßigerweise Dekodierbausteine mit mehreren Frei gabe-Eingängen (Enable - Eingängen) , z.B. den l - aus-8-DekodierBaustein 74138 (8205) mit den Enable - Eingängen GI, G2A und G2B (Bild 108) . Ein Dekodier - Baustein ist "eing esc haltet " , wenn die 3 Enable - Eingänge gleichzeitig erfüllt sind . Bei iso lierter Ein- /Ausgabe aktiviert das rO/M-Signal wahlweise den AIS
Speicher adresse
11
15
0
11
0
I
0 0 0 0 Y •• Y 10 0 0 0 1 Y • • Yl 2K-(4K-l) 0 - (2K - l) 0800 - OFFFH 0000 - 07FFH
10
Adressen bereich
15
11
0
100010y .. yl 4K - (6K - l) 1000 - 17FFH
74138
~--- ro/M ---------------- IH ------------~-----------
A3 A4 A5 A6 A7 74138 A7
loooooxx
EA-Adresse Abk . : Y d.h. X d.h . Bild 108
0
7
0
yllOOOOlXYld
7
10
0
0 0 10 X Y Y
I
rel evante BitsteIle, kann Werte 0 und 1 annehmen. nicht benutzte BitsteIle (beliebiger Wert)
Verschlüsselte Bausteinauswahl bei Standard- Bausteinen , Beispiel für isolierte Ein-/Ausgabe
- 233 A
1514
C B A
Speicherraum
C BA
Ein - /Ausgaberaum
[Ql]J
16
@1J] [[[Q]
24
!O/M; 0
13 1211
@]]-~-OK 2716
[Q]:}]
2K
[QIQ]
4K
[Q]}]
2716 6116
6K
~ 8K
.j.J
tOt» O
~lO K
rr::1}J 12K [III] 14K
mit einem l-aus-8 Dekodierer er r eich bar
mit einem
.j.J
32
tOt»
o
(j)
rl rl
(j)
rlrl (j)
'Ö.Q rl ·rl.j.J
al.c
u
C·rl
[[DJ
40
~
48
[DJ] 56 @JJ- - - -64
.e< C
[ITI- - - -lGK
(j)
'Ö.Q rl ·rl.j.J
al.c
u
C·rl ·rl C
*)
*)
*)
*)
*)
*) 64K (dezimal)
l-aus - 8 Deko dierer er reich bar
256 (dezim a l)
*) je ei n weiterer Dekodierer (in Bild 108 nicht vorhanden)
C BA .. Selektionseingänge des Dekodierers Bild 109
Zuordnung der Adressen zu Bausteinen durch die Deko dierung ge mäß Bild 108 (isolierte Ein-/Ausgabe)
Speicheradressen- oder den EA-Adressendekodierer (Bild 108). Legt man die Adressenbits A15 und A14 der Speicheradresse bzw . A7 und A6 der Ein-/Ausgabeadresse a u f die übrigen Freigabeeingänge, so ist damit derjenige Teil des gesamten Adressenraums festgelegt, der mit dem Dekodierer erreichbar ist. Bei 2 - KB Speicherbausteinen ist mit einem l - aus - 8 Speicheradresse n-D e kodierer ein 16 K- Bereich ansprechbar . In Bi l d 108 sind die Adressenbereiche für die Speicherbausteine angegeben . Da jedes Adreßbit dekodiert wird , kann die Speicheradresse vo ll ver schlüs selt werden. Mit vier l- a u s -8-D ekodiere rn ist der gesamte Speicheradressenraum von 64 K zugängl ich (Bild 109), 2KB-Speicherbausteine vorausgesetzt .
-
2) 4 -
Das Unterscheidungssignal 10/M wählt z usammen mit den höchst wertigen Bits A7 und A6 der Ein-/Ausgabeadresse in Bild 108 den EA-Adressendekodierer aus. Dieser liefert ein Selektionssignal für einen der drei Ein-/Ausgabe - bzw. Ergänzungsbausteine 8251A, 8253 oder 8255, wenn eine der angegebenen Adres sen in einem EA-Befehl auftritt . Auf Grund der Beschaltung seiner Enable - Eingänge wählt der Dekodierbaustein in Bild 108 die EA-Adressen 0 bis 63 aus . Um den gesamten EA- Adressenraum 0 bis 255 zu erreichen, benötigt man insgesamt vier l - aus-8-Dekodie rer für die Ein - /Ausgabeadressen - Dekodierung (Bild 109) . Da das Adressenbit A2 der Ein-/Ausgabeadresse in der Schaltung nach Bild 108 weder im externen Dekodierer noch in den EA-Bausteinen entschlüsselt wird, kann das Bit A2 den Wert X = 10 oder 1 annehmen. Beispielsweise können die Register des Bausteins 8253 sowohl durch die Adressen 0000 1000 B - 0000 101l B = 08H - OBH als auch durch die Adressen 00001100 B - 0000 l l l l B = OCH - OFH angesprochen wer den. Somit belegt der Baustein 8253 mit vier internen Adressen - bedingt durch die Art der Dekodierung - acht Ein-/Ausgabeadressen (8 - 15 dezimal) . Der Baustein 8255 belegt ebenfal ls acht EA- Adressen (16 - 23 dezimal) . Da der EA- Baustein 8251 nur zwei interne Register adressiert, werden bei seiner Auswahl die
X/Y AU A14 AIS
A B C
high low 10/M
GI G2A G2B
74138 Adressenbereiche:
Bild 110
0 - (8K - l)
8K - (16K -l )
56K- (64K- l)
Dekodi erung der Speicheradresse für 8 - KB - Speicherbausteine (isolierte Ein - /Ausgabe)
- 235 zwei Adreßbits A2 und Al nicht entschlüsselt ; er belegt a uch acht EA - Adressen . In Bild 109 sind die Adressen der Ein - /A u s gabebausteine und der durch die Dekodierung bedingte Adressen verschnitt (schraffiert) dargestellt. Im Interesse einer ein fachen Dekodierschaltung wird ein gewisser Adressenverschnitt im Ein - /Ausgabebereich im allgemeinen hingenommen. Eine sehr übersichtliche Dekodierung der Speicheradresse er gibt sich, wenn man (in größeren Systemen) die hÖherintegrier ten 8K x 8 Bit-Speicherbausteine 2764 (EPROM), 2364 (ROM) oder 6264 (RAM) einsetzt . Ein Dekodierer genügt hier für die Se lek tierung der maximal möglichen 8 Speicherbausteine (Bild 110). Der Dekodierer wird mit 101M =
0 aktiviert .
Weitere Einzelheiten zur Dekodierung findet man in 11 2 1 und 1131. 4.2.4
Anschluß von 8085-Spezialbausteinen
Neben den Standard- speicher- und Ein-/Ausgabebausteinen (vgl. Bild 98 und Abschn. 4.2.3) gibt es kombinierte speicher - und Ein - /Ausgabebausteine - Multifunktionsbausteine -, die ver schiedene Funktionen wie Speichern , Ein - /Ausgabe und Zeitzählung in einem chip vereinigen 1121
1131 . Sie werden als 8085 -
Spezialbausteine bezeichnet, wei l ihr e Prozessor-Schnittstelle b eso nders auf den 8085 - Systembus (vgl . Abschn . 2.1.3) abge stimmt bytes
ist : Die Zwischenspeicherung der niederwertigen Adr eß A7 - ~
findet innerhalb der Spezialbausteine
(Bild 111)
statt, die das Steuersignal ALE des 8085 direkt auswerten. Zur UnterSCheidung von Speicher - und Ein-/Ausgabeoperationen gibt es einen IO/M-Steuereingang , der bei isolierter Ein - /Ausgabe mit dem Steuer signal 101M des 8085 oder bei speicherbezogener Ein - /Ausgabe z . B . mit dem Adreßbit AI S beschaltet werden kann. Mit diesen Multifunktionsbausteinen lassen sich kompakte 8085 Mikrocomputersysteme mit wenigen Bausteinen realisieren ; mit drei Bau steinen (einschließlich des 8085) ist eine arbe i tsfähige Einheit realisierbar . Dieselben Bausteine werden auch ein gesetzt , um die Ein-Chip-Computer 8048 oder 8051 zu erweitern und Kompaktkonfigurationen mit dem 16-Bit Mikroprozessor 8088
- 236 herzustellen. Die Gruppe der Spezialbausteine, bestehend aus den Bausteintypen 8155, 8156, 8355 und 8755, soll hi er in ihren Funktionen (Bild 111) und ihrer Anschlußtec hnik kurz erläutert werden, ohne im einze ln en auf die Programmierung dieser Bausteine mit Steuerwörtern einzugehen. Der Zeitgeber (timer) und die Kanäle der Multifunktionsbaustei ne werden bei isolierter Ein-/Ausgabe mit IN/OUT - Befehlen an gesprochen, die RAM-, ROM- und EPROM - Bereiche mit den üblichen
Erläuterun'2 en ;
8155(56) AD7 - f,f ALE RD WR CE**) RE SET lO/M
Kanal
n G B tJ B
A
256x8
B
C ·6
TIMER OUT TIMER IN CLK
ALE RD
row IOR CE l CE 2 READY RESET Bild 111
Bausteine 8355 und 8755 sind pin - kompatibel
CLK lO/M
8 3 5 5
AD7-f,f Alf,f-8
**) Beim 8155 ist dieser Auswahleingang low activei beim 8156 ist dieser Aus wahleingang high active CE. ***) ist ein 14-Bit - Zähler
ITIMER 1***)
1O/M
* ) Der Auswahleingang CEl dient während des EPROM Programmierens als Programmiereingang
~8ß ROM
Kanal A
B Kanal
8 7 5 5A
AD7 - 11 A10-8 ALE RD 10W lOR CE *) 1 CE 2 READY RESET
f,:1 B
Kanal A
EPROM
U G
8085-Spezial - Bausteine (Multifunktionsbausteine)
B Kanal
112 1
- 237 -
Speicher-Referenzbefehlen. In Bild 111 fällt auf , daß neben den RD - und WR - Anschlüssen auch IOR- und IOW-Steuereingänge vorhanden sind . Bei den Bausteinen 8355 und 8755A kann ein Eingabekanal wahlweise durch Aktiviere n des IOR-Eingangs oder mit IO/M
= high
und RD
= low
gelesen werden. Entsprechendes gilt
für die Ausgabekanäle . Zusätzlich zu dem dargestellten Baustein 8155 , dessen EnableEingang (CE) low active ist , gibt es den nahezu identischen 8156 mit bejahendem Auswahleingang CE . Die Typen 8355 und 8755A verfügen über jeweils 2 Auswahleingä nge CE (high active) und CE (low active), die gleichzeitig aktiviert sein müssen, was ei n e teilweise Dekodierung der Adresse ermöglicht. Der Einsatz eigener Dekodierbausteine wird bei Minimalkonfigura tionen möglichst vermieden . - Benötigt man einen größeren Pro grammspeicher, so können anstatt des 8755A die reinen EPROM Bausteine 87C64 (8Kx8 Bit) oder 87C256 (32Kx8 Bit) mit in ternem Adreß - latch eingesetzt werden 1631. Beim An schluß der Multifunktionsbausteine ist zu beachten , daß Speic h er und Ein - /Au sgabe in einern Baustein durch dasselbe Auswa hlsignal aktiviert werden , sodaß Speicher- und EA- Adresse miteinander verquickt sind . Bei der linearen Selek tierung des Bausteins nach Bild 112 muß das Adreßbit All der Speicheradres se u nd das Bit A3 der Ein - /Ausgabeadresse 0 sein. Die mit X gekennzeichneten Adreßstellen (X bedeutet "don't care")
A15 8355/ 8755 All
Speicheradresse : (IO/M = low)
CE
IO/M
IO/M
7
Ixx xxlol
I
0
I
4~
CE
high
11 10
Ein-/Ausgabe- A 7 adresse: (IO/M = high)
3
0
Ixxxxlolxl
Anm .: *) zur Adressierung im Baustein Bi l d 11 2 Adressierung von Multifunktionsbausteinen (isolierte EA)
- 238 sind für die Adressierung des einen Bausteins ohne Bedeutung , bei der linearen Adressierung mehrerer Bausteine dürfen sie jedoch nicht beliebig stehen , da man die gleichzeitige Auswahl mehrerer Bausteine am Systembus vermeiden muß . Dies sei am Beispiel eines 3- Baustein- Mikrocomputers , dem typischen 8085 Minimalsyste m (B il d 113) vera n schaulicht . Es verf ü gt üb er 2 KB EPROM ( wahlwe i se ROM) , über 256 Bytes RAM , über einen Zeitge ber , 5 Paral l e l- Ei n - /Ausgabekanä l e , 4 Interr upt - Eingänge und eine seriel l e Ein - /Ausgabe und reicht damit f ü r eine Vi e l zah l k l einerer Anwendungen aus . Das System ist mit weiteren Spe zia l bau steinen aufrüstbar.
-
Anm. :
*) Verbindung ist notwendig , wenn 8755A einen Wartetakt benöt i gt
-
---'~"'"'"'"~
*)
~
i":
8755A 11 1 " CE 2 f-o CE l >-A10-8 ~
e
READY PA RD 7- 0 IOW
~
PB 7- 0
Bi l d 113
"
8:: ~ ~ ~
ALE CLK RESET
:'\. \..\.. \..\..\..
-
r--
101M ALE RESET IN CLK RESETOUT
I~
~
101M
AD7-0
~
0 .-~
r---
AlS A1 4 8 0 8 5 Al3 A12 All RST AlO - 8 7 . 5 6. 5 ~ AD7 -0 5 . 5 I-TRAP I-READY RD SID I-SOD WR
'"
'"'"'""""""~,,"~
CE
8 1 5 6
-
RD WR
PA 7 -0
101M
PC 5-0
AL E
PB RESET 7- 0 IN AD7 - 0 OUT TIMER
8085 - Mi n ima l systpm mit Multifunktionsbausteinen
§ ~
f--
- 239 Bei der Beschaltung der Auswahleingänge der peripheren Baustei ne in Bild 113 ist zu beachten, daß der Rücksetzvorgang (lowSignal am 8085 - Eingang RESET IN) die Startadresse
~~~~
er-
zeugt (vgl. Bild 20) . Deshalb muß der EPROM-Baustein 8755A , der das Startprogramm enthält, mit All = lJ " enabled " werden , während die übrigen Bausteine - um Mehrfach - Aktivierungen in der Rücksetzphase zu vermeiden - mit auf 1 gesetzten Adreßbits , z.B . A12 = 1 auszuwählen sind. Die Adressen und die Adressen bereiche der Multifunktionsbausteine , die sich aus der Beschal tung nach Bild 113 ergeben, sind in Bild 114 zusammengestellt . Ein weiterer Mu l tifunktionsbaustein mit paralleler und seriel ler Schnittstel l e, Timer und Interruptlogik ist der 8256A 159 1.
a) Speicher - und Ein - /Ausgabeadressen (iso l ierte Ein - /Ausgabe) 8 755 A- Speicheradresse A 15
121110
o
7
Ixxxlolol
t
*)
43
*)
8156 - Ein - /Au sgabeadresse
1 0
A7
Ixxxlol olxl ,
0
I xxxl * lxxx~1 =-=v==='
8755A- Ein - /Ausgabeadresse A 7
8156 - Speic heradresse A 15 121110 7
432
0
Ixxxl* 1'-.--'
t
~
Anm. : *) Byteadresse im Baustein ;
*)
X d.h . "don-t care "- Bits
b) Adressenbereiche für per i phere Bausteine ,
(X) = 0 angenommen
8755A- Speic her : 0000 - 07FFH
81 56 - Speicher: 180 0H - 18FFH
8755A- Kanäle:
8156 - EA/TIMER:
Bild 114
4 . 2.5
00 -
03
1 8H -
lFH
Adressen und Adressenbereiche der Multifunktions Bausteine des 8085 - Minimalsystems nach Bild 1 1 3
Die 8080 - Standard- Schnittstelle
Die Systembus - Definition des MP 8085 (vgl. Abschn. 2. 1. 3) er gibt sich aus der Forderung , die gegenüber dem Vorgänger 8080 erweiterten Funktionen (RST - Eingänge, SID/SOD - Leitungen) in einem Gehäuse mit 40 Anschlüssen unterzubringen . Setzt man
- 240 zusätzlich zum Demultiplexen des Adreß - /Datenbus
AD7 - ~
die
8085-Lese-/Schreib-Steuersignale (RD, WR, IO/M) um, so er häl t man die Standard-System-Schnittstelle des 8080 (Bild 115)
11 21
1131, die auf die Anschaltung der üblichen Speicherbausteine und der mit dem MP 8080 entstandenen Standard- Ein - /Ausgabe bausteine zugeschnitten ist . Bei dem weniger hochintegrierten 8080 - System besteht der zen trale Prozessor aus drei Bausteinen , dem Mikroprozessor 8080 , dem Taktgenerator 8224 und dem Systemsteuerbaustein 8228 (Bild 115). Auf den Datenleitungen D7 - 0 des 8080 erscheint zu Beginn jedes Maschinenzyklus kurzzeitig der Prozessorstatus, der für die Dauer des Maschinenzyklus im Systemsteuerbaustein 8228 zwischengespeichert wird . Dieser bildet daraus die typischen Signale MEMR, MEMW,
IOR , IOW und INTA des 8080 - Systembus zur
Steuerung der peripheren Bausteine . Darüber hinaus enthält der Baustein 8228 bidirektionale Treiber für den Datenbus . Die Steuer signale MEMR oder MEMW (memory Eead oder memory
~rite)
erzeugt die zentra l e Baugruppe während eines Buszyklus mit Speicherzugriff. Zur Ausführung der Ein-/Ausgabebefehle "IN port " und "OUT port " werden die Steuersignale IOR oder IOW
8080-StandardSchn it tstelle A15 -0 OSC 4>2/TTL
4>1 4>2
8 0 8 0 D7 - 0 D7 - 0
SYNC RDYIN RESIN
Bild 115
READY WAIT RE SET
WR DBIN HLDA
8 2 2 8
8080 - Zentralprozessor mit 8080-StandardSystem-Schnittstelle
MEMR MEMW IOR IOW INTA
- 241 (~nput/~utput ~ead
oder
~nput/~utput ~rite)
generiert . Bei der
Anschaltung von Standard-Peripherie - Bausteinen nach dem iso lierten Ein - /Ausgabeverfa h ren verbindet man die Signale MEMR und MEMW mit den Lese - /Schreibei n gängen (RD und WR) der Spei cherbausteine und die Signal leitungen lOR und lOW mit den e ntsprec henden Eingängen der Ein - /Ausgab eba u stei n e . So werden Speicher - und EA-Adressenraum unterschieden .
8080 - StandardSchnittstelle
8085 - BuSSchni ttst elle A15-8 ~~
________________-,
A15 - 0
8282 ALE f---------1 80 8 5
07 - 0
AD7 - 1J
lNTA
lNTA
x/y RD WR
A(l) B(2)
lO/M
C( 4)
Vcc
I> MEMW
MEMR
lOW lOR 74138
Bild 1 1 6
Um setzung der 8085 -Bu s - Schnittstelle in die 8080 - Standard-Schnittstelle
Di e Schnittstelle n - Um setzung (Bild 11 6) beinhalt et n e ben de r bereit s bekannten externen Zwischenspeicherung der Adresse n A7 - g einen l-aus - 8 - Dekodierbaustein (Typ 74138 oder 8205), der die 8080 - Steuersignale erzeugt . Die Signale MEMR , MEMW, lOR und lOW können nach Bil d 11 7 a uch durch ei n e Demul tip l exer -
- 242 Schaltung aus den 8085 - Signalen + 5 V
IO!M low hig h RD RD hig h high WR WR hi gh
RD , WR und I O!M gebildet werden . Die 8080 - System- Schnittstelle
lA IB 2A 2B 3A 3B 4A 4B
wurde bei vielen industriellen
lY
IOR
2Y
MEMR
z . B . bei dem herste llerspezifi -
3Y
IOW
sc he n SMP -B augruppensyste m 144 1
4Y
MEMW
Bus - Systeme n zugrunde ge l egt ,
74 257
un d de m universe ll en multicomputerfähige n MULTI BUS 1451 . Die SMP - Bus - Schn ittstelle ist in Tafel 23 angegeben . Di e Schnitt -
Bi ld 1 17 Erzeugung der Steuersignale MEMR , MEMW , IOR und IOW aus den 8085 - Signalen RD , WR und I O!M
stellenumsetz u ng nach Bild 116 ist unbedingt erforderlich , wenn eine 8085 - Prozessorp l atine in ein Baugruppe n system mit 8080-
Standard- Bus - Schnittstelle eingesetzt werden soll .
4. 3
Gesamtschaltung eines 8085 - Mikrocomputersystems
Struktur und Umfang der Mikrocomputer - Hardware werden auf Gru n d einer Analyse des zu lösenden Problems festgelegt . Bei handelsüblichen Mikrocomputersystemen - vorn Single Board Computer bis zum Arbeitsplatz - Computer mit Mehr - Benutzer- Zugriff - versucht man durch " Einbau " einer größtmög l ichen F l exibilität j eweils größere Aufgabenbereiche mit ei n e rn System abzu dec k en . Das in den Bildern 118 . a u n d 1 1 8 . b angegeb ene Schaltungsbeispiel 146 1 stellt im Prinzip ei ne n Si ngl e Board Mikro computer dar , der zwei Speicherbaustei ne zu j e 8 KBytes u n d zwei Ein - !Ausgabebausteine enthält . Er ist j edo ch für eine Er weiterung auf insgesamt 8 Speicherbausteine (64 KBytes) und insgesamt 8 Ein - !Ausgabe - bzw . Ergänzungsbausteine ausgelegt . Die zusätzlichen Komponenten können auf mehrere Leiterplatten verteilt werden , ohne daß hier ein Baugruppensystem mit Busstruktur im Sinne des Abschnitts 4.1.2 vorliegt . Da im Beispiel preiswerte Standard- Speicher- und Ein - !Ausgabe ba u steine eingesetzt werden sollen , ist der n i ederwertige
- 243 Adressenbus
A7 - ~
extern zwischenzuspeichern . Um die o . g . Aus -
baufähigkeit zu gewährleisten , wird der gesamte Adressenbus A15 - ~ D7 - ~
extern zwischengespeichert (2 x 8282) und der Datenbus mit einem bidirektionalen Treiberbaustein (1 x 8286) ge -
puffert . Die am häufigsten benötigten Steuersignale lOW , lOR , MEMW und MEMR der Standard- Schnittstelle (vgl . Abschn. 4 . 2.5) werden in dem Multiplexer-Baustein 74257 gebildet . Die Zwische n speicher - und Treiberbausteine sin d i m Nor malfa l l eingeschaltet (OE = low), sie können durch das Signal BUSEN (bus enable, highactive) oder durch das Signal HLDA während des DMA-Zyklus (in Bild 118
nicht enthalten) abgeschaltet
werden , sodaß dann ein anderer Bus-Teilnehmer die Zustände auf der Standard- System- Schnittstelle bestimmt. Die Transferrichtung des bidirektionalen Datentreibers 8286 wird durch die Si gnale RD oder lNTA des Mikroprozessors umgeschaltet . Bei einem Maschinenzyklus " Schreiben " (RD
=
high und lNTA
=
high ) über -
trägt der Baustein von A nach B, bei einem lesenden Maschi n enzyklus (RD
=
low oder lNTA
=
low) ist der Treiber von B nach A
geschaltet . Zu den Maschinenzyklen des 8085 siehe Abschn . 2.1.3. In Bild 118 . b ist die Dekodierung der Speicher - und Ein-/Aus gabeadressen zentral in zwei l-aus - 8-Dekodierbausteinen 74138 realisiert. Der Speicher-Adressendekodierer liefert 8 Frei schalt signale für 8 Speicherbausteine von jeweils 8 KBytes (max . ), der Ein - /Ausgabedekodierer kann bis zu 8 Ein-/Ausgabe bausteine auswählen . Da das Verfahren der isolierten Ein - /Aus gabe zugrundeliegt , wird das Signal
101M zur Auswahl jeweils
eines Dekodierbausteins auf ei nen der drei Freigabeeingänge geführt . Da die Unterscheidun g von Speic her - un d EA- Adressen raum schon durch die Lese-/Schreib- Steuersignale der StandardSchnittstelle erfolgt , ist diese zusätzliche Unterscheidung nicht unbedingt notwendig; man könnte statt des Signals
101M
auch eine weitere Adressenleitung auf den Freigabeeingang schalten , wenn dies erforderlich wäre . Da der 8085 während des Ein - /Ausgabezyklus die 8 - Bit - lange EAAdresse gleichzeitig auf den höherwertigen Adressenbus A15-8 und auf den niederwertigen Adressenbus
A7 - ~
ausgibt , sind im
- 244 +5 V
r- - -,
8282
I T 1 MER I
1
CLK ;....I-
1
51
OUT
L_
k
_ -__- - - - - - + -
J
TRAP
A1 5
ALE
A1 5 A 8 GRD RESOUT
o-------~
~
RST6 . 5 AD7 RST5 RS T7 . 5 A8
0 - - - --1
CLK
6 .14 4 MHz Cl
Xl
f----I~;
A7
1
8 0 8 5 X2 o--..:-~ S ID ADß' 0 - - - _ - 1 SOD
0-----1 HLDA Q - - - _ _
Aß'
READY
07
1NTR
Dß' 1NTA +5 V
101M 10 k +5 V +5 V Bild 11 S.a Mikroprozessor 8085 mit Buspufferung und Adreß - Zwischenspeicher , Rücksetz.- und Single Step- Einrichtung
3A 3B 4A 4B
lY
10W
2Y
10R
3Y
MEMW
4Y
MEMR
74257 StandardSystemSchnittstelle
- 245 -
o-
74138 x/Y Y,0' Y1 Vcc 0 - - - G1 101M G2A Y2 G2B Y3 Y4 r - - A(l) Y5 r - B( 2) Y6 r - C( 4) Y7
.r
I>p-
l>-
ppp-
RAM-/ROMOekodierer
AlS A14 Al3
A12 A8 A7
(8 K -
+5 v CE
8K-(l6K-1)
1)
Y
T
VCC
GND
27 6 4 A1 2- ,0' 07-,0' OE
I
1V~
CE
VCC GNO 6 26 4 A12-,0' 07-,0' WR Re
J
;;
Aß' 07 I-- fI-- fI-- fI-- fI-- f-
0,0' MEMR MEMW 10R
10W
rr-!-
CLK RES OUT
f- I--
74138 X/Y Y,0'
101M
Yl Y2 D-Y3 D-Y4 D-A(l) Y5 pr-- B(2) Y6 ~ ' - - - C( 4) Y7 ~ EA-Oekodierer Gl '-< G2A L....c G2B
I I
L-
CSCLK C!D07- ,0'wRRD RESEl'
8251A
RxC TxC GND RxD TxD
r
1 I 1~
I
les
---=--
A,0'07- ,0'WR RD 8255
!RESEl'
IPA7- ,0'~
~
uu
Bild l1 8 . b Oekodierung und Anschluß von Speicher- und Ein - /Aus gabeeinheiten an die Standard- Systembus-Schnittstelle
- 246 Interesse einer g l eic hmäßigen Busbelastung die Leitungen A15 - 11 statt A7 - 3 zum EA - Dekodierer geführt . Auf Grund der Beschaltung des EA - Adressendekodierers si nd im System die EAAdressen nach Bild 119 verfügbar . Der serielle
Ein-/Ausgabe -
baustein 8251A (s. Abschn . 5 .4), der mit der Selekt i onslei tung YO =
es
ausgewählt wird , hat intern 2 Kanäle , die mit der
eiD) unterschieden werden . Der Baustein be -
Adreßleitung A~ (=
legt die EA- Adressen
~0H
~lH ,
und
~2H
die Portadressen
bis
07H b l eiben ungenutzt . Der Parallel - Ein - /Ausgabebaustein 8255 (s . Abschn. 5.3) , mit der Selektions leitung Yl =
es
(8255)
ausgewählt , benötigt 4 Port - Adressen (Eingänge Al und AO), so daß 4 Kanaladressen ungenutzt bleiben ; der Baustein 8255 kann wahlweise mit den Adressen
~8
-
~BH
bzw .
~e
-
~FH
angesprochen
werden . Benötigt man in ei n em System mehr als 8 EA-Bausteine , so kann man entweder bis z u drei EA-Adressendekodierer hinzufügen und/ oder den vorhandenen Dekodierbaustein statt mit 10/M mit der Adreßleitung A2 beschalten .
A15 A14 A13 A12 All AIO A9 A8 A7
A6
A5
A4
A3
A2
Al AO
o
0
0/
0/
0/
0/
0/
0/
~~~ Adreßbereich des Dekodierers : 0
Bild 119
- 63
Baustein adressen :
Port - Adressen im Baustein :
0, 8 , 16 , 24 , 32, 40, 48 , 56
0, 1 , 2, 3, 4, 5 , 6 , 7
Festlegung der EA-Adressen durch den EA-Dekodierer
Bei der Festlegung der Adressenbereiche für die Speicherbausteine in Bild 118 ist ab Adresse
~~~~
ein Festwertspeicher
(hier EPROM - Baustein 2764) vorzusehen , damit der Prozessor nach dem Rücksetzvorgang ein Startprogramm vorfindet . Für das Rücksetzen des Systems ist in Bild 118 . a die übli che Rücksetz schaltung angegeben . Zur Einleitung eines definierten Rück -
- 247 setzablaufs muß der Eingang RESIN für mindestens drei Taktpe rioden auf Low - Potential gezogen werden 1131. Der 8085 liefert daraufhin etwas verzögert das Signal RESOUT (high active) , an dessen Ende ein Maschinenzyklus MI (Op - Code - Fetch) mit gelösch tem Befehlszähler-Register beginnt . Unterbrechungen sind nach dem Rücksetzen gesperrt . Da während des Rücksetzab l aufs - eben so wie im HALT- und HOLD - Zu stand - die Adressen , Daten und Steuersignale hochohmig sind, sol l e n die wichtigsten Steuersignale - vor allem das WR - Signal - mit Zugwiderstände n auf High - Potential gelegt werden (Bild 118.a). Der Mikrocomputer unterstützt den Einzelbefehlsmodus des Moni tor - Betriebsprogramms (vgl . Abschn. 3.3) hardwaremäßig mit ei nem zählerbaustein nach Bild 118.a . Dieser Baustein kann ein programmi erbarer Zähler (z.B. 8253, s.Abschn. 5 . 5) sein , der an den Systembus des Mikro computers angeschlos sen ist un d mi t Steuer wörtern
programmiert
wird . Die Zählfunktion wird dabei durch Über tragen der Zählgröße
nein
an den Baustein ge startet . Der Zähler kann wahlweis e a uc h durch einen nichtpro -
Zähler mit Zählgröß e laden und st arten
grammierbaren Stan dard-Zäh lbaustein (z.B. 74193) realisier t werden , der durch einen
Re gisterinhalte des An wenderprogramm s regenerieren mit Sprung au f nächsten Anwenderbefehl
Impul s - z . B . über den SOD - Ausgang des 8085 zu l aden und z u star-
Ausführung eines Befe hls im Anwenderprogramm
;>'TRAP
ten ist . Der ALE - Impuls auf dem
Bild 1 20
Zum Einzelbefehlsmodus
- 248 Takteingang dekrementiert den Zähler zu Beginn jedes Maschinenzyklus um 1. Im Falle des programmierbaren Zählers wählt das single step-Steuerprogramm des Monitors die Zählgröße so , daß der Nulldurchgang des Zählers nach dem Sprung in das zu testende Anwenderprogramm und während des ersten Befehls im Anwenderprogramm stattfindet. Der Nulldurchgang erzeugt über das Signal OUT ein TRAP-Signal am 8085 (vgl. Bild 1 l8 . a), das nach Ausführung dieses Befehls den Prozessor unterbricht und erneut in die single step - Routine zurückkehrt . Eine Übersicht über das Zusammenwirken des single step - Steuerprogramms mit der erzeugten Unterbrechung (TRAP) gibt das Diagramm in Bild 1 20 . Nach jeder Verzweigung in das Monitorprogramm werden z.B. alle Registerinhalte des Anwenderprogramms auf dem Bildschirm angezeigt . Mit einer Tastatureingabe wird die Ausführung des nächsten Anwenderbefehls veranlaßt .
- 249 5
Mikrocomputer - Ein - /Ausgabeorganisation
Der Datenaustausch zwischen dem Mikroprozessor und seinen peri pheren Einheiten erfo l gt über den Systembus . Für den Anschl u ß der peripheren Einheiten an den Mikroprozessor 8085 wird oft die 8080 - Standard- Busschnittstelle nach Abschnitt 4.2.5 zu grundege l egt , deren Zeitverhalten von dem des 8085 - Systembus geringfügig abweicht. Die peripheren Einheiten eines Mikrocomputers haben nac h Ab schnitt 1 .2 . 6 teilweise recht unterschiedliche Aufgaben der externen Datenspeicherung , der Mensch - Maschine - Kommunikation (eigentliche
~in-/Ausgabe)
und der Prozeßsteuerung und - rege -
lung . Durc h diese unterschied l ichen Funktionen bedingt erge ben sich verschiedenartige gerätespezifische Schnittstellen (Bi l d 1 21) mit entsprechendem Zeitverhalten. Neben der 8 - Bit breiten Parallelübertragung eines Bytes gibt es die bitseriel l e Ein - /Ausgabe von Zeichen . Teilweise benötigen periphere Ge räte Steuersignale , über die der einheitliche Systembus nicht verfügt . Besondere Beachtung verdient das Zeitverhalten der verschiedenen Geräteschnittstellen. Während der Mikroprozessor
~}
Adressen
~~~~~~~~~~~
_,~~,~~~~~~~~~~~~~
Daten Ste uerung
==F===$$=$==$==;===;;===i= 07 - 0 Al Aif
Mlkroprozessor . Systembus
<J
e inhe i t li che Systembus Schnittste ll e
x
es EIN - /AUS - RES GABE - BAUSTEIN
<1 PERIPHERE EINHEIT (EA - Gerät) Bild 12 1
gerätespezi f isc he Schnittstel l e y
Schnittstellen- Anpassung durch Ein - /Ausgabebaustein
- 250 für die Übertragung eines Bytes über den Systembus 3 Grundtakte (z.B . 1 Disc z.B. 32
~s ~s
bei T = 333 ns) benötigt , braucht die F l oppy für einen Datentransfer , ein Nadeldrucker
druckt ein Zeichen z.B . in 12 , 5 ms ab und zwischen zwei a ufeinanderfolgenden Eingaben von einer Tastatur können Sekunden oder Minuten vergehen . Während die Abläufe auf der Systembus Schnittstelle im wesentlichen durch das Zeitraster des Systewtaktes (T) bestimmt sind , wird auf der Geräteseite das Zeit verhalten durch die Arbeitsgeschwindigkeit der peripheren Ein heit vorgegeben . Die Anpassung der gerätespezifischen Schnittstellen an den Systembus erfolgt durch zwischengeschaltete Ein - /Ausgabebausteine oder Interface - Bausteine nach Bild 1 21, die stets dieselbe , systemkompatible Bus - Schnittste l le , jedoch unterschiedliche Geräteschnittstellen besitzen. Nach Abschnitt 1 . 2 . 6 unterscheidet man bei den Ein - /Ausgabe bausteinen einfache , nichtprogrammierbare Pufferbausteine mit/ oh ne Zwischenspeicher für ein Datenbyte , die vielseitig e i n setzbaren programmierbaren Standard- Ein - /Ausgabebausteine mit paralleler und serieller Geräteschnittstelle sowie programmier bare Interface - Bausteine für bestimmte Gerätetypen , die die Gerätesteuerung ganz oder teilweise beinhalten . Als Beispiel für Ergänzungseinheiten nach Abschn . 1.2 . 7 wird im folgenden der programmierbare Zeitgeber 8253 beschrieben . Die Programmierung der Bausteine erfo l gt wahlweise mit Ein - / Ausgabebefehlen oder Speicherbefehlen , die j ewei l s ein Steueroder Statusbyte bzw . ein Datenbyte vom/zum Baustein übertragen . 5. 1
Schnittstellen von peripheren Einheiten
5.1.1
Passive Parallel - Ein - /Ausgabe
Die einfachste Geräteschnittstelle erhält man bei der passiven Digital - Ein - /Ausgabe. Der 8 - Bit- Mikroprozessor gibt dabei ohne begleitende Synchronisationssignale ein Datenbyte paral l el , d . h . auf den 8 Datenleitungen des Systembus gleichzeitig , an eine periphere Einheit aus, bzw . liest ein Byte von der peri pheren Einheit über den Systembus in den Akkumulator ein .
- 251 Für die Parallel - Ausgabe wird zur Zwischenspeicherung der flüchtigen Datenbussignale (Standzeit ca. 1,5 Taktperioden) im einfachsten Fall ein 8 - Bit-Speicherbaustein 74LS373 zwischen den System-D atenbus und das " Gerät " geschaltet, das nach Bild 1 22 z . B. eine 8 - Bit- lange Leuchtdiodenanzeige sein kann. Der Pufferspeicher entkoppelt die LED-Anzeige vom Bus , d.h . er be l astet den Datenbus mit einer TTL-Eingangslast und liefert auf der Ausgangsseite für den Betrieb der Leuchtdioden einen Strom von max. 24 mA (I
). Der Speicherbaustein mit 8 D-Flipflops oL übernimmt die Binärzustände vom Datenbus D7 -~, solange der
Enable - Eingang G auf high - Potential liegt. Das ist während ei nes Bus - Ausgabezyklus (IOW = low) der Fall, wenn der Ausgabe Speicherba ust ein zusätzlich mit (A7) =
~
ausgewählt wird (li -
near e Baustein-Auswahl). Statt IOW kann auch die UND-Verknüp fung der Signale 101M und WR zur Bausteinauswahl verwendet werden . Eine Leuchtdiode i leuchtet , wenn auf der entsprechenden Datenleitung D eine ~ (d . h . low- Potential) liegt . Die i Ein - /Ausgabeadresse des Bausteins ist nach Bi l d 1 22 gleich 7FH . Die zwei erforder liche n Befehle für die Ausgabe eines Bytes si nd im Beispiel 32 gegeben .
A7-~
-
IOW
D7-~
-
J ~l A7 D7 D6
-
'- D Systembus (teilweise)
Bild 12 2
I."
+5 V G
oe
Vcc GRD
8D 1> 8Q 7D 7Q 6Q 6D 5Q 5D 4D 4Q 3Q 3D 2D 2Q lD 1> 10 74 LS373
+ 5 V
r----- -, I 180.11.
1
I
-
,~
.....
1
I
1-
I 1-
ßI
L
/i ~ ~ ~
I I I
I I I I
~ _ _L~I2.._.J
Parallel Ausgabe -SChn ittstelle
LED - Anzeiges chaltun g an passiver Digital-Ausgabe
- 252 Beispiel 32:
Befehle für Digital - Au sgabe nach Bild 1 22 .
BlMU
EQU
OOllOlOlB
AUS GAB
EQU
7FH
;Auszugebendes Bitmuster ;EA- Adresse des Ausgabebauste ins
MVl
A, BlMU
;Bitmuster im Akku bereitste llen
OUT
AUSGAB
;und auf Leuchtdioden anzeigen
Ein e ei n fac h e Parallel - Eingabe o hne Synchronisationssignale erhält man mit Hilfe e iner AChtfach-Treiberschaltung, über die eine periphere Eingabeeinheit an den Systembus a ng esc hloss e n we rden kann. Da die periphere Eingabe in der Regel langsamer ist als der Bus - Eingabezyklus, benötigt man hier eine n uni direktion a l en Pufferbaustein ohne Zwischenspeicher (Bild 123) . Die Ausgänge des Pufferbausteins zum System-D ate nbu s hin müs sen im Ruhezustand hochohmig sein (high impedance - Zustand) . ~
Wenn der Baustei n mit seiner Adresse (A6) =
~
und (lOR)=
ausgewählt i st , werden die Binärzustände der Schalter auf den System -D atenbus durchgeschaltet, um sch l ieß l ich in den Akku mul ator z u gelange n. Nach Bild 1 23 bewirkt ein geschlossener Sch a lter Si (i =
~,
1, ... 7) , daß während des Eingabe -Bu szyklus
auf d er Date n-Busl eitu n g D Low-Pote n tial li egt und in die i A7-~ IOR D7-~
\
x 7432
8 x Ein - /Au sscha l ter D~
r--
01
I
A6
lY2 lA2 I lA 3 lY3 I lA4 lY4 I 2Al 2Yl 2A2 2Y2 2A3 2Y3 ~D_7______'Il ~~~~j__~~I~ 2Y4 <J 2A4 02
--S~ SI
52
I
I
I
I I 57
I
A L ____ ..J
Syste mbus (teilwe is e ) Bild 123
74LS244
ParallelEingabe - Schnittstelle
Passive Digital - Eingabe mit 8 Schaltern
- 253 Akkumulatorstelle Ai eine fiI (entspr. "low " ) geladen wird. Die Schalter können mechanische, von Hand betätigte Schaltelemente, elektromechanische (Relais) oder elektronische Elemente sein . Beispiel 33 zeigt die Befehle eines Unterprogramm- Aufrufver teilers , der durch die SChalter - Eingabe gesteuert wird . Beispiel 33:
Aufruf-Verteiler mit Digital - Eingabe. Jedem
Schalterelement Si ist ein Unterprogramm UP
fest zugeordnet . i Nach dem Einlesen der Schalterkombination S7 - ß werden nacheinander diejenigen Unterprogramme aufgerufen und ausgeführt, deren zugeordneter Schalter geschlossen ist. IN AUFRVT :
filBFH
CNC
; Einlesen der Schalterzustände S7 - fiI ; Schalterzustand (S7) ins CY-Flag
RAL UP7
; Sprung ins Unterprogramm UP7,wenn ; (A7)
CNC
~
(S7 )
~
fiI , sonst weiter
; Schalterstellung (S6 ) ins CY - Flag
RAL UP6
;Nach UP6 , wenn (A6)
~
(S6 )
~
fiI
;und so weiter bis CNC upfil
Beim Schließen und Öffnen von mechanischen Kontakten trete n Pre l lerscheinungen von je 10 ms bis 20 ms Dauer auf , die einer Eingabeschaltung während eines Schaltvorgangs mehrere Impulse vortäuschen 1471 . Bei SChalter- Eingaben kann man oft davon ausgehen , daß sie im statischen Zustand abgefragt werden, so daß man eine Entprellung weglassen kann . Bei mechanischen Tasten - und Tastatureingaben ist die Kontakt - Entprellung erfor derlich , damit beim einmaligen Drücken einer Taste nur ein Im puls im Mikroprozessor erkannt wird . Eine neben dem RC - Tiefpaß
P--+---C> 0 i
Bi l d 124
Elektronis c he Entpre ll un g einer Taste mit Umscha l tkontakt
- 254 oft verwendete elektronische Entprellschaltung für eine Taste mit Umschaltkontakt ist in Bild 124 gegeben . Das RS - Flipflop liefert an seinem Ausgang Qi einen entprellten Impuls , wenn die Taste i gedrückt wird . Der Mikroprozessor kann das Signal über eine Digital - Eingabe nach Bild 123 einlesen. Di e Hardware - Entprellung kann wahlweise durch eine Software - Entprel lung (Abfrage im Programm nach der Prellzeit) ersetzt werden. 5.1 . 2
Parallele Handshake - Schnittstelle
Bei dem passiven Datenaustausch nach Abschnitt 5 . 1 . 1 gibt es keine Synchronisationssignale zwischen den Teilnehmern, sodaß hiermit nur sehr einfache "Geräte " betreibbar sind. will man einen definierten
Da~enaustausch
zwischen zwei autonomen Ein-
heite n X und Y (nach Bild 121) organisieren , von denen jede ein eigenes , unabhängiges Taktsystem besitzt , so muß zwischen den zwei Einheiten eine Handshake - Schnittstelle eingerichtet werden . Hierzu benötigt man neben den 8 , 16 oder mehr parallelen Datenleitungen mindestens zwei Handshake - Signale (timing Signale) , von denen eines die Daten als gültig kennzeichnet und das andere Signal den Empfang der Daten quittiert (Quittungsbetrieb). Die Signalnamen TX (vom zentralen Gerät X kommend) und TY (von der peripheren Einheit Y kommend) sind in Anlehnung an DIN 66202
1481 für die allgemeine Darstellung im
Signal - Zeitdiagramm (Bild 125) gewählt. Obwohl in DIN 66202 eine Kanal - Bus - Schnittstelle im engeren Sinne definiert wird , ist das Handshake-Verfahren ein allge meines , vielfältig eingesetztes Schnittstellenprinzip zur Syn chronisation des Datenaustauschs zwischen voneinander unabhängigen Geräten. Durch das Qu i ttungsverfahren paßt sich die Übertragungsrate den unterschiedlichen Verarbeitungs - und Re aktionszeiten beider beteiligter Partner an. Die zeitlichen Abläufe (Bild 125) sind für Eingabe und Ausgabe unterschiedlich. Für die Daten - Eingabe (Bild 125.a) gilt :
(2)
Die X-Einh e it (EA- Baustein) fordert mit dem I - Setzen von TX die periphere Y- Einheit auf, ein gültiges Datenwort einzugeben.
- 255 -
~ Das Gerät (Tastatur, Analog - Eingabe , Floppy Disc) setzt nach der ihm eigenen Reaktionszeit t tig , die es bereits (Vorhaltezeit t
v
mit TY die Daten gül l ) auf die Datenleitun -
gen geschaltet hat.
(2)
Nach der Zeit t
(3)
Die Y-Einheit schaltet nun die Datenausgänge ab und meldet
zeigt die X- Einheit durch das 0 - Setzen 2 des Signals TX an, daß sie die Daten in ein Datenregister
übernommen hat. dies durch Nullsetzen von TY : Ende des Eingabezyklus. a) Dateneingabe
_ _---=:=....J1 (X)
TY
0)
01. .--, . ,----~. . .1-,
TX __
"2"
'
\
\.f:.)./
/
' " I
I _ _ \~_.... _ ____ _-J,
"
'-10 _____ ~,~
,
(Y)
I
DATEN - - ~w..!":":''''''w..!..:..:.,~-=D:.:a:..:t:..:e:..:n.:....g,,-u::. ·· ::.l.:;;t.:; i ... g_J '1:.":"':":":"":":":'''-'-'-'-'I I I I I Daten I t-tv-l I I ungült ig f- tl --t- t2 t3--1
-+-
b) Datenausgabe TX'"
CDI~--,-------~ -_~I-~ '\ "2"
-----~I
I
,
(X)
TY
Bild 125
L,. . . . . : . . " , - - - - - - -
I
I
,
- - _ _ _ _.;.-:_ _ _ '-.....11-"'"
DATEN ... Signalrichtung
\!;.)
t:\
'-1~\V_4_ __
I
I
I
I
(Y)
IOX~__~D~a~te~n~g~Ü~lt~i~q__~~Xr.I~II~II~II~I~II~II~I I
~
I
t4 t n ~
.,..
I
I
t
-1
3
Handshake-Signaldialog für Eingabe - und Ausgabezyklus
Für die Dat enausgabe (Bild 125 . b) gilt:
CI)
Mit TX = 1 zeigt die X-Einheit (EA-Baustein) an, kurz zuvor (Dat en -Vorlaufzeit t
v
daß sie
) gültige Daten auf die
Datenl e itungen gelegt hat .
~
Die Ausgabeeinheit Y (z . B. Bildschirm , Drucker , Floppy Disc) setzt nach der Übernahme der Daten in ein Register
- 256 nach der Zeit t das Antwortsignal TY auf 1. l Nach einer bausteinabhängigen Reaktionszeit t 2 signalisiert die X-Einheit durch Rücksetzen von TX, daß sie die Daten unmittelbar oder nach einer Nachhaltezeit t n ungül tig schaltet.
~ Mit de m Rücksetzen von TY beendet die Y-Einheit die Datenausgabe; es kann eine weitere Ausgabe stattfi nden . Diesen prinzipiellen Handshake - Ablauf findet man bei verschie denen Geräten in unterschiedlichen Modifikationen vor ; in Ab schnitt 5 . 3 wird z .B. die Handshake -Schnittstelle d es ParallelEin-jAusgabebausteins 8255 beschrieben. Programmierbare Ein - jAusgabebausteine haben nach Abschn . 1.2.6 neben Datenregistern auch Steuerungs- und Statusregister . Im Statusregister wird z . B. vermerkt , ob das Datenregister mit gültiger Information geladen ist oder ob es ge l aden werden kann, ob der Interface-Baustein noch arbeitet (busy) oder fertig (ready) ist. Di e Information im Statusregister wird durch den Mikropro zessor ausgewertet (Bild 29) . 5 .1. 3
Serielle Ein - jAusgabeschnittstelle
Neben der 8 - Bit - breiten Parallelschnittstelle hat die serie ll e, genauer bitserie lle Ein- jAusgabe in der Mikroprozessortechn i k eine große Bedeutung erlangt. Auf einer bitseriellen Schnittstelle sendet der Daten sender die Informationsbits eines Wortes oder eines Zeichens zeitlich n acheinander in einem bestimmten Takt über eine Übertragungsleitung zu einem Daten - Empfänger (Bi l d 12 6). Hierbei sind Simplexbetrieb (Daten nur in einer Richtung vom Sender zum Empfänger) , Vollduplexbetrieb (gleichzeitige Datenübertragung in beide Richtungen) und Halbduplex betrieb (Datenübertragung in beide Richtungen , aber nur abwechselnd) zu unterscheiden . In der prinzipiellen Darste llung von Bild 126 sitzt im Sender ein Schieberegister, das das übernommene Datenbyte mit dem Sen detakt Bit für Bit über einen (nicht dargestellten) Leitungstreiber auf die Übertragungsleitung schaltet . Im Empfänger sam-
- 257 melt ein Schieberegister die ankommenden Bits mit dem Empfangs takt auf , bis das Datenbyte vOllständig ist und zur Weiterver arbeitung para l lel ausgelesen wird. Parallel
Parallel Schreiben D76543210 I
TxDI
1 I
I
Sende takt
Datensender 'D E E
I Serielle I EmpfangsDatenempfänger IÜbertragungs - : takt :einrichtung I (DEE)
Abk. : DEE d.h. Daten - End-Einrichtung (Mikrocomputer oder periphere Einheit, Terminal) TxD d.h . Sendedaten, Bild 126
RxD d.h. Empfangsdaten
Serielle Übertragung eines Bytes
In der Datenfernübertragung (DFÜ)
1491 benötigt man zur Über -
brückung größerer Entfernungen zusätzlich z'u den
!2aten~nd~in
richtungen (Computer, Terminals, Schnittstellenmultiplexer) Datenübertragungseinrichtungen DÜE (MODEM d . h. Modulator - Demo dulator) nach Bild 127, die die digitalen seriellen Schnittstellensignale der DEE in modulierte Analogsignale umwandeln. Diese werden über größere Entfernungen über Telefonleitungen , Standleitungen oder andere Übertragungssysteme übertragen. Die digitale Schnittstelle zwischen DEE und DÜE wurde frühzeitig von internationalen und nationalen Normungsgremien als V.24/ (V.28) - Schnittstelle (CCITT)
1501, als RS 232C- Schnittstelle
(EIA, d.h . Electronic Industries Association)
1511 und in DIN
66020 (FNI, d.h. Fachnormenausschuß Informatik)
152 1 genormt ,
um die Geräte verschiedener Hersteller miteinander betreiben zu können . In der Computer- und Mikrocomputertechnik hat die bit serielle Schnittstelle der Datenendeinrichtung als V. 24 - Schnittstelle für periphere Geräte wie Bildschirm- Terminals , Tastaturen und Drucker sowie für di e Kopplung von Mik r ocompu t ern v e rbr e i t ung
- 258 erlangt . Da diese Peripheriegeräte meist in unmittelbare r Nähe des Mikrocomputers oder zumindest in demse l ben Gebäude stehen, benötigt man hier keine Datenübertragungseinrichtungen, son dern man verbindet die Datenendeinrichtungen gemäß Bild 127 direkt über die digitale V.24 - Schnittste lle miteinander . V. 24/28 RS 232C DIN 66020
Datenübertragungs ,ichtung
V.24/28 RS 232C DIN 66020
t
DEE
~ D Ü E I-------------;D Ü E
DEE
Datenübertragungsstrecke _ _ , MODEM ~
MODEM ,
_ _ _ _ _ _, - ,_ _ __ __ _ _ _- J
Weglassen der DÜE'en bei kurzen Entfernungen Bi l d 127
Datenübertragungssystem mit/ohne MODEMs
Die V.24-Norm definiert ca. 50 SChnittstellenleitungen zur Übertragung von binären Daten , Steuer- und Schrittaktinforma tion zwischen DEE und DÜE . Die V. 28-Norm l egt dazu die e l ektri schen Eigenschaften (u.a. Signalpegel) der definierten Leitungen fest. Die Normen DIN 6602 0 und RS 232C umfassen die Leitun gen , deren Funktion und Pegel . Viele Signale der V.24 - Schnittstelle beziehen sich auf den Betrieb und die Steue rung der Datenübertragungseinrichtungen DÜE. In Tafel 24 ist eine Auswahl derjenigen V. 24 - Schnit tstel lensignal e z usammengeste llt , die vor allem beim Anschluß von peripher e n Geräten ohne DÜE be nutzt werden . Die Ansch l ußnummern bezi e h e n sich auf den 25-poligen D-Subminiatur - Steckverbinder nach Bild 128 . Auch die in Taf e l 24 angegebenen Leitunge n werde n bei realisierten Geräteanschlü ssen nur soweit benötigt verwendet und da zu noch teilweise in unterschiedlichen Funktionen. Eine minimal e , oft angewendete V. 24-Geräte-Schnittstelle besteht aus den drei Leitungen Betriebserde (E2 , GRD) , Sendedaten (Dl , TxD) und
Empfangsdaten (D2 , RxD)
(Bild 128) , über die z.B. ein
- 259 Tafel 24 OEE
-
V. 24 - Schnittstellenleitungen für den direkten An schluß von peripheren Geräten 150 I 1511 1521 (Auswahl)
I
IOIN
' Bezeichnung dt .
* ) I V. 24 : 66020 : I
1 7 2 3 4 5 6 20 15 17
'---
I 101 I El 1 1 02 I E2
Schu tzerde
I Dl 1, 1 0 4 1, D2
Sendedaten
I 103
:
i
S2 1 1 05 I 1 06 I M2
,
I 107
I Ml
IRS 1 Bezeichnung eng1. 1232 C : AA Protect i ve Grou n d
: AB
Betriebserde
Received Data RxD
Empfangsdaten
BB CA
Req uest to Send RTS
Sendebereit
CB
Clear to Se n d CTS
Betriebsbereit
CC
Data Set Ready DSR 1 Data Terminal Ready I DTR ,I Transmit Cl ock TXC
!
1 11 5 1 T4 1 I
Trans,m i tte d Data TxD
Sendeteil ein
!108 . 2 ! S1. 2 Endgerät ' betrlebSberelt ! 1 Sendeschrittakt T2 114
!
Signa l Gro u nd GRD
BA
Empfangsschritt taKt
CD DB DD
i
1 Receive Cl ock RxC I
*) Ansch l ußnummer am 25poligen Subminiatur D- Steckverbinder
Terminal ( Tastatur mit Bildschirm) an einen seriel l en E/A - Bau stein des Mikrocomputers angeschlossen ist . Über die Schnitt stelle werden ASCII - Zeichen (7 Bit und wahlweise ein Paritäts bit) übertragen. Befinden sich beide Daten-End- Einrichtungen im DTE - Modus (data terminal equipment , 1491) , dann müssen die Date n leitungen TxD und RxD im Verbindu ngskabel ge k reuzt werde n, damit ein Datensender mit einem Datenempfänger verbunden ist.
-- - - - 14"
1 DTE - Mode
I
DTE-Mode
2 TxD
TxD RxD
3 RxD 7
25
GRD
V . 28 Spannungspegel
Bild 1 28 Minimale V.24 - Verbindung (Term i nal am Mikrocomputer)
7
25
t
Systembus
I 1 3 '_ Mikrocomouter _ _ _ _' _ _ _ _ _
- 260 Als Beispiel für die Anwendung weiterer V.24 -S teuerleitungen bei Verbindungen ohne MODEMs sei der Anschluß eines Matrixdruckers an einen Mikrocomputer genannt. Fügt man zu dem Minimal system (Bild 128) die Leitung
r-
RTS (pin 4) Drucker
Mikrocomputer V.24 (Pin 5) CTS----.J hinzu, dann kann die Druckersteuerung die Übertragung von Zei chen im Mikrocomputer stoppen , wenn der Zeilenpuffer im Drukker voll ist. Hierzu muß das Druckprogramm vor dem Absenden eines Zeichens an den Drucker das Eingangssignal CTS auf wahr abfragen . Die elektrischen Eigenschaften der "V.24"-Leitungen sind in der V. 28-Empfehlung, in DIN 66020 und in der RS 232C - Norm festgelegt. Danch müssen die Sender- und Empfängerschaltungen so ausgelegt sei n, daß auf der Schnittstelle bzgl . der Betriebserde die Spannungspegel Tafel 25
gemäß
Tafel 25 eingeha lt en werden.
V. 24-Spannungspegel (V.28 - Norm)
Spannungspegel - 25 V < U < - 3 V
-
3V < U < + 3V
+
3V
Datenleitung
Steuer - !Meldeleit un g
1
AUS (OFF) (idle)
Undefinierter Bereich EIN (ON)
fiI
Zur Umsetzung der TTL - Pegel in V. 24!28 - Spannungspegel auf der Übertragungs seite werden meist integrierte Pegelumwandler - Bausteine nach Bi ld 129 verwendet. Betreibt man die Bausteine mit
1
14 x 75188
Bild 129
1
14x75 1 89
Pegelumsetzer TTL!V . 28 für eine V.24 -Leitung
- 261 Ver sorgungs spannungen von +/- 12 Volt , so erhält man auf der Schnittstelle Signa l spannungen von etwa + 10 V (entspr . logisch .) und - 10 V (entspr. logisch 1). Bei der seriellen Übertragung von Daten über V. 24-Schnittste llen werden grundsätzlich Zeichen von 5-, 6 -, 7 - oder 8 Bit Länge im Synchron - oder Asynchronmodus übertragen. Bei der synchronen Datenübertragung folgen die Zeic hen eines ~a!e~b~o~k~
mit einer durch den Sende- und Empfangstakt vorge -
gebenen Datenrate lückenlos aufeinander . Die Synchronisation des Emp fängertaktes erfolgt zu Beginn eines Blocks durch die Übertragung von 1 oder 2 Synchronisationszeichen (SYN, vg l. Ta fel 3) und muß während des Blocktransfers aufrechterhalten wer den. Die synchrone Übertragungstechnik wird hauptsächlich in der Datenfernübertragung angewendet, wo es auf eine gute Nut zung der Datennetze ankommt. Im weiteren soll auf die asynchro ne Datenübertragung eingegangen werden , die beim Anschluß von peripheren Geräten an Mikrocomp u ter eine Ro ll e spielt . Dabei wird
~i~ ~e~c~e~
synchron vom Sender zum Empfänger übertragen ,
während zwischen zwei aufeinanderfolgenden Zeichen unterschiedlich lange Pausen liegen können. Diese Betriebsform kommt z . B. der Eingabe von Zeichen über eine Tastatur entgegen . Im Asynchron-Modus gibt der Sender die Bitstellen eines Zei chens mit einem Sendetakt auf die Datenleitung, von der sie das andere Datenendgerät mit einem Empfangstakt gleicher oder nahezu gleicher Frequenz e ntgegennimmt (vgl . Bild 126). Der Empfangstakt wird üblicherweise nicht zwischen den Datenendeinric htunge n übertragen, sondern in jedem Gerät (quarzstabi lisiert) erzeugt. Normalerweise sind Sendetakt TxC und Empfangs takt RxC in einem Gerät gleich und auf das 16- oder 64-fache der gewün schten Datenübertragungsrate in Bit/s (Baud) einzuste llen. Zur fehlerfreien Übertragung eines Zeichens im Asyn chronmodus muß der Empfänger synchronisiert werde n, d.h. e r muß erfahren, wann ein Zeichentransfer beginnt und wann die einze l nen Bitstellen des Zeichens abzufragen,
d . h . in das Emp -
fangs - Schieberegister einzutakten sind. Die Voraussetzung hier für schafft die Übertragung eines Zeichens als Zeichenrahmen
- 262 (engl. frame) nach Bild 130. Es zeigt die logischen Zustände der zu übertragenden Bits (obere Bildhälfte) und die entspre chenden V.28 - Spannungspegel (untere Bildhälfte). Die Übertragung ei n es Bits wird als Schritt bezeichnet . Aus der gewählten Datenübertragungsrate von 50, 75, 1 10, 300 , 600 , 1200 , 2400, 4800, 9600 oder 19200 Baud ergibt sich die Übertragungszeit für einen Schritt. Bei einer Baudrate von 2400 Schritten/s dau ert ein Schritt 0,4166 ms, die Übertragung eines Rahmens nach Bild 130 mit 11 Schritten (1 Startbit , 7- Bit - Zeichen , 1 Pari tätsbit und 2 Stoppbits eingestellt) benötigt somit 4,583 ms .
P
\ \
2 Stopp schritte
061 \ UV . 28 /V
I-
Zeichenrahmen
Pause
/
:---" t .. I
~::tJ I I I I I I I I I ~
Übertragungsrichtun9
Bild 130 .Zeichenrahmen bei asynchroner Datenübertragung (Beispiel: 7 - Bit Zeichen , Paritätsbit, 2 Stoppschritte) Zu Beginn erzeugt der Sender einen Startschritt (logisch ß), der entweder unmittelbar auf die Stoppschritte (wahlweise 1 oder 2) des vorhergehenden Rahmens folgt oder eine Pause (logisch 1) ablöst . Die l-O - Flanke des Startschritts startet im Empfänger einen Zähler mit der z.B. 16-fachen Zählfrequenz RxC (bezogen auf die Übertragungsrate) . Ergibt die Abfrage der RxD Leitung nach 8 Zähltakten, daß es sich wirklich um einen Startschritt (logisch ß) handelt, dann fragt der Empfänger nach 16 weiteren Zähl t akten die erste, ni e derwertige BitsteIle Dß des Zeichens in der Schrittmitte ab usw. Nach dem Empfang von ein oder zwei Stoppschritten ist ein Zeichenrahmen zu Ende und das
- 26 3 Endgerät wartet auf einen neuen Startschritt . Dieses asynchro ne Synchronisationsverfahren garantiert nur dann eine fehlerfreie Datenübertragung, wenn die Frequenz TxC des Sendegeräts und die Frequenz RxC des Empfangsgeräts so nahe beieinander liegen , daß für die Dauer eines Zeichentransfers die Bitabfrage im Empfänger nicht in den Bereich der Schrittwechsel (Flan ken) fällt. Geringere Bedeutung als die v.24-Schnittstelle hat in der Mi krocomputertechnik die serielle 20 mA- Linienstrom-Schnittstelle (Teletype - oder current loop-Schnittstelle), da die lang samen elektromechanischen Fernschreiber (110 Baud) als Bedien geräte
durchwegs von den Datensichtgeräten abgelöst wurden.
Die Schnittstelle ist in der CCITT - Empfehlung V. 31 definiert; sie besteht aus einer Sendestromschleife und einer Empfangs stromschleife (4 Leitungen), die im Ruhezustand je einen Li nienstrom von 20 mA (entspr. logisch 1) führen (Bild 131) . Eine logische 0 erhält man durch Unterbrechung des Linienstroms. Der Zeichenrahmen für die asynchrone Übertragung ent spricht Bild 130 (obere Bildhälfte). Schaltungen für die TTL/ 20 mA - Umsetzung findet man in 1471. TTY TX TxD GRD RxD
TTL/
20 mA
Linien - TTY TX RET strom TTY RX 20 mA TTL/ Empfangsschleife Linien- TTY RX RET strom
Bild 131
r----'
I
Sendeschleife
L ___
I Empfangsmagnet I I I I Sendekontakt I ~
Fernschreiber
Linienstrom-Schnittstelle mit Teletype - Anschluß
In BOBS-Systemen wird der Zeichenrahmen für die serielle Übertragung meist hardwaremäßig mit Hilfe eines U(S)ART-Bausteins (s. Abschn . 5 . 4) erzeugt; er kann jedoch auch per Programm über die SID-/SOD-Ein-/Ausgänge des BOB5 (vgl. Abschn . 2 . 1.5) generiert werden.
- 264 5.2
Steuerung der Ein-/Ausgabe durch den Mikroprozessor
Im vorhergehenden Abschnitt 5 . 1 wurde der Datenaustausch an der Schnittstelle zwischen peripheren Geräten und Ein-/Ausgabe bausteinen beschrieben. Im folgenden werden die grundsätzlichen Möglichkeiten des Datenverkehrs zwischen den Ein-/Ausgabebausteinen am Systembus und dem Mikroprozessor (vgl . Bild 98) behandelt, die sich durch unterschiedliche Hardware - Unterstützung der .Ein-/Ausgabevorgänge auszeichnen. Bei der programmierten Ein - /Ausgabe (Einzelzeichen-Ein-/Ausgabe)
(s . Abschn . 5.2 . 1
und 5.2.2) wird jedes Byte mit einem Ein-/Ausgabebefehl (IN/ OUT port) über den Systembus einzeln übertragen , während bei der Block-Ein-/Ausgabe (s. Abschn. 5.2 . 3) ein DMA - Control l er Baustein ganze Blöcke von z.B. 128 Bytes selbständig - ohne direkte Beteiligung des Mikroprozessors - zwischen dem Gerätepuffer und dem Hauptspeicher überträgt. Bei der Wahl des Ein-/Ausgabeverfahrens sind die Übertragungsrate und die Arbeitsweise der peripheren Einheit zu beachten. Geräte wie Bildschirmausgabe, Lochstreifenleser/-stanzer und Zeichendrucker arbeiten im Start-Stop- Betrieb , d . h. das Gerät fällt in den Stop - Zustand und wartet, bis es vom Prozessor mit einer Ein-/Ausgabeoperation bedient wird. Erfolgt dies , so startet das Gerät automatisch die nächste Zeichen-Ein-/Ausgabe. Wird das Gerät vom Prozessor ohne Wartezeiten immer sofort be dient , dann arbeitet es mit der maximal mög l ichen Geschwindigkeit. Synchron umlaufende Geräteeinheiten wie die Floppy Disc übertragen Daten mit einer festen , durch die Gerätetechnologie bestimmten Transferrate (Bytes/s) und müssen vom Mikroprozessor in festen Zeitabständen mit Ein - /Ausgabeoperationen bedient werden. Leert der Mikroprozessor beim Lesen von der Diskette den Zeichenpuffer im Inte rface nicht vor dem Eintreffen des nächsten Bytes von der Diskette, dann wird das vorhergehende Zeichen im Pufferregister überschrieben (Zeitfehler). Durch größere Pufferspeicher (z.B. für e inen Datenblock) zwischen Gerät und Mikrocomputer kann die Zeit fehler-Gefahr entschärft werden .
- 265 5 .2.1
Polling-Verfahren
Wartet der Mikroprozessor im Programm auf das Eintreffen eines externen Ereignisses, das durch ein binäres elektrisches Signal dargestellt wird , so kann dies durch wiederholtes Abfragen (polling) der Ein-/Ausgabeeinrichtung geschehen (Bild 132). Ist das Ereignis eingetreten, reagiert das Programm durch eine Ein - /Ausgabeoperation. Die programmierbaren Ein-/Ausgabe - und Interfacebausteine unterstützen das POlling- Verfahren , indem sie ihren Zustand bzw. den Zustand der angeschlossenen periphe ren Einrichtung in einem Statusbyte speichern (vgl. Bild 29). Die Ein - /Ausgabeabläufe zwischen dem peripheren Gerät und dem EA-Baustein (vgl. Abschn. 5 .1 ) beeinflussen die Zustandsbits im Statusbyte des Ein - /Ausgabebausteins : Hat die periphere Einheit ein Byte über ihre Schnittste lle zum EA- Baustein übertragen, dann setzt dieser ein Statusbit "BEREIT FUR EINGABE" - der Mikroprozessor kann also ein Byte über den Systembus einlesen -
; hat der EA- Baustein ein Byte an die
periphere Einheit ausgegeben , so setzt er ein Statusbit mit der Bedeutung " BEREIT FUR AUSGABE " - der Prozessor kann also ein Byte über den Systembus ausgeben. Dieser Ablauf ist in Ein-/Ausgabe-Bausteinen mit paralleler Handshake-Schnittstelle (vgl. Abschn. 5.1 . 2) und bitserieller Schnittstelle (vgl. Ab sehn. 5.1.3) im Prinzip gleich. Hat z.B. ein EA- Baustein ein Zeichen an einen Matrixdrucker ausgegeben, so ist sein Puffer register zur Aufnahme eines weiteren Zeichens vom Mikroprozes sor bereit und er vermerkt dies in einem Statusbit BEREIT FUR AUSGABE. In verschiedenen EA-Bausteinen sind Statusbits mit derse lb en Bedeutung oft unterschiedlich benannt. Das Polling- Programm (Bild 132.b) liest das Statusbyte des EABausteins und fragt das aktuelle Statusbit solange auf "wahr " ab , bis eine programmierte Reaktion erforderlich wird: Von der Tastat ur wird ein Byte eingelesen, an die Drucker-Schnittstelle ein weiteres Zeichen ausgegeben . Der Ein-/Ausgabebefehl für ein Byte (programmierte Ein-/Ausgabe) invertiert im allgemei nen das betreffende Statusbit im EA-Baustein , d.h. im Falle der Drucker- Ausgabe "Pufferregister voll ",
nach dem Abdruck
- 266 "P u fferregister l eer " . I n e i ner Abfrageschleife können auch mehrere EA - Geräte zyk l isch n acheinander agefragt und bei Bedarf mit einem Wort - / Bytetransfer bedient werden . a) Ab fragen einer Leitung I
Bi l d 132
b) Abfragen von Statusbits I
Ein- /Ausgabe nach dem Po l ling - Verfahren
Das Pol l ingverfahren ist für Start - Stop - Betriebsweise und für solc he sync h ron arbeitende n Ge r äte geeignet , mit deren Trans ferra t e das Programm gut Schritt h a l ten kan n. Bei ei n em Win chester - Plattenlaufwerk mit einer Transferrate von ca . 500 k Byte/sec (entspr . einer Übertragungszeit von ca. 2 ~s/Byte) verbietet sich der POlling - Betrieb . Der Nac h teil des wenig auf wendigen und übersichtliche n Polling - Verfahrens liegt darin , daß der Mikroprozessor - bedingt durch die " unproduktive " Syn chronisations - Warteschleife - ausschließlich mit der Ein - /Aus gabe beschäftigt i st , solange diese läuft . Als Beispiel sei der Betrieb e i ner Analog - Eingabe am Systembus des 8 0 85 im Po l ling - Verfahre n e r läutert. Es so l l ei n e sich ä n der n de analoge Spannung abgetastet und im Mikrocomputer digi ta l erfaßt werden . Hierzu ist nach Bild 133 ein Analog - Digita l Konverter
1471 (z . B . mit 8 Bit breitem Digita l - Ausga n g) er -
- 267 forderlich, der die Analogspannung U bzw. U ' im Bereich 0 ... A A +10 V an seinem Eingang in eine absolute 8- Bit - Dualzahl umwan delt, die über einen Pufferbaustein (vgl. Bild 123) auf den Datenbus des Mikroprozessors gescha l tet wird . Die Zuordnung von Analogwert zu Digitalwert ist in der Tabelle in Bild 133 gege ben. Der AD - Wandler mit einer Auflösung von 8 Bit kann nur Än derungen der Eingangsspannung erfassen , die größer oder g l eich 1/256 des Aussteuerbereichs (10 V), d.h. größer oder gleich 39 ,062 mV sind. Die Umwandlung der anliegenden Analogspannung U ' wird durch ein Steuersignal STC (start ~onvert) (Bild 134) A angestoßen , worauf der Baustein auf der Statusleitung EOC (end ~f
~onversion)
mit high-Pegel den Konvertiervorgang anzeigt.
Mit de r high-to-low-Flanke des EOC - Signals meldet der Baustein das Ende des Konvertiervorgangs (beim Typ ADC EK 8 B max. 1.8 ms) . Um d ie sich ändernde Analogspannung während der Konvertierzeit am Eingang des AD - Wandlers konstant zu halten, kann ein Sample a nd Hold-Baus tein
(S&H)
hinzugefügt werden (Bild 133). Wäh -
rend der Abtastphase , gekennzeichnet durch den Zustand high des Steuersignals S&H, wird die Eingangsspannung U ständig im S&HA Baustein gespeichert, so daß U gleich U ' ist . Bevor ein Kon A A vertiervorgang im AD-Wandler gestartet wird , muß der S&H-B au stei n mit dem Steuersignal S&H = low in die Haltephase umge schaltet werden, in der er den zuletzt abgetasteten Spannungswert am Ausgang U ' konstant hält, um ein einwandfreies Arbei A ten des AD-Wandlers zu gewähr l eisten. Die zeitlichen Abläufe der erwähnten Steuerungs- und Statussignale enthält Bild 134. Zur Veranschaulichung sind die Zeitbedingungen für die (low cost) Bausteinkombination ADC EK 8 Bund LF 198 (Sample and Hold) eingetragen. Wird die Analog - Eingabe am 8085 - Systembus im Polling- Verfahren betrieben, so ist ein Konvertier - und Eingabezyklus nach dem Flußdiagramm in Bild 135 zu programmieren , wobei die Zeitbedin gungen gemäß Bild 134 einzuhalten sind. In einer PollingSchleife fragt der Mikrocomputer das Statussignal EOC (end of conversion) solange ab , bis es mit low-Pegel den Abschluß einer Konvertierung anzeigt , und liest daraufhin den gewandel -
- 268 -
EA-adr:
(A7/\IO/M v
8~H
(A6/\ 10/M v RD)
(CTRLP)
STC
EOC EA-adr: (STATP)
(A7 /\ IO/M v RD)
U~
8~H
~ 07-0
Binärwert
9 . 96 5 . 00 0.04 0 . 00
1 l... ___ J ~x 74LS244
V V V V
1111 1000 0000 0000
1111 0000 000 1 0000
Systembus Bi l d 133
1 S&H
STC
Anschaltung einer Analog - Eingabe an den Systembus
--l
I-- 20
0
-.-JsI
1
--l
0
EOC
1 0
-
H
n
300 ns-i
Ils min .
1--500 ns min .
~l ,
I"
I
t
~5
1 Daten
0
--I END
8 ms
L
Konvertierzeit
Binärwert ADC
alt
IlS~
10-
1111111
neu
~
Daten wechseln Bild 134
Signal - Zeit - Diagramm für Analog-Digital-Umwandlung mit Aufbau nach Bild 133
- 269 te n Binärwert in den Akkumulator ein . Bei der sequentiellen Abta stung eines Spannungsverlaufs legt man d i e gewonnenen Werte in einer Tab elle i m Hauptspeicher oder au f dem Hi n tergrundspeic h er a b. Für de n Konvertier - und Eingabezykl u s ist die Befehls folge in Beispiel 34 gegeben , wobei die in Bild 1 33 zugrunde gelegten Port - Adressen und die Belegung der Datenbus - Stellen berücksic h tigt werden .
Bild 1 35
Beispie l
Ana l og -E i n gabe (Pol li ng
34: Polli n g - Programm für Ana l og - Eingabe.
CTRLP
EQU
8ßH
; Port - Adressen - Zuweisung
STATP
EQU
8ßH
; gemäß Bild 133
DATAP
EQU
4ßH
ADC :
MVI
A, ßIH
;Abtastimpuls in Aß erzeugen
OUT
CTRL P
; Abtastimpuls S&H - = 1 ausgeben
CALL DELAY
; Standzeit Abtastimpuls erzeugen
MVI
A, ß2H
; Steuerbi ts S&H - = ß und STC = 1
OUT
CTRLP
;S&H - Baustein in Halte - Zustand ;Konvertierung starten
POLL :
MVI
A, 00H
; Steuerbi t
OUT
CTRLP
; STC - Impuls rücksetzen ;Status (EOC) einlesen
STC = ß erzeugen
IN
SPATP
ANI
OOOOOlOOB ; EOC - Bit ausblenden
JNZ
POLL
IN
DATAP
;Abfrageschleife ; Binärwert in Akku einlesen , ;wenn (EOC)
=
ß
- 270 Die DELAY-Subroutine für die Dauer des Abtastimpulses (die von der Kapazität des Halte-Kondensators eH abhängt) , ist in Bei spiel 35 nicht angegeben. Üblicherweise wird in die Polling Schleife zusätzlich eine Zeitüberwachung (engl. watch dog) ein programmiert , die diese nach einer Maximalzeit mit einer Feh lermeldung beendet , we n n die Statusmeldung "Ende der Konvertie rung " in dieser Zeitspanne nicht eintrifft. will man mit einem Analog-Digitalwandler mehrere Analogspannun gen erfassen, dann fügt man zur Schaltung in Bild 133 vor den Abtast - und Haltekreis einen Multiplexer hinzu , der jeweils einen vom Mikrocomputer durch Adreßsignale ausgewählten Analog eingang auf den he in
S&H - Baustei~
durchschaltet. Näheres hierzu sie -
1471 . In Datenerfassungssystemen mit z . B. 8 oder 16 Ana -
logeingängen sind die hierzu erforderlichen Komponenten in einem Baustein in Hybridtechnologie zusammengefaßt. 5. 2. 2
Interrupt - gesteuerte Ein - /Ausgabe
wie beim Polling - Verfahren wird bei der interruptgesteuerten Ein-/Ausgabe jedes Byte einzeln mit einem IN - /aUT - Befehl zwi schen dem Ein-/Ausgabebaustein und dem Akkumulator des Mikroprozessors transferiert . Dabei erfährt der Mikroprozessor den genauen Zeitpunkt für die Daten - Ein - /Ausgabe jedoch nicht durch ständiges Abfragen von peripheren Statusbits , sondern durch Unterbrechungs-Anforderungen (interrupt requests) von pe ripheren Einheiten. Der Mikroprozessor wird während der Beartung anderer Programme zu beliebigen Zeitpunkten unterbrochen , um eine Ein - /Ausgabeoperation durchzuführen . Das Unterbre chungssystem des Mikroprozessors (vgl . Abschn. 2 . 4) ruft ein dem Interruptsignal zugeordnetes Unterbrechungs - Unterprogramm auf , das die Ein - /Ausgabeoperation mit dem anfordernden Gerät abwickelt und anschließend in das unterbrochene Programm zu rückkehrt. Mit Hilfe der Interruptsteuerung lassen sich leistungsfäh ige Realzeit-Mikrocomputersysteme aufbauen, die mehrere periphere Einheiten betreiben und gleichzeitig eine Programmbearbeitung im Mikroprozessor zulassen. Diese findet parallel zu den Verar -
-
271 -
beitungsabläufen in den Ein- / Ausgabegeräten statt, wodurch eine wesentliche Leistungssteigerung im Vergleich zu Pollingsystemen erreicht wird . In Bild 136 ist eine Anordnung für unterbrechungsgesteuerte Einzelzeichen - Ein - /Ausgabe mit programmierbaren Ein - /Ausgabe bausteinen (PE(O) und PE(l)) und mit dem ei nfachen Ha rdware Interface der Analog - Eingabe (PE(2) , vgl. Bild 13 3) gegeben . Das Unterbrechungssignal für eine periphere Einheit wird im Ein - /Ausgabebaustein erzeugt, indem ein Statusbit des Statusregisters SR mit der Bedeutung " BEREIT FÜR EINGABE" (bei Daten eingabe zum Mikroprozessor) oder " BEREIT FÜR AUSGABE " (bei Datenausgabe vom Mikroprozessor) auf eine gleichbedeutende Statusleitung geschaltet wird , die mit einem Unterbrechungseingang des Mikroprozessors oder einer Interrupt - Erweiterung ver bunden ist . wie man diese Statusbits im EA-Steuerbaustein aus den Schnittstellen- Abläufen zur peripheren Einheit hin gewinnt , wurde im Abschnitt 5.2.1 er l äutert.
Systembus
MP
(8085) RST5 . 5~--------~ RST6.5~--------~
RST7. 5 ~------...., EOC
parallele Handshake Schnittstelle Abk. : SR Statusregister CR Steuerregister RxD,TxD serielle EA Bild 136
DR R/TR D
serlelle Schnittstelle
Datenregister Empfang s- /Senderegister Datenleitungen/-Puffer
Unterbrechungsgesteuerte Einzelzeichen - Ein-/Ausgabe
-
272 -
Als Beispiel soll die Analog - Eingabe PE(2)
(Bild 136) am Sy-
stembus des Mikroprozessors BOBS unterbrechungsgesteuert betrieben werden. Die Handshake - Schnittstelle des Analog-Digitalwandlers mit den Steuersignalen STC und EOC wird über das ein fache Interface nach Bild 133 direkt durch das Programm bedient . Nach dem Ausgeben des Abtastimpulses S&H und des Startimpulses STC (vgl . Signal - Zeit - Diagramm Bild 134) verzweigt der Mikroprozessor in ein anderes Programm. Nach Ablauf der Konvertierungszeit unterbricht die Analog - Eingabe den Mikropro zessor mit der low to high-Flanke des invertierten Signals EOC auf dem flankengesteuerten Interrupt - Eingang RST7 . 5 (Bild136) . Es wird eine Interrupt - Subroutine INT75 gestartet , die den anstehenden Binärwert einliest und die Umwandlung des nächsten Analogwerts anstößt. Den groben Ablauf zeigt Bild 137 . Das vollständige Interrupt - Unterprogramm INT75 - als eigener Pro grammodul AINMOD geschrieben - enthält Beispiel 35.
I I
EOC
t
1 -- ' - - - - . - - . /
Interrupt Service Routine
/
RST7 . ~
/ L---.,..----' _
...J
~ \
\ \
unterbrochenes Programm
\ .\
\ \
Bild 137
Ablauf bei interruptgesteuerter Analog - Eingabe
Der eingelesene B- Bit - Wert wird in einen Pufferbereich PUFFER im Hauptspeicher des BOBS fortlaufend abgelegt. Der PUFFER ist im Modul AINMOD (Beispiel 35) am Programmanfang definiert ; mit der Deklaration PUBLIC 171 wird erreicht , daß andere Programm-
-
273 -
Beispiel 35: Interrupt - Modul für Analog - Eingabe. AINMOD NAME ; Interrupt Service Subroutine für RST7.5 - Eingang des 8085 CTRLP DATAP
PUFFER PADR
EQU EQU EXTRN PUBLIC ORG
; Adreß -Zuweisungen gern. Bi l d 133 8,0H 4,0H DELAY , AIEND ; in anderem Modul definiert PUFFER ; PUFFER andere n Moduln zugä ngl ich l,0 ,0,0H
DS
256 PUFFER-l
Dvl
; 256 Bytes ab l,0,0,0H reservieren ; Vorbelegung der aktuellen ; Pufferadresse (PADR)
;Registerinhalte für unterbro ; c h enes Programm rette n ; Aktuelle Pufferadresse l aden PADR ;Aktuelle Pufferadresse erhöhen H ; .. in Speicher zurückschreiben PADR ; Binärwert von AD-Wan dler holen DATAP ;Binärwert an aktuelle Puffer M,A ;stelle ablegen ; Low- Byte der aktuel l en Puffer MOV A, L ;adresse nach Akkumulator ;(L) :: FFH , Puffer voll? FFH CPI ; Sprung nach externer Marke AIEND , JZ AIEND ;wenn Puffer voll ; Nächste Analog-Digital - Wandlung veranlassen
INT75:
PUSH PUSH LHLD INX SHLD IN MOV
PSW
H
MOV OUT CALL MVI OUT
A,,01 CTRLP DELAY A,,02 CTRLP
MVI OUT POP POP EI RET
A, ,0,0 CTRLP H PSW
; Abtastimpuls (S&H - ) = 1 ausgeben ; Standzeit Abtastimpuls erzeugen ; Steuerbi ts S&H - und STC verändern ;Analogwert halten, ;Konvertierung starten ; STC- Impuls zurücksetzen ;Register inh alte für unterbro ;chenes Programm regenerieren ;Weitere Unterbrechungen zulassen ;Rückkehr ins unterbrochene ; Programm
END
moduln auf den PUFFER zugreifen können. Die Interrupt Subrouti ne INT75 läuft unter genereller Unterbrechungssperre ab . Die selektive Maske M7.5 (vgl . Abschn . 2 . 4.2) wird in einem überge ordneten Programmodul freigegeben . Ist der 256 - Byte -l ange Puf fer mit Binärwerten gefüllt , so verzweigt das In terruptprogramm
- 27 4 zu einer Marke AlEND, die in einem externen Mod u l definiert ist . Mit der EXTRN - Anweisung wird die Marke AIEND dem Binde programm (vgl. Abschn. 3 . 1) bekannt gemacht . Dasselbe gilt für die modu l externe Verzögerungsroutine DELAY. Die einfache " PUFFER VOLL "- Abfrage in Beispiel 35 durch Vergleich des nieder wertigen Adreßbytes mit FFH ist nur zulässig , wenn der 256 Bytes - lange Pufferbereich auf eine Speicheradresse " modulo 256 " beginnt. 5. 2. 3
Block- Ein-/Ausgabe im DMA - Betrieb
Bei Ein-/Ausgabevorgängen mit hoher Übertragungsrate , z . B. dem Betrieb von F l oppy Disc - Laufwerken , Winchester - Platten l aufwer ken, Bildschirmen oder Mikrocomputer-Kopplungen ist der Mikrocomputer bei der programmierten Ein - /Ausgabe (Abschn . 5 . 2 .1 und 5 . 2 . 2) entweder aussch l ießlich mit dem Datentransfer be sChäftigt (was nicht immer erwünscht ist) oder er kann die geforderte Datenrate nicht erbringen . Abhilfe schafft hier ein spezialisierter Ein - /Ausgabebaustein , der DMA - Contro ll er
(~i
rect ~emory ~ccess control l er) , in dem die bei der Übertragung von Datenblöcken ständig wiederkehrenden Operationen hardware mäßig , und dadurch mit deutlich höherer Geschwindigkeit abge wickelt werden . Fortgeschrittene DMA - Controller - Bausteine er möglichen Datenraten bis zu 8 MByte/s
1531.
Der DMA - Controller ist ein programmierbarer Ein-/Ausgabebau stein , der nach der Initialisierung durch den Mikroprozessor (Übergabe von Steuerparametern) selbständig Blöcke von Daten zwischen einem oder mehreren Peripheriegeräten und dem Haupt speicher überträgt. während der laufenden Ein-/Ausgabe zählt der DMA-Controller die programmierbare Länge des Datenblocks auf Null herunter (Blockende) und inkrementiert die Datenadres se des Puffers im Hauptspeicher . Blocklänge und Datenadresse werden zu Beginn in den Baustein geladen . Da die Daten vom/z um Speicher byteweise über den Systembus des Mikrocomputers über tragen werden , muß sich der DMA- Controller als aktiver Busteil nehmer um die Zutei l ung der Systembus-Regie für die Dauer eines Buszyklus (single byte mode) oder für die Übertragung eines
- 275 ganzen Blocks (block mode) bewerben . Für die Bus - Vergabe haben Mikropro zessoren in der Regel zwei Anschlüsse , die beim 8085 mit HOLD und HLOA (vgl. Tafel 8) benannt sind . Die im Vergleich zur programmierten Ein-/Ausgabe komplizierten Abläufe beim OMA Datenzyklus sollen an Hand des Blockschaltbildes (Bild 138) Anschluß des OMA - Controllers 8237 an den Standard- Systembus des 8085 - und des zugehörige n prinzipiellen Signa l dialogs (Bild 1 39) er läutert werden . Aus Bild 138 ist zu ersehen , daß
HLOA RST . . HOLD CTRL
8 0 8 5
AD7 -ji1
A15 -8
07 - ß A15 -8 A 7-ß CTRL __ Daten Transfer
Aß , 1, . . CTRL 07 - 0 EA - BAUSTEIN
Peripheriegerät
Bild 138
Geräteanschluß für OMA-Betri eb (Blockschaltbild)
- 276 -
ORQ(i)
von/zur PE
\
{ OACK(i)
HOLO ; HRQ von/zum MP
fl~-
-.J'\
{ HLOA
I
I
(I j
I
I
~'\
-
- -9Er-- "\
tI
\ '-
: \
/
~fL,
I
\~I } ' .---~
~L
I
I \
Oatentransfer , durch OMA - Controller gesteuert Bild 139
Prinzipieller Ablauf eines OMA-Zyklus (zu Bild 137)
der OMA-Controller die Abläufe nur steuert , während die eigentliche Ein-/Ausgabe auch hierbei ein Ein-/Ausgabebaustein (im einfachsten Fall ein Pufferbaustein) übernimmt. Oer Baustein 8237 kann mit seinen vier OMA- Anforderungsleitungen
ORQ~ - 3
und
den entsprechenden Quittungsausgängen OACK# 3 (data acknow ledge) bis zu vier OMA- Geräteanschlüsse (vier OMA - Kanäle) koordinieren . Fordert ein Peripheriegerät nach Bild 139 mit ORQ ;
1 einen
Oatentransfer beim OMA - Controller an, so bewirbt sich dieser mit HOLO ; 1 beim Mikroprozessor um die Regie über den Systembus . Oarau f hin schließt der Mikroprozessor den l aufenden Buszyklus ab, schaltet seine Bus - Ausgänge hochohmig - gibt den Systembus frei - und meldet dies mit dem Signal HLOA ;
1 . Jetzt
ist der OMA- Controller bus master, er gibt mit OACK(i) ;
0 dem
angeschlossenen Gerät die Übertragung frei und steuert den Speicherzyklus auf dem Systembus durch Aktivierung der Steuer und Adreßleitungen . Nimmt das Gerät die Anforderung ORQ(i) sofort zurück , dann wird nur ein Byte übertragen (single byte mode); bleibt die Anforderung stehen , wird ein Oatenblock im burst mode übertragen . Im ersten Fall wird der Systembus nur für einen Speicherzyklus benötigt; der OMA-Controller nimmt das HOLO - Signal zurück und sperrt den EA- Baustein mit OACK(l) ; 1; der Prozessor beendet den OMA- Zyklus mit HLOA ;
0 und
setzt als bus master die Verarbeitung mit dem nächsten Maschi-
- 277 nenzykl us fort . Findet die Übertragung im burst mode statt , wird der Mikroprozessor für die Dauer des Blocktransfers voml zum Hauptspeicher angehalten. DMA- Ste uerungen sind bevorzugt in größeren Mikrocomputersyste men zu finden , wozu z . B. auch Personal Computer mit Hinter gr u nds pe i c hern zähl en . 5. 3
Pa r a l lel - Ein - /Ausgabebaustein 8255
Neben den Multifunktionsbausteinen (vgl. Bild 111) gibt es für die 80'er Mikrocomputerfamilie einen universellen , programmier baren Baustein f ü r die paralle l e Ein - /Ausgabe von 8 - Bit Datenwörtern , den programmable periphera l interface - Ba u stein (PPI) bzw. parallel in - Iout - Baustein (PIO) 8255 . Der vie l seitig einsetzbare Standard- EA- Baustein ermöglicht den direkten Anschluß von passiven Digital - Ein-/Ausgabe-Einrichtungen (vg l. Abschn . 5 . 1 . 1) un d von Geräten mit Handshake - Sch n ittste l len (vg l. Abse hn. 5 .1. 2) weitgehe nd oh ne zusätz li che Anpaß sc h a l t un ge n . Der Bauste i n wird i n erster Li n ie für d i e programmierte Ein-/Aus gabe eingesetzt . Über einzelne EALeit u ngen (IO l ines) des Bausteins auch eine bitseriel l e Schnittstelle
PA3 PA2 PA l
programmi eren .
PA~
läßt sich mit Ein - /Ausgabebefehlen
5.3 . 1
Struktur des Bausteins 8255
Der 8255 ist ein 4 0poliger , hochin tegrierter Baustein in NMOS - Techno log i e mit TTL- kompatib l en Anschl ü s sen und der Ansc hl u ßbeleg u ng nac h Bild 14 0 . Den Aufbau des Ein - /Ausgabebau steins zeigt Bild 141. Peri-
RD CS GRD Al A~
PC7 PC6 PC5 PC4 P C~
PCl PC2 PC3
phere Einheiten können an die drei
PB~
Kanäle (engl . ports) PA7 - 0, PB7-0
PBl PB2
PA4 PA5 PA6 PA7 WR RESET D~
Dl D2 D3 D4 D5 D6 D7 VCC PB7 PB6 PB5 PB4 PB3
un d PC7 - 0 zu je 8 Ein - /Ausgabelei tu nge n a n gesc h losse n werden , über d ie der Mi kr op r ozesso r mit Ei n- I
Bild 1 40 Anschl u ßbe l e gung des Bau s tei ns 8255
- 278 Ausgabebefehlen Daten transferiert . Die ports PA und PB haben im Baustein Registerspeicher für Ein- und Ausgabe, der Kanal C hat nur einen Ausgabespeicher , die eingegebenen Zustände wer den lediglich gepuffert an den Systembus weitergegeben. Der 8255 verfügt außerdem über ein 8 - Bit Steuer(wort)register (e n gl .
~ontrol
Eegister CR) , in das der Mikroprozessor während
der Initialisierungsphase ein Ste uerwort einschreibt . Das Steuerwort legt die Bausteinfunktionen fest : Betriebsart (Modus 0 , 1 , 2) der Kanalgruppen A und B Ein - oder Ausgabe für die Kanäle A, Bund C . Das Steuer-Register ist nur beschreibbar , ein Steuerwort kann durch ein anderes überschrieben werden . Durch ein Rücksetzsigna l vom Systembus her werden alle ports auf Eingabe und damit
~ S Y s t e m bus:
CS RESET AO Al
RD WR
07 - 0
r-----I I I I I I I I
I I
interner Datenbus
I I
IL----,~---I
I
______ --1
L_ PB7 - 0
PC3 - 0
Erläuterung : Gr. 6
@J Bild 141
PC7-4
PA7 - 0
d . h. Gruppe d . h. Pufferschaltung (8 bzw. 4 Bit) d.h . Register (8 bzw. 4 Bit) mit Richtungs angabe
Struktur des Parallel - Ein - /Ausgabebausteins 8255
\
- 279 hochohmig gesetzt . Das Statusregister SR spiegelt die Phasen der Datenübertragung in den Handshake - Betriebsarten (Modus 1 und Modus 2) des Bausteins wider. Es ist mit einem Eingabebe fehl vom Mikroprozessor lesbar. Für den Anschluß des Bausteins 8255 an den Standard-Systembus des Mikroprozessors 8085 gilt das in Abschnitt 4 . 2 . 2 Gesagte . Die Adreßleitungen Al und AO dekodiert der Baustein intern z u r Auswahl der bausteininternen Register nach Bild 142 . Dabei überträgt der IN - Befehl mit (Al,O) =
l~
das Statusbyte in den
Akkumulator , der OUT-Befehl mit (Al , O) = 11 ein Steuerwort aus dem Akkumulator in das Steuerwort - Register CR .des Bausteins . Operations code : IN / OUT
EA- Adresse : A76543210
I)?J °I°I°IA°IX IX I
°° ° ° 1
Abk . :
CR .. co n trol register
Bild 1 42
1
1 1
PORT A - 80H PORT B - 8 1H PORT C - 82H - 83H CR
Adressierung der Register des Bausteins 8255
Die Betriebsart der Kanäle wird durch das übertragene Steuer wort festgelegt . I n der 'Betriebs art
° stellt
der Baustein 8255 drei 8 - Bit Kan äle
(Bi l d 141) für die passive Digital - Ein - /Ausgabe zur Verfügung. Jeder Kanal kann als 8 - Bit Eingang oder 8 - Bit Ausgang definiert sein . Der Kanal PC7 - 0 ist in zwei 4 - Bit - Kanäle zerlegbar , die vo neinander unabhängig Daten ein- oder ausgeben kön n en . In Betriebsart 1 (getastete Ein - /Ausgabe) unterscheidet man die Port- Gruppen A und B, die für den Anschluß von Geräten mit Handshake - Schnittstel l en vorgesehen sind. Die ~oEt~GEuEP~ ~ umfaßt den '8 - Bit- Datenkanal PA und die Leitungen PC7 - 4 als Steuer l eitungen für den Handshake-Betrieb , die
~oEt~GEuEP~ ~
den 8 - Bit - Datenkanal PB und die Leitungen PC3 - 0 a l s z ugehöri ge Steuerleitungen (vgl. Bild 141) . Gemäß Steuerwort kann über eine Port - Gruppe nur Eingabe oder Ausgabe erfolgen (unidirek-
- 280 tionale Schnit tstelle) . Detaillierte Beschreibung erfo lgt in Abschnitt 5 . 3.3 . Die Betriebsart 2 des Bausteins (getastete bidirektionale Ein- / Ausgabe) definiert eine Handshake -Schnittstelle (nur) für den Datenkanal A7-0, über die Daten ein - und ausgegeben werden kön nen . Wenn die Port - Gruppe A im Mode 2 betrieben wird, kann die Port-Gruppe B im Mode 0 oder Mode 1 arbeiten. Verschiedene Ka näle können gleichzeitig in verschiedenen Betriebsarten arbei -
1161 . Beim Anschluß von peripheren Einheiten ist zu beach -
ten
ten , daß eine EA-Leitung als Ausgang höchstens eine TTL - Last I
OL
~
1,6
5 .3. 2
treiben kann.
mA
Programmierung des Bausteins 8255
Vor der eigent l ichen Ein-/Ausgabe von Daten ist di e Funktionsweise des Bausteins durch Übertragen eines Steuerworts CW (con trol
~ord)
in das Steuerregister des Bausteins festzulegen
(Beispiel 36) . Danach nehmen die Kanäle das gewünschte Ein gangs - oder Ausgangsverhalten an. Nicht benutzte Kanäle eines Bausteins definiert man zweckmäßigerweise als Eingabekanal , um bei eventuellen Kurzschlüssen die zerstörung des Bausteins zu vermeiden. Nach dem Übertragen des Initialisierungs - Steuerworts werden die Ausgabekanäle sämtlich auf 0 gesetzt, bevor sie durch das Beschreiben der Ausgabespeicher die gewünschten Zustände annehmen . Der Aufbau des Initialisierungs - Steuerworts (CW8255 in Bei spiel 36) ist in Bild 143 gegeben. Zur Kennzeichnung des Steuerworttyps i st das Kennzeichenbit D7 auf 1 zu setzen. Beispiel 36 : Initialisieren des Bausteins 8255 . cw8255
EQU MVI
A, CW8255
; Steuerwort für 8255 im Akkumulator ; generieren OUT ~BH ;Steuerwort CW8255 in das Steuer ;register des 8255 übertragen , ;EA-Adr esse ~BH nach Bild 142 ;Beginn der Daten - Ein - /Ausgabe In der Betriebsart 0 verhalten sich die drei Ports des Bausteins wie einfache Puffersc haltungen mit /ohne Zwischenspei -
- 28 1 Steuerwort CW: Gruppe B Kanal PC3-0: 1/0
;
Kanal PB 7-0: 1/0
;
E/A
Betriebsart: 0/ 1
;
Modu s O/Modus 1
Kanal PC7 - 4: 1/0
;
E/A
Kanal PA 7-0: 1 / 0
;
E/A
E/A
Gruppe A
Betriebsart: 00/01 lX
..,O"-~---,t:,:,--,,,-,,L,,,-~,-IIo:::;:. \-,s .!.,,,t-,,e,,,,,", v e,,,,,",,o'-:'~"r~_ _
;
Modus O/Modus 1 Mod us 2
1 St e ue rwor t - Kenn z e ic hn ung:
Anm.: X d.h. beliebig 0 oder 1; Bi ld 143
;
1 ;
ak ti v
I
E/A d.h. Eingabe/Au sgabe
8255- Ste uerwort - Format für Betriebsart -Wahl
cherung gemäß Bild 122 und Bi ld 1 23 . Als Beispie l für e ine ein fache Dig italausgabe seien 8 Leuchtdioden so an den Kanal B des Bausteins 8255 angesch l ossen , daß bei einer 1 a uf der EALe it ung PBi die entsprechende Leuchtdiode LEDi aufleuchtet (Bild 144). Den Durch l aßs trom I
r
8255
D 7
F
f ü r die Leuch td ioden liefern
6
5
4
2
3
o
1
I
I
PB 7
6
5
4
3
2
1
r _.- -_.-.- -_.1 !3x74 1 6 o.C . 8 x LED
\
I
IAusg abespe ich er I Kanal B
1
I
0
--.,
I I I I
I I
I
I 8x270.n. + 5 V
Bi ld 1 44
I I L ___________
LED - Ausgabe am Baustein 8255 (Kanal B)
I
.J
- 282 die Treiberbausteine 7416 mit open collector-Au sgang . Für die se Anordnung wird ein kleines Ausgabeprogramm im Beispiel 37 angegeben . Beispiel 37: Lauf l icht . Die 8stellige LED - Anzeige nach Bild 144 ist in einer Endlos-Schleife so zu programmieren , daß ein Leuchtpunkt in der Reihenfolge PBO, PBl, PB2,
. .. PB7, PBO,
PBl . .. zyklisch umläuft. Die Standzeit jeder Leuchtdiode ist mit einer Verzögerungsschleife so zu bemessen, daß das Auf l euchten jeder LED gut sichtbar ist (Zehntelsekunden-Bereich). Die hierbei nicht genutzten Ports werden für Eingabe
initia~i
siert .
LAU F L ICH T ; Betriebsart ~ des 8255 - LED - Anzeige an port B CR8255 PB8255 ZAHL
EQU EQU EQU aRG
2~~~H ~EC~~H
INIT :
MVI
A, 99H
OUT MVI
CR8255
AUSGAB: RLC OUT ZEIT :
LXI DCX INR DCR JNZ JMP END
83H 81H
A,8~H
PB8255 D, ZAHL
D D D ZEIT + 3 AUSGAB
;control port-Adresse des 8255 ;port B-Adresse des 8255 ;Zaehlgroesse fuer Standzeit ; Steuerwort 8255 , PA = IN , PB = OUT , ; PC = IN, alle ports im MODE ~ ;Steuerwort an control port des 8255 ;Akku für Lauflicht - Ausgabe belegen ; Lauf l icht - Sch l eife ;Leuchtpunkt zyklisch nach links ;Akku auf port Bausgeben ; Zaehlschleife fuer Standzeit ; Zaehlgroesse fuer Standzeit nach DE ;(DE) dekrementieren ; zur Nullabfrage des D- Registers ; ohne Akku zu verändern ;Weiter dekrementieren, wenn (Z) t ß ;Endl os - Ausgabeschleife
Zusätzlich zur byteweisen Ein - /Ausgabe sind die Binärsteilen des C- Ports PC7 - 0 einzeln setz - bzw . rücksetzbar. Durch Über tragen eines Bit- Setz-/Rücksetz - Steuerworts (engl. bit set/re set control word)
(Bild 145) an die control r e gister - Adr e s s e
des Bausteins 8255 wird der Zustand 1 oder
~
an die PC-Leitung
mit der angegebenen Bit-Nummer ausgegeben. Ein bit set/re set -
- 283 Steuerwort
~ Bild 145
Bit Set/Reset: 1
= Set/ )'I = Reset
Bitadresse: 01234567 B)'I 01010101 Bl 00110011 B2 00001111 Bit Set/Re set Flag:
~
= aktiv
Bit-Setz-/Rücksetz - Steuerwort für 8255 (nur C- Port)
Steuerwort verändert nur das adressierte Bit des PC - Ports, die anderen Bitstellen bleiben unverändert. Die Bit - Setz-/Rücksetzfunktion kann während der Daten-Ein- /Ausgabe in jeder Be triebsart angewendet werden. Das Steuerwort unterscheidet sich in der Bitste l le D7 (bit set/reset flag (D7) =
~)
vom Initia-
lisierungssteuerwort ((D7) = 1). Das zu Beginn ausgegebene Initialisierungssteuerwort bleibt während der Bit- Setz - /Rücksetzoperation unverändert funktionsbestimmend. Ein Beispiel für die Anwendung des EA - Bausteins 8255 ein schließlich der Bit-Setz - /Rücksetz - Eigenschaft ist der Multiplexbetrieb von Siebensegmentanzeigen. Jedes der Leuchtseg mente a, b, c, d, e , f, g
einer Siebensegment - Ziffernanzeige
(Bild 146 . a) kann durch die Ansteuerung des zugeordneten Ein gangs aktiviert, d.h. mit einem Durchlaßstrom I zum Leuchten F gebracht werden. Die übliche Darstellung der Dezimalziffern und der sechs Pseudotetraden zeigt Bild 146.b. Zusätzlich zu den sieben Segmenten kann z . B. ein Dezimalpunkt (rechts) ange zeigt werden (d.p.-Eingang). Zur Darstellung der Hexadezimalziffern nach Bild 146 . b auf einer Siebensegment-Anzeige ist die im Mikrocomputer vorliegende Verschlüsselung der Ziffern in den Siebensegmentcode umzuwandeln, mit dem die Segmente der Anzeigeeinheit über Treiberbausteine angesteuert werden. Lie gen die Ziffern zunächst im Hexadezimalcode vor (vgl. Tafel 2) , dann ist eine Umschlüsselung in den Siebensegmentcode nach Tafel 26 erforderlich. Hierbei wird vorausgesetzt, daß eine 10-
- 284 a b
a. Sieben segment - Anordnung mit Dezimalpunkt rechts (d .p.)
c
~
d
e f g
b. Hexadezimalziffern in Siebensegment-Darstellung
d.p.
Dezimalziffern Bild 146
-----..-1--
Pseudotetraden
- I
Zifferndarstellung mit Siebensegment-Anzeigen
gische 1 ein Segment aufleuchten läßt (positive Logik). Dies ist bei Anzeigeeinheiten der Fall, bei denen sämtliche Kathoden der Leuchtdioden verbunden (common cathode) und auf l owPotential
geleg~
sind. Die Umschlüsselung des Hexadezima lcodes
in den Siebensegmentcode kann im Programm oder in Hardware Dekodierern (Bild 147) erfolgen. Da der einfache (nicht gemu ltiple xte) Betrieb von Siebensegmentanzeigen (Bild 147.a) erheb lichen Schaltungsaufwand mit
Tafel 26
Zuordnungstabelle Hexadezimal - Siebensegmentcode
Hex-Ziffern 0 1 2 3 4 5 6 7 8 9 A B C D E F
Hexadezimalcode
o0 o0 o0
0 0 0 1 1 0 00 1 1 o 10 0 o1 0 1 01 1 0 o1 1 1 1 0 0 0 10 0 1 10 1 0 10 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 111
Siebensegmentcode hex gfedcba 0111111 0000110 1011011 1001111 1100110 1101101 1111101 0000111 1111111 11 00111 1110111 1111100 0111001 10 1 1 1 1 0 1111001 1110001
3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 67H 77H 7CH 39H 5EH 79H 7lH
Dezimalziffern
Pseudo tetraden
- 285 a) einfache r (nicht ge mul tip lexter) Ansch luß 8 2 5 5
b) Multiplexbetrieb von Siebensegmentanzeigen
PC
• •
~
Segment-Stromtreiber
__________
7 x 'V'
___________J/
~~
n x für n Anz eigeeinheiten Bild 147
Anschluß von Siebensegmentanzeigen an d e n Ein-j Ausgabebaustein 8255
sich bringt , und am 8255 mindestens vier Port -Leitu n gen pro Anzeigeste lle belegt werden , betreibt man mehrere Siebensegmentanzeigen meist im Zeitmultiplex-Verfahren. Dabei sind die vier Anzeigeeinheiten nach Bild 147.b an eine n h a l be n Kanal (4 Bit) des Bau steins 8255 angesch loss en und we rde n reihum währe nd eines Viertels der Zeit eingeschaltet. Dami t die An zeige trotzdem hell genug leuchtet, muß jedes Segment mit ents pre chend großen Spitzenströmen betrieben werden. Di e Enable - Si gnale für die einze ln en Anzeigeeinhe it en können mit Hilfe der Einzelbit - Programmierung des C- Port gebildet werden. In Bei spiel 38 ist ein Programm f ü r die Multiplex-Ansteuerung mehrerer Siebensegmentanzeigen nach Bi ld 147.b auszugsweise wieder gegeben.
(Die zyklische Ansteuerung könnte i n diesem Beispiel
auch durch die normale Aus gabe vo n Bitmustern auf das C- Port im Mode 0 programmiert werden . Was hi er über den Betrieb von Siebensegmentanzeigen im Mikro prozessor gesagt wurde , gi l t
sinngemäß auch für a lph an umeri -
sche l6 - Segmentanzeigen und P unktmatrixanze igen ( z.B . 5 x 7-
- 286 Punktmatrix pro Zeichen). Darüberhinaus sind zuneh mend me h r stellige " intelligente " Anzeigeeinheiten (mit
eingeba u ter
Steuerung) verfügbar , die über eine Handshake - Schnittstelle (s. Abschn . 5 . 3.3) an den Mikroprozessor angeschlossen wer den . Beispiel 38 : MUltiplex - Ansteuerung von Siebensegmentanzeigen. ;Anschluß der Anzeigen an 8255 im Modus 0 gemäß Bild 147 . b ; Ziffernanzeige an PB3 - 0, Ziffernauswahl über PC3 - 0 CR8255 PB8255 PC8255
EQU EQU EQU ORG
83H 81H 82H ß'ECß'ß'H
; Steuer- Port des 8255 ;Port B des 8255 ;Port C des 8255
ANZP UF
OB OB
ß'ß'H , ß'5H ß'AH,ß'FH
; Vorbelegung des Anzeigepuffers für ;die Siebensegmentanzeigen 11',1,2,3
INIT:
MVI
A,98H
; Initialisierungs - Steuerwort 8255 ; PA = IN , PB = OUT , PC7-4 = IN , PC3 - ß' = OUT OUT CR8255 ;Steuerwort an Steuer- Port LXI H,ANZPUF ; Adresse des Anzeigepuffers laden ; Siebensegmentanzeige Nr . 11' ansteuern ANZ : MOV A,M ;Ziffer für Anzeige Nr. 11' in Akku OUT PB8255 ; Ziffer über Port PB3-ß' ausgeben MVI A, ß'lH ;Bit-Steuerwort für ' PCß' setzen ' OUT CR8255 ;Bit-Steuerwort an Steuer- Port ;Adresse (PCß') = 1 NOP MVI A,ß'ß'H ;Bit-Steuerwort für 'PCß' löschen' OUT CR8255 ;Bit-Steuerwort an Steuer-Port; Adresse (PCß') = 11' ;Siebensegmentanzeige Nr. 1 ansteuern INX H ;Pufferadresse auf Anzeige Nr. 1 u 5
5 . 3.3
W •
Handshake-Schnittstelle des Bausteins 8255
Der Baustein 8255 stellt - in der Betriebsart 1 initialisiertmit den Kanalgruppen A und B zwei voneinander unabhängige Hand shake - Schnittstellen (vgl. Abschn. 5.1.2) mit jeweils 8 - Bit breitem Datenpfad zur Verfügung , an die zwei Geräte angeschlos sen werden können . Auch im Mode 1 ist jede Portgruppe nach Bild 143 wahlweise auf Eingabe oder Ausgabe einstellbar . Vom Mikroprozessor aus kann der Baustein in der Betriebsart 1 im
- 287 Polling - Verfahren (Abschn. 5 . 2.1) oder interrupt-gesteuert (Abschn. 5.2.2) betrieben werden. Für die Erklärung der Ein-/
Port-Gruppe A Mode 1 Eingabe
Ausgabeabläufe sei die Ka-
von/zur PE
nal - Konfiguration nach Bild OE7-0
148 zugrundegelegt, wonach die Port-Gruppe A eine Ein gabe- , und die Port - Gruppe Beine Ausgabe -Handshake Schnittstelle darstellt. Die Funktionen der Port-Le itungen sind durch das angege bene Initialisierungs-Steu-
t-P_C_6~-+2__ EIN/
erwort festgelegt: PA und
AUS
PC7
PB sind unidirektionale Oatenkanäle, während die C-
Port - Gruppe B Mode 1 Ausgabe
Port-Leitungen im Modus 1 hardwaremäßig festge l egte Steuer- und Meldefunktionen
von/zur PE
PB7 - 0
DA7 - 0
übernehmen. Lediglich die Übertragungsrichtung der (mit
Bit-~et-/Reset-Steuer
wörtern) frei programmierbaren Lei tungen PC6, 7 wird im Steuerwort (Bit 03) gewählt . Alle weiteren Konfi gurationsmöglichkeiten sind in 11 51 und 1161 beschrieben. Nach der Initialisierung des EA- Bausteins und der Aktivierung der peripheren Einheit PE wird ein Byte mit
Bild 148
Kanal - Konfiguration des 8255
CPU{ INT ~------------------------~ steuert Gruppe A
o
steuert Gruppe B
,.....---.., r-"---. 7 6 5 4 3 2 1 0 11
Ini tiali-
101 1 1Ijxlllolxl ~~:~~~~~~t
I
L
beliebig
0/1 - PC6, 7
~
EIN/AUS
- 288 dem Signal dialog nach Bild 149 von der PE in den Akkumulator eingegeben , bzw. mit dem Signaldialog nach Bild 151 aus dem Akkumulator an die PE ausgegeben. Eingabe im Handshake - Modus (Betriebsart 1 - strobed input). Die Handshake-Signale sind das STB(~nput
das IBF - Signa l
~uffer
(stro~e,
low active) und
!ull, high active)
(Bild 148).
* Gemäß dem Signal dialog in Bild 149 zeigt die periphere Einheit (z.B. ein Lochstreifenleser) mit STB ;
low an, daß sie
gültige Daten auf die Datenleitungen DE7 - 0 gelegt hat .
* Der 8255 übernimmt diese mit der fallenden Flanke des STB Signals in sein PA- Eingaberegister und setzt als Antwort IBF auf high.
* Die PE schaltet dann das STB - Signal nach min . 500 ns inaktiv . Gibt die PE ein erneutes STB - Signal solange IBF; high , so wird das Byte im 8255 - Eingabepuffer überschrieben. Jetzt ist eine programmierte Reaktion des Mikroprozessors (IN Befeh l ) erforderlich, um das Byte aus dem PA- Register i n den Akkumulator zu bringen. Den Zeitpunkt hierfür kann der Mikro prozessor erfahren durch - eine Programmunterbrechung durch das INTR- Signal (interrupt Eequest) oder - beständiges Abfragen (polling) des 8255-Statusbytes.
IBF I NTR
_T---o--~- ;
--------------~~'\~~----~/ -- \.
Daten von PE
I
---~~~D~a~t~e~n~g~u~·l~t~i~g~~)-----------------Anm.:
Bi l d 149
Wirkungspfeil Zei tvermaßung siehe 115 1 1161
--- -
Signaldialog für Handshake - Eingabe (8255 im Modus 1)
- 289 -
* Für die
~n!e~r~p!-~e~t~u~r!e_E~n~a~e
flop INTE
(interrupt
~nable
port
~)
des Bytes muß das Flip im 8255 gesetzt sein.
A Das aktivierte Interrupt - Programm lädt das zwischengespei-
cherte Byte mit dem IN - Befehl in den Akkumulator , wobei das Lese - Steuersignal RD am 8255 vorübergehend low- Zustand an nimmt .
* Daraufhin nimmt der 8255 die Interrupt-Anforderung INTR und das Signal IBF nach Bild 149 zurück . Letzteres bedeutet " Pufferregister PA leer" und gestattet hiermit den nächsten Eingabezyklus. Das Kippglied INTE A im 8255 ist ein SChatten - Flipflop zum Port - Eingang PC4 (Bild 148) und mit (PC4-) Bit Set-/Reset - Steu erwörtern lösch- bzw . setzbar. Bevorzugt man statt der Interrupt-Steuerung das
~o~l~n~ - ~e~f~h~
so muß der Mikroprozessor ständig den Status des 8255 ein -
~e~,
lesen, um zu erfahren, wann ein gültiges Byte im Eingaberegister PA bereitsteht. Im Modus 1 liegen am C- Port keine Daten ; vielmehr liefert der Baustein 8255 beim norma l en Einlesen des C-Ports das Statusbyte für Eingabe nach Bild 150. In der Pol ling - Schleife fragt das Programm den Zustand des Statusbits IBF
A
ab . 07
06
04
05
03
v
Gruppe A ; Pol 1 i n g - S c h 1 e i f e STATUS: IN ANI JZ IN Bild 1 50
CPORT 2~H
STATUS APORT
02
00
01
Gruppe B für Portgruppe A
;Status im Mode 1 (Eingabe) einlesen ;Ausblenden von IBF/A ; Weiter abfragen , wenn IBF/A ~ ;Byte einlesen, wenn IBF/A ; 1
Statuswort im Mode l/Eingabe mit Polling - Sch l eife
Ausgabe im Handshake - Modus (Betriebsart 1 - strobed output) . Die Handshake-Signale bei Ausgabe sind das OBF -
(~utput ~uffer
!ull, low active) und das ACK-Signal (acknowledge, low active)
- 290 (Bi l d 148). Am Beginn eines Daten - Ausgabezyklus (Bild 151) gibt der Mikroprozessor mit einem OUT-Befehl ein Byte an den EA- Baustein aus.
, ""
INTR
Daten an PE
" " ""
Neu-e Ausgangsdaten Anm . : - - - - - Wirkungspfeil Zeitvermaßung siehe 126 1 und 127 1
Bild 151
Signaldiplog für Handshake - Ausgabe (8255 im Modus 1 )
* Bei unterbrechungsgesteuerter Ausgabe nach Bild 1 51 unter bricht der 8255 bei geleertem Ausgaberegister PB (OBF = B high) den Mikroprozessor mit dem INTR-Signal. Der OUT - Befehl des Mikroprozessors bewirkt einen Impuls am Schreib- Steuereingang WR des EA - Bausteins.
* Der 8255 nimmt darauf das INTR - Signal zurück und meldet mit OBF = low an die PE (z . B. einen Matrixdrucker), daß im Ka nalregister ein Byte zur Ausgabe bereit steht.
* Die PE übernimmt das auf den Datenleitungen DA7 - 0 anstehende Byte, sobald sie dazu in der Lage ist und zeigt mit ACK = low die vollzogene Datenübernahme an . Der ACK - Impuls muß
mindestens 300 ns lang anstehen.
* Daraufhin meldet der 8255 mit OBF
high , daß sein Ausgabe -
register PB leer ist und setzt sein Interruptsignal INTR ak tiv , um den Mikroprozessor zu einer erneuten programmierten
Ausgabe zu veranlassen. Für die beschriebene interrupt - gesteuerte Ausgabe ist das Schatten-Flipflop INTE
B
zur Port - Leitung PC2 (Bild 148) auf 1
- 291 zu setzen. Soll statt der Synchronisation über Interrupts das Polling - Ver fahren angewendet werden , so ist das Statusbyte von Port C des EA-Bausteins zyklisch abzufragen. Das Statuswort für Ausgabe im Modus 1 hat den Aufbau nach Bild 152. Die Polling-Schleife für die Kanalgruppe B fragt ab, wann - nach einer programmierten Ausgabe - der Meldeausgang OBF
B
wieder High-Potential an-
nimmt. D7
D6
D5
D4
D3
Gruppe A ; Pol 1 i n g - S c h 1 e i f e STATUS: IN ANI JZ MOV OUT Bild 152
CPORT ß2H STATUS A,M BPORT
D2
Dl
DO
Gruppe B für Portgrupp e B
; Status im Mode 1 (Ausgabe) e inlesen ;Ausblenden von OBF/B ;Weiter abfragen , wenn OBF/B = ß ;Ausgabeb yte in Akku, wenn OBF/B 1 ;Byte an Port B
Statuswort im Mode l/Ausgabe mit Polling - Schleife
Die bidirektionale Handshake - Schnittstelle des Bausteins 8255 in der Betr iebsart 2 ist in ihren Einzelfunktionen aus der be schriebe nen unidirektionalen Schnittstelle aufgebaut. Eine ex akte Darstellung findet man in 1151 und 1161. 5 . 3.4
Anschluß ei n es Druckers mit CENTRONICS-Schnittstelle
Als Beispiel soll der Ansch luß eines Matrixdruckers mit CEN TRONICS - Schnittstelle an den Baustein 8255 im Modus 1 er l äutert werde n. Die nicht genormte , bei Druckern jedoch - neben der seriellen V.24 - Schnittstelle - fast aussc hli eßlic h angewendete CENTRONICS - Schnittstelle 155 1 156 1 ist eine parallele Handshake - Schnitts tel l e mit einigen zusätzlichen Steuer- und Meldeleitungen. Bei den Signalnamen und im Zeitverhalten gibt es herste l lerspezifische Varianten. Eine Erklärung der Signalfunktionen ist in Tafel 27 enthalten. Die elektrischen Pegel sind TTL-kompatibel. Die zwei Druckersignale ACKNLG und BUSY ergän -
- 292 Tafel 27
Signalleitungen der CENTRONICS-Druckerschnittste lle
Signalname
Anschl u ß -Nr.*) Que ll e
Funktion des Signals
1 (19) **)
8255
Hands h ake Signal (low active) setzt Daten gül tig (Pulsdauer min. lllS)
DATA 1 DATA 8
2(20) ,3(21) 4(22),5(23) 6(24) , 7(25) 8(26) , 9(27)
8255
Daten (high active) im ASCII - Code (abdruckbare Zeichen u nd Steuerzeichen z .B. LF, CR , FF)
ACKNLG
10 (28 )
Drucker Handshake - Signal (low active) bedeutet: Zeichen wurde in Druckerpuffer übernommen oder Drucker operation a u sgefüh rt .
BUSY
11 (29 )
Drucker zeigt an, daß der Drucker keine Daten annehmen kann (Druckeroperation,Feh l er)
PE
12
Drucker Papierende-Anzeige
SLCT
13
Drucker zeigt an, daß der Drucker selektiert ist , d .h. auf die Schnittstelle gescha ltet ist (bei SLCT = l ow ist BUSY = high) .
GRD
14
PRIME
31 (30 )
FAULT
32
DATA STROBE
..
..
Signal Ground 8255
Drucker - Normierung (löscht Puffer und normiert Logik)
Drucker Fehleranzeige (auch aktiv bei PE = 0, SLCT = 0)
*) Anschluß-Nr . am 36poligen Amphenol - Stecker **) Anschluß der Masse - Rückführung (twisted pair) in Klammern zen sich funktionell : Währ e nd der ACKNLG -Impul s ~m_E~d~
(Dauer ca . 4 Ils)
einer Zeichenübernahme in den Druckpuffer bzw. ei n er
Druckeroperation (Zei le ausdrucken , CR, LF, FF) erscheint und damit den nächsten Zeichentransfer freigibt , ist das statische BUSY - Signal auf high gesetzt , solange der Drucker mit einer Zeichenübernahme oder einer Druckeroperation beschäftigt ist, der Drucker nicht selektiert ist , oder Papierende oder ein Fehler erkannt wurde. Als Handshake -Meldes i gna l wird meistens der ACKNLG-Impuls verwe ndet . De n Signalverlauf bei der Über tragung eines Zeichens ohne/mit anschließender Druckeroperation zeigt Bild 153 . Hat der Drucker ein Pufferregister für
- 293 -
--.J
DATA 1- 8
k
DATA STROBE
\
gültig t
l
*
t 2 >ktl>l
----~~r_-_-_-__-~------------------
I
"
I
"
I
I<
t
WWl
BUSY t
BUSY DELAY 11<
~
)jE
'~
-
_---JI
ACK DELAY 1 ~tACK~ t
BUSY
tl = 1.0
tACK DELAYl = 2.5 .. 10 t ACK = 3.5 .. 4.5 ~s
(min.);
I
\
(am Beispiel CENTRONICS 70X
155 1)
- ...,....
busy
Zeiten:
~s
-
t2
I I
)1< ",>I
t ACK DELAY 2
1.0 ... 500 ~s
~s
(normales Datum)
t BUSY DELAY = 0 .. 1.5 ~s t BUSY von Druckerfunktion abhängig t ACK DELAY 2 = 0 . . . 10 IlS Bild 153
Signaldiagramm der CENTRONICS - Druckerschnittstelle
eine Druckzeile, so wird der Abdruck durch die Steuerzeichen CR, LF, FF oder "Pufferregister voll " ausgelöst. In Bild 154 ist der (mögliche) Anschluß eines Druckers mit CENTRONICSSchnittstelle an den 8255 dargestellt. 8255 Mode ß'/l D7 - 0 RD WR AO Al RESET
cs
8255 Mode ß'/ l
PC7 PC6 PC5 PC4 PB7 - .0
CENTRON ICSInterface ,I
BUSY SLCT PE MATRIXDRUCKER DATA8 -1
PC3 PC2 ACK
ACKNLG
PRIME
PCl OBF
DATA STROBE
PCß' INTR
GRD
IRi Bild 154
Anschluß eines Druckers an EA-Baustein 8255
- 294 Entsprechend Bild 143 ist das 8255-Steuerwort für den Ansc hl uß des Druckers gemäß Bild 155 festzulegen . Das Bit PC3 ist mit Bit - Setz - /Rücksetz -S teuerwörtern zu programmieren. D7 D6 D5 D4 D3 D2 Dl DO
11 11 11 10 1 0 1
---\1
1 1 0 10
1
I
I
Gruppe B
,"".b,
" H , Ausgabe DATA8-1 IM<. PO - mM'I PB7-0: Modus 1 für Gruppe B
Gruppe A
L _ __ _ _ _ _ __
Bild 155
PC7-4: Elngabe Status : BUSY , SLCT , PE PA7-0 : Elngabe (nlcht benutzt) Modus 0 für Gruppe A
8255 - Initialisierungs-Steuerwort für den Gerätean schluß nach Bi l d 154
Vergleicht man die Signaldiagramme der CENTRON ICS-Schn ittste l le (Bild 1 53) und der 8255-Handshake-Schnittstelle für Ausgabe (Bild 151), so stellt man fest , daß der Dru cker erst dann mit einem ACKNLG - Signal antwortet , wenn der DATA STROBE Impuls mit einer low to high - Flanke abgeschlossen ist . Der 8255 seinerseits beendet jedoch den OBF- Impuls erst dann , wenn er ACK = low erkannt hat . Abhilfe schafft hier die Zwischensc h a l tung einer Monostabilen Kippstufe mit negiertem Ausgang nach Bild 154 , die - von OBF (high to low-Flanke) getriggert - einen DATA STROBE Impuls der vorgeschriebenen Zeitdauer t
erzeug t . 2 Der Drucker ka nn bei dem gegebene n Anschluß (Bi ld 154) wahlweise im Pollingmode oder interrupt - gesteuert betrieben werden. Bei Druckern mit eingebautem Zei l en - Pufferregister e mp fiehlt es sich , die Übertragung einer Zeile in das Zeilenpuf ferregister im Pollingmode vorzunehmen und ( län ger dauernde) Druckeroperationen , z.B. den Abdruck einer Zeile , mit einern Int errupt abzusch l ießen . Damit gewinnt der Mikroprozessor wäh renddessen Zeit für die Bearbeitung anderer Probleme . Beispiel 39 zeigt die Interruptroutine für eine Zeilen - Ausgabe . Beispiel 39: Drucker-Ausgaberoutine. Die Interruptroutine ü ber trägt eine Datenzeile im Pol l ingmode in den Zeilenpuffer des
- 295 Druckers. Nach Ausgabe des Endekriteriums CR erfolgt Abdruck der Zeile. Vor der Rückkehr in das unterbrochene Programm wird der Interrupt - Eingang für den nächsten Interrupt vorn Drucker freigegeben. ;Interruptprogramm für Ausgabe einer Datenzeile ; Interrupts gesperrt , Datenadresse im Speicher unter DATADR PRINT: POLL:
PUSH PUSH LHLD IN ANI JZ MOV OUT INX CPI JNZ
LINEND: SHLD POP POP EI RET
ßDH POLL
;(HL) in Stack retten ;(PSW) in Stack retten ;D atenadresse nach HL laden ; Status 8255/Mode 1 nach Akku holen ; Ausblenden von OBF/B ;Warten, da 8255/B- Puffer voll ;Zeichen aus Datenspeicher in Akku ;Zeichen an 8255/Port Bausgeben ; Datenadresse hochzählen ;Zeichen mit Endekriterium vergI . ;Weiter ausgeben , wenn ungleich
DATADR PSW
;Akt. Datenadresse rückschreiben ;Register für das Hauptprogramm
H
;regenerieren
H
PSW DATADR CPORT ß2H POLL A, M BPORT H
;Näch ste Unterbrechung zulassen ;Rückkehr ins unt erbrochene Progr.
5.4
Serieller Schnittstel l en-Baustein 8251A
Der
8 2 5 1 A ist der seriel l e Ein - /Ausgabebaustein der 80 ' er
Mikrocomputerreihe, über den normalerweise periphere Einheiten mit V.24 - Schnittstellen an die Mikroprozessoren angeschlossen werden (Bild 98)
1151116 1. Entsprechend seiner Initialisierung
mit Steuerwörtern (Moduswörter und Kommandowörter) kann der 40 - polige Baustein für synchrone und asynchrone Datenübertragung im Vollduplexverfahren eingesetzt werden . Der Mikrocom puter transferiert die Informationsbytes mit IN-/OUT - Befehlen vorn/zum E/A-Baustein , während dieser selbständig die Aufbereit ung des Zeichenrahmens (Bild 130) einschließ lich ParallelSerienwandlung, Paritätserzeugung und - prüfung sowie die Daten synchronisation bei der Übertragung übernimmt. Die asynchrone , bitserielle DatenÜbertragung wurde im Abschnitt 5 . 1.3 allge mein beschrieben . Im folgenden soll der Einsatz des USART- Bausteins (Universal ~ynchronous ~synchronous ~eceiver Transmit ter) für die asynchrone Übertragung erläutert 'werden .
- 296 Die TTL-Anschlüsse des MOS - Bausteins sind auf V.24-Spannungs pegel bzw . auf Linienstrom umzusetzen (Bild 129 und Bild 131). Weite Verbreitung hat für die asynchrone Datenübertragung auch der UART-Baustein 8250 gefunden, der u . a. einen program mierbaren Baudraten - Generator beinhaltet. 5.4.1
Struktur des seriellen Ein-/Ausgabebausteins 8251A
Wie in der Strukturdarstellung (Bild 156) ersichtlich, verfügt S Y s t e m bus A~
RESET CS
CLK
r--
- --C/D
I I I
IOW IOR
WR
(IRi) (IRj)
07-0
TxRDY RxRDY
I
I
Hilfs E/A I I
I
I
Steuerung
I r- -r- _.. _--
I I
--.
Schreib-/Lese-
I I
-
---------
RD
I
I I
GRD
~~
I
L _ ____ _
I I I ..--->00<;-.... I I I
L.:::::===I:J
I
I _ _____ J
\ RTS DTR DSR TxC CTS RxC RxD TxD GRD I ~------------------------~~----------------------------------' Signale der V.24-Schni ttste ll e (Abkürzungen s. Tafel 22) Abk.: TxRDY ... Sender bereit RxRDY .. . Empfänger bereit MOd - R .. . Modus-Register (nimmt Moduswort a u f) Kdo- R •.. Kommando -Register (nimmt Kommando auf) SR . • .. .. Status-Register RDR ..... Empfangs-Datenregister TDR •.... Sende- Datenregister Bild 156
Aufbau des USART - Bausteins 8251A
- 297 der Baustein 8251A über zwei beschreibbare Steuerregister (Mo dus-Register Mod- R und Kommando- Register Kdo-R), über das lesbare Statusregister SR und über ein Empfangs - Oat e nr egister ROR und ein Sende-Oatenregister TOR , le tztere mit angeschlossenem Schieberegister zur Serien-Parallelwandlung . Oer Mikroprozes sor wählt diese Register über den Systembus mit Hilf e d er Le se -/Schreibleitungen RD/WR und des C/D- Eingangs (command/data =
high/low) aus (Tafel 28) . Der C/D- Eingang wird meist mit der
Adreßleitung AO beschaltet . Die Unterscheidung der zwei Steuerwörter geschieht im 8251A durch die Reihenfolge der Steuerwort ausgabe (s. Bild 158). Tafel 28
Adressierung der Register im 8251A
CS(8251A)
=
low
C/D
WR
RD
low
high
low
Dat enwort aus RDR lesen
low
low
high
Datenwort ins TDR schreiben
high
high
low
high
low
high
Operation
Statuswort aus SR lesen {Modu swort nach Mod-R schreiben oder Kommandowort nach Kdo-R schreiben
Abkürzungen siehe Bild
156
Der USART- Baustein kann im Pollingmode oder interrupt - geste uert betrieben werden . Mit den zwei Signalen TxRDY (Sender be reit zur Aufnahme eines Zeichens vom MP) und RxRDY (Empfänger bereit zur Abgabe eines Zeichens an den MP) kann der Mikropro zessor unterbrochen und zur Ausgabe (TxRDY = high) oder Eingabe (RxRDY = high) veranlaßt werden . Für POlling - Betrieb stehe n die beiden Meldebits mit (im Prinzip) gleicher Bedeutung im Statuswort des Bausteins (Bild 157) zur Verfügung . Auf der V. 24 - Seite ist neben den Leitungen TxD, RxD und GRD d as Meldesignal CTS angegeben , das eine Baustein-Funktion steuert (mit CTS = high wird der Datensender TxD gesperrt). Die drei Steuer - und Meldeleitungen RTS , DTR und OSR e ntspr . Tafel 24 werden dagegen vom Mikroprozessor über das Status byte abgefragt (DSR)
(Bild 157) oder über das Kommandoregi -
- 298 ster des 8251A (Bild 159 . b) gesteuert, ohne eine weitere Funk tion im Baustein zu bewirken 1151 1161 . D6
D7
D5
04
03
OE
I
Br~ak-
I
I
02
01
TxE
RxROY
I
parity'Error Erkennung Overrun Error beide :, OSR - Signa l Sendereg . invertiert Framing Error frei Bild 157
DO
I TxRDY
I
se~deregister
frei Empfangsregister bereit
Statuswort des 8251A (Erklärungen siehe 1151,
116 1 )
An den Eingängen TxC und RxC werden Sende - und Empfangstakt von einem Frequenzgenerator zugef ührt . Im Asynchronmodus erge ben die angelegten Frequenzen - nach der Division durch den im Moduswort festgelegten Teiler 1 , 16 oder 64 - die Übertra gungsrate auf der Sende - bzw. Empfangsdatenleitung in Baud .
(Synchronbetrieb) SYNC-Zeichen an 825 1A
ja C/D = high 1\ WR = low Datenwort vom/zum 825 1A Statuswort vom 8251A
Bild 158
Programmierablauf beim USART - Baustein 8251A 1161
- 299 5.4.2
Programmierung des 8251A im Asynchronmodus
Nach dem Rücksetzvorgang ist die Funktionsweise des 8251A in der Initialisierungsphase für den Asynchronmodus mit zwei Steu erwörtern (Moduswort und Kommandowort) nach dem Ablaufdiagramm in Bild 158 festzulegen . Wenn während der nachfolgenden Datenübertragung ein Steuerwort (mit C/D
=
high J WR
=
low) an den
Baustein übergeben wird , interpretiert es dieser als Kommandowort , in dem lt. Diagramm vereinbart sein kann , daß ein Moduswort folgt (entspricht Software Reset) . Bei synchronem Betrieb werden zusätzlich Synchronis ationszeic hen (SYNC-Zeichen in den Ablauf eingeschobe n . Der Aufbau der zwei Steue rwörter des 8251A ist in Bild 159 ange geben. Beispiel 40 zeigt die Initialisierung des 8251A für den asynchronen Anschluß eines Bildschirm-Terminals mit V.24 - Schnittstelle an einen Mikrocomputer (vgl. Bild 128) . Dabei erzeugt bzw. prüft der U(S)ART - Baustein bei m Senden bzw. Empfangen das Paritätsbit auf der Übertragungsleitung (vgl. Bild 130) . Das Unterprogramm CI in Beispi e l 41 li est nach dem Po l li n g a) Aufbau des 8251A- Modusworts
D
7
I S2 Anzahl
6
5
4
3
2
1
o
Sl
EP
PEN
L2
Ll
B2
Bl
de~ts
I
I
~~
Parität gerade/ungerade mit/ohne Paritätsbit
I
synchron/a synchron Teilungsfaktor (1,16 , 64)
Bit pro Zeichen (5 , 6 , 7 , 8 ohne Paritätsbit) b) Aufbau des 825 1A- Kommandoworts EH Suchmode ---.J (Synchronbetrieb)
IR
j
I RTS I ER ISBRK IRxEN I DTR ITxEN I
J
Moduswort folgt Ausgang RTS = 1 / 0 setzen (PE,OE,FE) Statuswort rücksetzen
Fehl e rb~ts
Bild 159
~m
I
Daltensender frei geben/sperren
Ausgang DTR = 0/1 setzen Empfänger freigeben/sperren BREAK- Zustand sen den
Steuerwörter f ür den Baustein 8251A 1161
- 300 -
Beispiel 40: Ini tia l isierung des 8251A für Datensichtgeräteanschluß . Im Moduswort sind folgende Einstellungen vorzuneh men: Asynchronübertragung mit Teilungsfa k tor 64, 7 Bit pro Zeichen (ASCII-Zeichen), Paritätsbit, gerade Parität , e in Stoppbit (vgl. Bild 1 30). Mit dem Kommandowort sind folgende Ein ste llung en zu veranlassen : Sender TxD und Empfänger RxD freigeben, Ausgänge DTR und RTS auf low-Zustand setzen , keinen BREAK - Zustand aussenden, Feh l erbits nicht löschen , n ächs t es Steuerwort ist kein Moduswort. Datentransfer kann beginnen .
;I nitialisierung des 825 1A USART MODUS KDO RESET :
EQU EQU EQU
. .H 01111011B 00100111B
;Daten - port - Adresse des 825 1A ; Moduswort 7BH ; Kommandowort 27H
ORG MVI OUT MVI OUT
0 A, MODUS USART + 1 A ,KDO USART + 1
;Moduswort in ; Moduswort an ; Kommandowort ; Kommandowort
Akkumulator Steuerwortadresse in Akkumulator an Steuerwortadresse
Beispiel 41 : Einlesen eines Zeichens von der Tastatur des Be dien - Sichtgeräts im Polling - Verfahren . Unterprogramm CI CI:
IN ANI JZ IN RET
(= consol input)
USART + 1 .0'2H CI USART
;Statuswort des 8251A einlesen ;Ausblenden des Bits RxRDY im Status ;Springe, wenn Empfangsregister l eer ;Datenzeichen von 8251A einlesen ; Rückkehr mit Zeichen im Akku
Verfahren ein 7-Bit - Zeichen von der Tastatur ein und übergibt es im Akkumulator an das aufrufende Programin . Beim Befehl " IN USART"
liefert der 8251A die 7 Datenbits rechtsstehend und
setzt statt des übertragenen Paritätsbits eine Null ein. Das Paritätsbit auf der Leitung ist dem Prozessor normalerweise nicht zugäng l ich . Zuvor muß das Bit RxRDY im Statuswort (vgl. Bild 157) solange abgefragt werden , bis es mit dem Zustand high
- 301 anzeigt , daß im Empfangsregister RDR e in Zeichen bereitsteht . Ein e ntspr ec hendes Progr a mm g ibt es für die Ze iche nausgabe auf de n Bildschirm. Hierbei wird das Statusbit TxRDY abgefragt. 5.5
Zeitgeber - Baustein 8253
Bei der Steuerung tec hni sc h er Ab läuf e müssen Schaltvorgä nge in exakten Zeitabständen erfo lgen , Impuls e oder Impulsfolg e n mit definiertem Zeitve rh a l te n erze ugt werden. Die Zeitve rmassu n g durch programmierte zähl schleifen belegt den Mikroprozessor vollständig, so daß er währenddessen z . B. nicht auf Unterbre chungen reagieren kann . Sehr unübersichtlich wird das Programm , wenn mehrere zeitliche Ab l äufe ineinandergreifen. Programmier bar~ Zeitgeber wie der Baustein 8253
115 1 11 6 1 nehmen dem Mik ro-
prozessor diese Aufgaben ab und verbessern d a mit die Rea l zeit Eig e n sc ha ften und den Befe hlsdurchsa tz der Systeme . 5. 5.1
Struktur und Programmierung des 8253
Der programmierbare Zeitgeber (engl. interval t imer) 8253 ent hält drei voneinander unabhängige 16 - Bit - Zähler (0, 1 und 2) , die mit verschiedenen Zählfrequenzen von jewei ls 2 MHz
h öch ~
stens betreibbar sind . Es sind Abwärtszähler , die wahlweise dual ( 16 Dualstellen) oder dezi ma l
(4 Dezimalstellen) zähl en .
Jeder Zähler verfügt über drei Anschlüsse : einen Takteingang CLK(i), einen Sperreingang GATE(i) und einen Meldeausgang OUT(i)
(Bild 160), deren Funktion im einze ln en die Betriebsart
eines Zählers bestimmt . Der Anwe nder kann bei der Init ialisi e r un g eines Zählers unter 6 Betriebsarten (mode 0 bis 5) wählen. Im allgemeinen müssen am Takteingang CLK(i) der Zählt akt bzw . zu zählende externe Ereignis -I mp ul se anliegen; über den GATE Eingang kann der Takteingang zeitweise gesperrt (GATE = low) werden ; der Ausgang OUT(i) meldet den Nulldurchgang des Zählers i durch einen Flankenwechse l oder einen Impu l s , bzw. lie fert eine n Impuls defi n ierter Zeitdauer (monostabile Kippst uf e) oder ei ne Impu l sfo lg e vorgegebener Fr e quenz (Taktgenerator). Wenn der 8253 ein Zeitintervall auszählt , nach dessen Ab lauf der Mikroprozessor aktiv werden muß , so legt man das OUT-Signal
- 302 zur Unterbrechung des laufenden Programms a u f einen Unterbre chungs - Eingang des Mikroprozessors . Syste mbus:
CS
Al
AO
RD
WR
D7 - 0
--..,
r
I I
I I
I I I I I
I
I J CLK2
GATE2
Bi l d 1 60
OUT2
CLKl
GATE l
OUT l
CLKO
GATE O
aUT O
Struktur des Zeitgeber - Bausteins 8253
Die Systemb u s - Schnittstelle des " Ein - /Ausgabe - Bausteins " 8253 ist sehr einfach . Die Lese - /Schreibsteuerung (Bild 1 60) spricht an , wenn der Freigabeeingang CS auf low- Potential liegt und das
Tafel 29
Adressi.erung der 8253-Register ( wenn CS(8253)
RD
-WR
Al
AO
1 1 1 1
0 0 0 0
0 0 1 1
0 1 0 1
Zählregister Nr Zählregister Nr Zäh l register Nr Steuerregister
0 0 0 0
1 1 1 1
0 0 1 1
0 1 0 1
Zählerstand von Zählerstand von Zählerstand von keine Funktion ,
0)
Funktion . 0 laden . 1 laden . 2 l aden (CTRL - R. ) laden
*)
Zähler Nr . 0 l esen Zähler Nr. 1 l esen Zähler Nr . 2 l esen Datenbus hochohmig
*) die Nummer des Steuerregisters steht im Feld SC l, O des Steuerworts .
- 303 Lese - oder Schreibsignal (RD oder WR) aktiv ist. Die Adreßbits Al und AO des Adressenbus unterscheiden nach Tafel 29 die drei 1 6- Bit - Zählerregister 0 , 1 und 2, die ladbar und lesbar sind, und die Steuerregister (CTRL - R.), die nur mit Steuerwörtern ladbar , jedoch nicht le sbar sind. Zäh ler -I nitialisierung. Für j eden Zähler , der eine bestimmte Funk tion ausführen soll, ist in der Ini tialisierungsphase mit Ausgabe eines Steuerworts pro Zähler mit Befehl: OUT
10 1 1 1 1 1 1
11
EA-Adresse :
7FH z.B .
~~
CS(8253)
CTRL - R.
(vgl. Taf e l
29)
Steuerwort (im Akkumulator bereitzustellen):
0
16-Bit Dualzähl e r
I 2 1
,....;-..
0 1 0 1
CTRL-R ·0 1 " 2 " illegal
Bi ld 161
I 2
0
I
Betr iebsart 0 1 2 3 4 5
X d.h. 0 oder 1 zulässig Lese-/Ladefunktion
CTRL-R-Auswahl 0 0 1 1
2
LSB 7
T I H I Z IE .10 3 .1 0 2 .10 1 .10 0
00 0 o0 1 X10 X ll 1 0 0 10 1
~
2
8
4 - Dekaden Dezi malzähl er
I
{
I
MSB 15
0 0
Zählerstand zwischenspeichern counter latch operation
1 0
nur MSB lesen b zw . lade n
0 1
nur LSB l esen bzw. laden
1 1
z uerst LSB l ese n b zw . l ade n, anschließend MSB lesen bzw. laden
Ausgabe - Befehl un d Aufbau d es 8253 - Steuerworts
- 304 e i nem eigenen Ausgabebefeh l ei n Ste uerwort (Bi l d 161) an den Baustein zu übertragen . Das Steuerwort gibt in seinem SE LECT COUNTER-Feld se l bst an , für welchen Zäh l er es bestimmt ist und in welches der drei Steuerregister CTRL - R . 0 , 1 oder 2 es zu l aden ist. Es legt für diesen Zähler im BCD - Bit die Zäh l weise und damit die Interpretation des 16 - Bit - langen Zählregi sterinhalts fest . Neben der Betriebsart (s . Abschn . 5.5.2) ent hält das Steuerwort im RL - Feld Angaben über das nachfolgende Lade n und Lesen der Zählgröße. Nac h der Übertragung des Steuerworts verharrt d er ausgewähl te Zähler zunächst in einem n ormierten Zustand und startet erst , wenn ihm die Zählgröße in der im READ/LOAD - Feld angekü ndigten Weise übergeben worden ist. Mit Ausgabebefeh l en können die Zählgrößen nur byteweise an den normierten Zäh l er übergeben werden , wobei nach Bi l d 161 die Zähleradressen 7C H (Zähler fj) , 7DH (Zäh l er 1) 7EH (Zähler 2) sind . Gemäß dem RL-Feld können nur das h öherwertige Byte MSB mit (RL) = fj l, oder nur das nie derwertige Byte LSB mit (RL) = l fj , oder beide Bytes LSB und MSB mit (RL) = 11 in die Zählerregister geladen werden . Beispiel 42 : Initialisierung des 8253/Zähler STW
EQU
fjfjllfjfjfjlB
IN ITfj :
MVI OUT
A, STW 7FH
MVI A, 18H OUT 7CH A,fj4 H MVI OUT 7CH Start des Zählers fj
° mit
LSB und MSB .
; Zähler fj , LSB und MSB , ; Betr i ebsart fj , dezimal ;Steuerwort in Akku laden ; Steuerregister - Adresse gem. ;Bi l d 1 61 ;LSB der Zählgröße generieren ;LSB nach Zählregister fj (Bild 161) ; MSB der Zählgröße generieren ;MSB nach Zählregister fj (Bild 161)
Lesen des Zählerstands . Der Baustein 8253 gestattet das Ausle sen der Zählerstände durch den Mikroprozessor , was in manchen Anwendungen, insbesondere beim Zählen von externen Ereignissen , wünschenswert ist. Die einfache Methode besteht darin, entsprechend ßer RL - Vor schrift im Initialisierungs - Steuerwort den Inhalt eines Zählers mit ein oder zwei IN - Befehlen ( " IN CTRADR " ) nacheinander aus zu -
- 305 lesen. Hi erbei können allerdings während eines IN-Befehls bzw. zwischen zwei IN-Befehlen Zählvorgänge stattfinden , die u.U. erhebliche Lesefehler verursachen . Man müßte das Zählen wäh rend des Lesevorgangs unterbinden und damit in den Zählvorgang eingrei fen. Ein einwandfreies Verfahren zum exakte n Auslesen eines Zählerstands , ohne den Zählvorgang zu beeinflussen , stellt die " read on the fly"-E igenschaft des Bausteins dar . Dabei wird ein counter latch-S teuerwort mit (RL) =
~~
(vgl . Bild 161) an die
Steuerregister-Adresse übertragen , das die definierte Übernahme des 16 - Bit- Zählerstandes in ein
Zwischenregister bewirkt
(in Bild 160 nicht dargestellt). Anschließend muß gemäß der RL - Vorschrift im Initialisierungs-Steuerwort der Zählerstand aus dem Zwischenregister ausgelesen werden (Beispiel 43) . Wichtig ist, daß durch die Übertragung und kurzfristige Speicherung des counter latch-Steuerworts das Initialisierungs-Steuerwort für den Zähler nicht zerstört wird und funktionsbestimmend bleibt . Beispiel 43: Lesen des Zählerstands: " read on the fly ". ; Zähler 1 sei initialisiert mit (RL) = 11 ; Steuerregister- und Zähleradresse gern. Bild 161 COUNT :
OS
2
RDCTR~ :
MVI
A,
OUT IN STA IN STA
7FH 7DH COUNT 7DH COUNT+l
5.5 . 2
; 2 Bytes für Zählerstand reservieren 4~H
icounter latch-Steuerwort für Zähler 1
(mit X = ~/l) ;~l~~XXXX = 4~H ; Ausgabe an Steuerregister-Adresse ; LSB aus Zwischenregister auslesen ;Z ählerstand LSB abspeichern ;MSB aus Zwischenregister auslesen ; Zählerstand MSB abspeichern
Betriebsarten des Zeitgebers 8253
Für einen bestimmten Anwendungsfall wird die gewünschte Betriebsart eines Zählers im 8253 durch das Initialisierungs Steuerwort (Fe ld
M2 - ~,
vgl . Bild 161) eingestellt. Die Funktio-
nen der Zähler und der Ein - /Ausgänge in den 6 Betriebsarten MODE
~
bis MODE 5 seien im folgenden kurz erläutert .
- 306 Zur Präzisierung si nd für die drei Betriebsarten
~,
1 und 3
Zeitdiagramme (Bild 162) angegeben. Die Zeitbasis hierfür ist der Zähltakt CLK mit der Periodendauer T . Das Schreibsignal
MODE 0: Signal (zur Unterbrechung) bei Zähler - Nulldurchga ng
I-T-i CLK WR (4)
LJ
3
o
1
2
OUT (GATE = 1)
------~----------------~
GATE 2
3
o
1
OUT MODE 1; Programmierbare monostabile Kippstufe (retriggerbar) CLK WR (3)
L-.J
GATE
I
OUT
I
3
GATE
I
0
I
I
3
1
2
2
L--.J 1
3
2
1
0
0(4 )
3
2
1
I
OUT
r--
MODE 3 : Programmierbarer Taktgenerator CLK WR (4)
--u
4
3
WR (5)
--u
2
I
, 5
2
4
I
OUT (GATE = 1)
f.. Bild 162
1
I
OUT (GATE-l)
5 ·T
1
I o (5)
r
2
L
I
- I
Zeitdiagramme für die Betriebsarten
3
o (4)
~,
1, 3 des 8253
-
307 -
WR (n) rührt vom letzten Zähler - Ladebefehl her, der das Zäh lerregister mit der Zählgröße n, bzw. mit deren MSB oder LSB lädt. Nach dem WR - Impuls und nach der Freigabe des CLK - Ein gangs durch den GATE-Eingang (GATE; 1) wird die übertragene Zählgröße nach einer ansteigenden und einer fallenden Takt flanke in das Zählregister übernommen und der Zählablauf ge startet (Bild 162). - Die vollständige Beschreibung findet man in
1151 1161 .
Betriebsart $: Signal bei Zähler - Nulldurchgang. Nach dem La den der Zählgröße wird diese nach Bild 162 heruntergezählt, so fern am GATE - Eingang high-Potential anliegt . Beim Nulldurch gang liefert der OUT - Ausgang eine ansteigende Flanke, die in der Regel zur Unterbrechung des Mikroprozessors über einen Un terbrechungseingang verwendet wird . Nach dem Nulldu rc hgang de krementiert der Zähler weiter. Das Laden einer neuen Zählgrö ße stoppt den Zählvorgang und startet mit der neuen Zählgröße . Ein Sperren des Zähltaktes verzögert den Nulldurchgang der Zählgröße (Bild 162). Betriebsart 1: Programmierbare monostabile Kippstufe . Die ge ladene Zählgröße bestimmt die Impulsdauer (low- Zustand) am OUT-Ausgang des Zählers. Der Impuls wird nach dem Laden der Zählgröße durch die steigende Flanke des GATE - Signals gestar tet (Bild 162) . Das Monoflop ist retriggerbar, d . h . jede an steigende GATE - Flanke während des Impulses lädt die Zählgröße neu und verlängert die Impulsdauer entsprechend. Betriebsart 2: Programmierbarer Frequenzteiler. Wird die Zähl größe n geladen, dann liegt am Ausgang OUT der durch n getei lte CLK-Takt an, wobei das Signal während n - l Perioden high Pegel und während der n- ten Periode low - Pegel annimmt . Betriebsart 3 : Programmierbarer Taktgenerator. Der Zäh l er teilt den anliegenden Takt durch die eingegebene Zählgröße n in der Weise , daß am Ausgang OUT ei n Rechtecktakt mit dem ungefähren Tastverhältnis 1:1 zur Verfügung steht (Bild 162) . Bei geradzahligem Teiler n hat der gelieferte Takt während n/2 Takt perioden high - Pegel und während n/2 Taktperioden low- Pege l.
- 308 Bei ungeradzahligem Teiler m nimmt der Ausgang OUT während (m+l)/2 Takten high-Pegel und während (m-l)/2 Takten low- Pegel an. Die Zählgröße kann während des Ablaufs neu geladen werden. Betriebsart 4 : Software - gesteuerter Tastimpuls. Nach dem Aus geben einer Zählgröße n im Modus 4 behält das OUT- Signal den high-Pegel während n Takten bei und nimmt dann für eine Takt periode einmalig low- Pegel an, GATE = high vorausgesetzt. Mit einem low - Pegel am GATE-Eingang wird das Zählen unterbrochen und mit der ansteigenden GATE-Flanke erneut mit der Zählgröße n gestartet (Retriggerung) . Bei erneutem Laden einer Zählgröße wird der laufende Vorgang beendet und mit der neuen Zählgröße ein neuer Ablauf gestartet . Betriebsart 5 : Hardware - gesteuerter Tastimpuls. Bei geladener Zählgröße beginnt ein Zähler mit der ansteigenden Flanke an seinem GATE-Eingang herabzuzählen. Nach dem Nulldurchgang lie fert er einen einmaligen Tastimpuls von der Länge einer Takt periode an seinem OUT - Ausgang . Der Modus ist retriggerbar .
Der schnellere Zeitgeber-Baustein 8254 1611 zählt Eingangs frequenzen von bis zu 10 MHz und bietet im Vergleich zum 8253 einige Verbesserungen .
5.5 . 3
Einsatz des Zeitgeber-Bausteins 8253 als programmier barer Taktgenerator
Für ein Mikrocomputersystem (vgl . Abschn.4 . 1 . 2) soll mit dem Baustein 8253 e in programmierbarer Taktgenerator realisiert wer den. Hierzu ist eine einfache Leiterplatine (im Europa - Format) mit einem 8253 (Bild 163) zum Anschluß an den Bus des SMPMikrocomputersystems
1441 aufzubauen . Die Baugruppe , die nur
mit EA - Befehlen angesprochen wird (isolierte Ein-/Ausgabe) ,
Beispiel 44 : Programmierbarer Taktgenerator mit 8253 (S.309) .
EC2B C3~AEC EC2E 54285553 EC32 292~4445 EC3 6 5A2~ EC38 45494E47 EC3C 4542454E EC40' 3A2~
EC1A 212EEC EC10 1614 EC1F 4E EC2~ COll0'4 EC23 15 EC24 23 EC25 C21FEC EC28 C06E~5
EC12 COll0'4 EC15 0'E0'A EC17 COll0'4
EC1~ ~E0'O
312FEF EC0'3 3E3F EC~5 037F EC0'7 21~~~~ EC~A 70 EC~B 037C EC~O 7C EC0'E 037C
~411 ~56E EC~~ EC~~
END
32
JMP OB OB
TEXT:
LXI MVI MOV CALL OCR INX J NZ CALL
EQU EQU ORG LXI MVI OUT LXI MOV OUT MOV OUT MVI CALL MVI CALL
31
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
13
TXTAUS :
ZAUS:
11
12
PCLOCK:
AUS HOLAO
' EINGEBEN: '
ZAUS ' T(US) DEZ '
H, TEXT 0 , 20'0 C, M AUS 0 H TXTAUS HOLAO
AUS
C , ~AH
AUS
C,~OH
A,3FH 7FH H,0'0'0'0'H A,L 7CH A,H 7CH
~411H ~56EH 0'EC~~H SP,~EF2FH
~
;Aufforderung
;8253-Steuerwort,CTR ~ , Mode 3 , BCO ;Steuerwort an 8253 -S teuerregister ; Vorbe l egung des Zählregisters ; LSB der Zählgröße in Akku ;LSB nach 8253/CTR 0' laden ;MSB der Zäh lgr öße in Akku ; MSB nach 8253/CTR 0' laden ; ASCII - Code für Wagenrück l auf (CR) ; an Bildschirm ausgeben ;ASCII - Code für Zeilenvorschub (LF) ; an Bildschirm ausgeben ; Textausgabe auf Bildschirm ; Te~tadresse laden ; Zeichenanzahl laden ;ein Zeichen ins C- Register ;auf Bildschirm ausgeben ; Zeichenanzahl dekrementieren ; Textadresse erhöh en ;Sprung, wenn (0) ungleich ~ ;Ei nholen der Periodendauer dezimal ; von Tastatur nach Reg -P aar HL ;Sprung: Zähler neu laden ; Oefinition der auszugebenden
; gibt ein ASCII-Zeichen an Konsole ;bringt max . 4 Hex-Ziffern nach HL
P C L 0 C K ;PROGRAMM IERBARER TAKTGENERATOR MIT 8253/CTR
4 5 6 7 8 9 10
3
1 2
w
'"
0
- 310 reagiert während des Buszyklus mit Lesen oder Schreiben , wenn die vom Prozessor angelegte E/A- Adresse A7 - 2 mit der auf den Wahlschaltern S7 - 2 eingestellten Baugruppenadresse identisch , und ein Lese- oder Schreibsignal (IOR oder IOW) aktiv ist . Während eines Speicherzyklus , bei dem zufällig die "richtigen " Adressen anstehen (Signal BGSEL = high), darf weder der bidi rektionale Datenpuffer noch der 8253 freigegeben werden . Der Pegel des IOR-Signals schaltet die Transferrichtung des Daten puffers um (DIR - Eingang) . Für die Erzeugung des Taktes mit programmierbarer Perioden dauer ist der Zähler Nr .
~
des 8253 mit der Betriebsart 3 (vgl .
Abschnitt 5 . 5 . 2) als Dezimalzähler zu initialisieren . Das Pro-
Frontstecker
Systembus (SMP) DB 7-~
D7-0
CLK~ GATE~ OUT~
8 2 5 3
CLKI GATE 1
RD
IOW
WR
CLK2
A~
GATE2
M
Al A2 A3 A4 A5 A6 A7
Bild 163
OUTI
IOR
Al
OUT2
Einfache Zeitgeber-Baugruppe für (SMP - ) Bussystem (Blockschaltbild)
- 311 -
gramm PCLOCK (Erogrammable clock , Beispiel 44) erwartet daraufhin die Eingabe der Zählgröße max. 4stellig dezimal von der Konsol - Tastatur und liefert am Ausgang
OUT~
die Rechteckfre-
quenz mit der gewünschten Periodendauer. Voraussetzung ist , daß von außen ein Zähltakt an
CLK~
Potential liegt . Der Zähltakt
(CLK~)
(OUT~)
anliegt und
GATE~
auf high -
und der erzeugte Takt
können auf einem Oszilloskop sichtbar gemacht werden.
PCLOCK erlaubt die fortlaufende Wiederholung des Experiments mit unterschiedlichen Zählgrößen. Zur Ausgabe eines ASCII-Zeichens auf den Konsol - Bildschirm und zur Eingabe von max . 4 Hexadezimalziffern von der Konsol Tastatur ruft das Programm PCLOCK die Unterprogramme AUS und HOLAD des Monitorprogramms (vgl. Tafel 19) auf. Das gesamte Spektrum der peripheren Bausteine des
8085
ist in
den Daten- und Handbüchern der Herstellfirmen beschrieben, von denen in diesem Skriptum
1421 1541 1611
und
1631
1121 1131 1151 1161 1181 119 1 1261
genannt sind .
- 312 -
6
Der Mikroprozessor 8088 - eine Kurzdarstellung
Der Mikroprozessor 8088 ist der leistungsfähigere Nachfolger des in Abschnitt- 2 beschriebenen 8085 . Es soll hier eine Kurz darstellung dieses im Vergleich zum 8085 recht komplexen Mikro prozessorsystems auf wenigen Seiten versucht werden , wobei be sonders die neu hinzukommenden SystemeigenSChaften beleuchtet werden. Der 8088 wird vielfach al 8 / 16 - Bit - Mikroprozessor bezeichnet , weil er einerseits intern eine echte 16-Bit-breite Verarbei tungs - und Transportstruktur besitzt und andererseits an seiner System- Schnittstelle einen nur 8 - Bit - breiten externen Date n bus zur Verfügung stellt, der sich ohne weiteres in die 8-Bit Speicher-
und Ein - /Ausgabestruktur des 8085 einfügt . Die Firma
INTEL führt den 8088 daher als 8 - Bit - Mikroprozessor
1611 .
Der 8088 beinhaltet den Befehlssatz , die Registerstruktur und den Systembus des 8085 als Untermenge und weist darüberhinaus schon einen großen Teil der Systemcharakteristika der 16-Bit Reihe 8088 - 8086 GND A1 4
AU A12 All AIO A9 A8 AD? AD6 AD5 AD4 AD3 AD2 ADI ADO NMI INTR CLK GND
V CC AI S A1 6/S3 Al?/S4 A18/55 Al9/S6 SSO MN/MX RD HOLD HLDA
80286 auf. So ist der 8088 software mäßig voll kompati bel zum 16-Bit - Basis (HIGH)
soren haben dieselbe Assemblersprache
WR IO/M DT/R: DEN ALE I NTA TEST READY RE5ET
prozessor 8086 , d.h. die beiden Prozes -
ASM86 bzw. MASM und sind auch auf Maschi nenbefehlsebene iden tisch . Pi n- Belegung im Max - Mode ( )
Bild 1 64 Anschlußbe l egung des Mikroprozessors 8088 16 1 1
Der leistungsfähige Befehlssatz mit sei nen vielseitigen
- 313 -
Adressierungsarten, die hardwaremäßige Segmentierung des l - MByte großen Speicherraums und das vereinheitlichte Vektor I n terruptsystem unterstütze n den Einsatz von hö here n Programmiersprachen und Betriebssystemen. Tafel 30 enthält eine Auf stellung de r wichtigsten Systemeigenschaften des Mikroproze s sors 8088 i m Verg l eich zu denen des 8085 . Der Baustein 8088 ist in einem 40 - polige n dual - in - l i ne - Gehäuse verpackt (Bild 164) , in HMOS - und CMOS - Technologie verfügbar und mit Tak t frequenzen von 5 MHz oder 8 MHz betreibbar. 6 .1
Strukt u r des Mikroprozessors 8088
Im Mikroprozessor 8088 gibt es zwei voneinander weitgehend u n ab h ä ngige Fu n ktionseinheiten , die Au sfÜh r u ngsein heit (eng l . execution u n it EU) und die Bus -I nterface - Einheit (engl .
~us
interface unit BIU), die von einem zentra l en Leitwerk (engl. control and timing) so gesteuert werden , daß sie si multa n ar - · beiten (Bi l d 165). Das Leitwerk ist mit Mikroprogrammen a u s dem baustein - internen Steuerspeicher realisiert 11 0 1 111 1.
,---------- -- - - -, I Syst e mt ak t
1 1
I I I I
I I I I
I
Le i twerk (control and timing)
.t l
1J
Ausf üh run g s ei n heit
Bu s -I nter face - Ein hei
(execution u nit, EU)
H ~
(bu s inter face unit BIU)
L--- __________
Bil d 165
l I I
Ste uersignale 8 0 8 8 -
I
System-
I
I I
I J
bus
Adresse/ Date n
Funktion seinheiten im Mi kroprozessor 8 08 8
Di e Bu s - In terface-Ein h eit mit dem zugehörigen Lei t werkstei l ste u ert sämtliche Ab l äufe auf dem Systembus ; sie holt die Be fe hl e aus dem Speicher und überträgt Daten von den peripheren Baustei ne n a m Systembus z u r Ausfü h rungseinheit und umgekeh rt .
- 314 Die Ausführungseinheit verarbeitet selbständig und soweit mög lich parallel zur BIU di e ange li eferte n Operanden gemäß dem entschlüsselten Operationscode und übergibt die Ergebnisope randen zum Abspeichern an die BIU zurück. Der Grad der Parallelarbeit der zwei Funktionseinheiten und damit der Befehlsdurchsatz des Prozessors wird wesentlich er höht durch seine Pipeline-Struktur, zu der als wicht iges Ele ment der 4-Byte-lange Befehlspuffer (engl. instruction queue) in der Bus - Interface - Einheit gehört (Bild 166). Die BIU lädt selbständig aufeinander folgende Befehlsbytes in den Befehls puffer, bis dieser voll ist . Die Ausführungseinheit holt je weils den nächsten Befehl aus dem ' Be fehlspuffer und führt ihn aus, während die BIU den Puffer erneut auffüllt . Auch der Trans fer von Speicheroperanden erfolgt zeitlich überlappend zur eigent lichen Befehlsausführung. Dieses pipe lining führt dazu, daß die Befehl-Hol zeite n nur noch zu einem kleinen Teil
C-Bus Befehls puffer (4 Bytes)
BI U
._._,_.r'-·-·-· A- Bus AX BX CX DX
SystemSteuer bus
AL BL CL DL
AH BH CH DH SP BP SI D1
EU Fla s
Allgemeine Register Bild 166
Blockschaltbild des Mikroprozessors 8088 164 1 1651
- 315 in die Programmlaufzeit eingehen. Genaueres zum Thema pipelining ist in 1641 und 1661 zu finden. Die funktionelle Darstel lung der 8088-Struktur (Bild 166) zeigt die wichtigsten Register und Transportwege und ihre Zuordnung zu den zwei Funktionseinheiten BIU und EU. Das für den Pro grammierer maßgebende Programmiermodell (Bild 167) faßt die programmierbaren Register in Gruppen zusammen. Man vergleiche hi erz u das Programmiermodell des 8085 (Bild 45).
DX
Allgemeine Register (byte - und wortweise adressierbar) 15 0 Akkumulator AH AL BH BL ~ase-Register CH CL ~ount-Register Qata-Register DH DL
SP BP SI DI
Zeiger- und Indexre<;1ister (wortweise adressierbar) 0 15 Stack Pointer Base Pointer Source Index Destination Index
AX
BX CX
I
I
Se<;1mentregister (wortweise adressierbar) 15
0 ~egment Register Data ~egment Register Stack ~egment Register Extra ~egment Register
-Code
CS DS SS ES Instruktionszeiger und Fla<;1s 0 15
IP
I
I
Instruction Pointer Flag Register/ Status Word
FR Abk. : OF DF IF TF
d . h . Overflow Flag Direction-Flag Interrupt Flag !rap ~lag -
Bild 167
Programmiermodell des Mikroproz esso rs 8088
ZF } SF AF PF CF
identisch mit 8085-Flags (vgl. Bild 46)
- 316 Der Mikroprozessor BOBB verarbeitet gleichberechtigt l6-Bi t Wortoperanden und Byteoperanden ohne und mit Vorzeichen (vg l. Bild 2 u nd Bild 5) . Die allgemeinen Register (Bi ld 167) sind in den Befehlen daher als l6 - Bit - Register z.B. AX oder als B-B it Register AH (d.h .
~ku ~igh
byte) und AL (d.h.
~kku
! ow Byte)
ansprechbar . Bei ei nigen Befehlen hab en die allgemeinen Regi ste r festg elegte Funktionen. Der Dat e ntr a n sfer a uf dem Syste mbus erfo l gt in j edem Fall bytewe ise auf de n gemultiplext en Adreß - /Datenleitungen ADO .. AD7 , der BOBB setzt i n te rn Bytes nach Bedarf z u Worten zusammen . Die Flags werde n i m Prinzip wie beim BOB5 gehandhabt (Abs c hn. 2 .1.1), es k omme n jedoch n eu hinzu d as Qverflow flag OF (Über lauf b e i Zweierkomplement-Operanden), das Qirection flag DF (für String-Befehle), das !nterrupt flag IF zum Sperren des Int er rupt -Eingangs INTR und das !rap flag TF zum Ein - /Ausscha l ten der im Baustein unterstützten Einzelbefehlsverarbeitung. Neben dem nich t ~nt err upt)
sperrbare n Alarm-Eingang NMI (d.h.
~on ~askable
h at der BOBB nur ei n en Sammel-Interrupt -Einga ng INTR
(Bild 164) und eine maximal 256 Elemente lange Interrupt-Vektor -T abel l e im Hauptspeicher, die mit Software-Interrupt-Befehlen ansprechbar ist. Die Verarbeitung von externen Interrupt - Sig nalen ist nur mit exter nen Int err upt Controllern möglich (z.B. B259A , vgl . Absch n. 2. 4 .4 ), die dem BOBB ei n e B- Bit - Vektor-Nummer zur Auswahl ei n es Vektors in der zentra l en Tabel l e liefern . Der Baustein BOBB kann durch Anl ege n ei n er Spannung an den Ba ustein - An schluß MN/MX in die Minimum- oder Max i mum-Betriebsart (Min - /Max -M ode) gescha ltet werden . Im Min-Mode hat er d ie in Bild 164 ohne Klammern angegebene n Anschlüsse und ist damit für kleinere BOBB-Systeme geeignet, d ie de n BOB5 - Schaltungen in Bild 113 und Bild llB e n tsprec h en. Im Max- Mode - es gi lt die Ansch lußb e l egung in Klammern - unterstützt der BOBB den Multiprozessor - Betrieb z . B. über den MULT IBUS und im besonderen die Zusammenarbeit mit dem Arit hmetikprozessor BOB7 im KoprozessorBetrieb 1651. Der BOB7 f üh rt ei n e n Sat z von Arithmet ikb efeh l en aus, die quasi den BOBB -Befeh l svorrat erweiter n. Der B086 Assembler übersetzt die BOB7 - Arit hmet ikbefehle mit.
- 317 Tafe l
30
Systemeigenschaften des 8088 im Vergleich zum 8085
System- Eigenschaft
8 0 8 8
Interne Prozessorstruktur
16 Bit
8 Bit
Datenbus
8 Bit
8 Bit
8 0 ß 5
Adressenbus
20 Bit
16 Bit
Adressen/Date n gemu l tip l ext
AD7 - 0
AD7- 0
Realer Speicher - Adressenraum
1 M Bytes
64 K Bytes
Segmentierung des Speicherraums
ja
nein
Operan de n längen
8 Bit/16 Bit
8 Bit
Befehlslängen
1 - 6 Bytes
1 - 3 Bytes
Adressierungsmodi in Befehlen
vielfältig
eingeschränkt
Festpunktarithmetik
ohne VZ
ohne/mit VZ
MU l tiplikation in Hardware
ja
nein
Division in Hardware
ja
nein
Ein - /Ausgabeoperand
8 Bit/16 Bit
8 Bit
Ein - /Ausgabeadresse (isolated 10)
8 Bit (direkt) 16 Bit (indir)
8 Bit
EA- Adressenraum
64 K Bytes
256 Bytes
Standard- E/A-Bausteine. Ergän,. zungs - und Interface Bausteine ansch li eßbar
ja
ja
8085 - Spezia l- Ba u stei n e anschließbar (Abschn. 4 . 2.4)
ja
ja 1 (TRAP)
Alarm-I nterrupt - Eingang
1 (NMI)
Mehrebenen-Interruptsystem
ja
ja
Interr upt - Eingänge am Prozessor
1 (INTR)
1 (INTR) + 3
Ext . Erweiterung der Eingänge
ja, max. 256
ja
Zentra l e Interrupt - Vektor-Tabelle
ja
nein
Pipe l ine - Struktur
ja
nein
Einze l befehls-Verarbeitung intern
ja
nein 3/5/6 MHz
Systemtakt
5/8 MHz
Prozessor DMA - fähig
ja
ja
Multiprocessing HW- unterstützt
ja
nein
Coprocessing HW-unterstützt
ja
nein
Assemb l ersprache
umfangreich
einfach
- 318 6.2
Segmentierung des Speicherraums
Programme können in die logischen Bereiche Code (Befehle und Konstanten), variable Daten und Stackdaten aufgeteilt und in verschiedenen Segmenten gespeichert werden. Ein Segment ist eine logische Einheit von Speicherplätzen . Der Zugriff auf den Hauptspeicher erfolgt bei 8088 - Systemen ausschließlich über die Segmentregister CS, DS , ES und SS (Bild 166 und Bild 167). Diese enthalten die 16-Bit- Segmentbasen von maximal 4 im Hauptspeicher gleichzeitig adressierbaren Segmenten (Bild 168) , wobei im Prinzip die Zuordnung gilt: - Befehle liegen im Codesegment , das ausschließlich über die Segmentbasis im CS-Register adressiert werden kann, - variable Daten liegen im allgemeinen im Datensegment und werden über die Segmentbasis im DS-Register adressiert bzw. - können wahlweise auch im Extrasegment , einern weiteren Datensegment liegen, das über das ES-Register angesprochen wird , - Stackdaten werden ausschließlich im Stacksegment abgelegt und über die Segmentbasis im SS-Register adressiert. Sind in einern Programm insgesamt mehr als 4 Segmente beteiligt , dann müssen die Segmentregister vor ihrem Aufruf durch Befehle mi t neuen Segmentbasen geladen werden. Ein Programm kann auch mit weniger als 4 Segmenten ablaufen , das CS - Register muß je doch immer definiert stehen , da Befehle nur aus dem Codesegment heraus ausgeführt werden können. In diesem Zusammenhang sei auf die EXE - und COM - Formate des Personal Computers verwiesen 1671. Zur Adressierung eines Bytes im I-MByte-langen Hauptspeicher muß der Prozessor eine 20 - Bit - lange physikalische Speicher adresse auf den Systembus legen. Ein Segmentregister liefert hierzu nur die höherwertigen 16 Bits, die niederwertigen 4 Bi närstellen ergänzt der 8088 intern mit Nu ll en (Bild 168). Segmente können im Hauptspeicher somit nur auf jeder 16 - ten Byteadresse anfangen (Paragraf-Grenzen). Für die Adressierung von Informationseinheiten innerhalb der Segmente ist eine 16 - Bit - lange Verschiebung (engl . offset) bzgl. der Segmentbasis erforderlich . Der Offset wird für den Zugriff auf verschiedene Segmenttypen unterschiedlich gebi ldet, wie
- 319 I-MBy te Speicherraum FFFFFH
+ lP
es
IF
Offset 0
+ SP
0
FOOIOH
1
Off set OOAOOH
+ EA
Off set
+ EA
Off set
ES
I0
0
0
0
I
Abk . : EA d.h. Effektive Adresse Bild 1 68
Extra Segment 7 Bit - Nr.
OOOOOHl
o
Physikalische Speicheradresse
Segment-Struktur un d Zugriff auf Segme n te (8088)
in Bild 168 angedeutet. Vor dem Befehlholen wird der aktue ll e Inhalt des l nstruction Pointers (IP) als Offset zur eS - Segment basis addiert , bei Stackoperationen der Inhalt des Stack Point ers (S P) , für den Zugriff auf Datensegmente ist eine effektive Adresse EA zu bilden (s. Abschn. 6 . 3) . Die für die Auswahl eines Speicherplatzes im I-MByte-Adressenraum erforder liche Kombination Segmentbasis - Offset wird auch als logische Adresse oder pointer bezeichnet. Der 16 - Bit - lange Offset legt die Segment länge in al l en INTEL- 16-Bit -S ysteme n auf max . 64 KBytes fest. Vor jedem Speicherzugriff erzeugt die spezielle Addierscha ltun g in der BlU (vgl. Bild 166) durch Addition eines Offsets zu ei n er ergänzten Segmentbasis die 20 - Bit - lange physikalische Spei cheradresse .
Die Auswahl eines der 4 Segmentregister erfo lg t
dabei imp l izit , abhängig von der Art des Speicher zug riffs und
- 320 von den Datendeklarationen, ist aber mit segment - override prefix- Befehlen 16411651 auch explizit steuerbar. Vergleichsweise einfach ist die Adressierung der peripheren Einheiten in den IN - /OUT - Befehlen. Zusätzlich zur 8 - Bit-Adresse gibt es bei indirekter Ein-/Ausgabe eine 16-Bit-Adresse (Tafel 30). IN - /OUT-Befehle können ein Wort oder ein Byte übertragen . 6.3
Befehle und Adressierungsarten des 8088
Durch die Prozessor - Hardware ist ein leistungsfähiger Befehlssatz von 89 Grundbefehlen gemäß 1641
(8086 Instruction Set
Summary) festgelegt, wobei z.B. der Mnemonik "MOV byte/word" mit seinen 7 Operationscodes und 13 verschiedenen Operanden kombinationen als ein Befehl in di e se Zählung eingeht. Die mei sten Befehle verarbeiten Wort- und Byteoperanden, die wahlweise in Registern, im Speicher oder im Befehl stehen. Der Befehlssatz kann in 6 Befehlsgruppen eingeteilt werden:
*
Datentransfer einschl. Stack- und Adreßrechnungsbefehlen
* Arithmetik Operanden mit/ohne Vorzeichen , Festpunkt - Multi plikation/-Division , zzgl . 8087-Befehlssatz
* Logik einschl . Bit - Test , Shift- und Rotate - Befehlen mit va riabler Schrittanzahl im Speicher und in Registern
* Stringverarbeitung für Byte- und Wortketten bis 64 KLänge * Programmablauf mit Schleifenbefehlen , Unterprogramm- Aufruf, Software - Interrupts und relativen Sprüngen
* Prozessorsteuerung mit Flagoperationen und Multi- und Koprozessorsynchronisation. Die kurzen Anmerkungen dieser Aufstellung sollen auf wesent liche Erweiterungen des 8085 - Befehlssatzes hinweisen. 7
2 1 0 7 654 3 210 Op - Code
:D : WIMOD : REG : R/M
Quelle-Ziel~illl : :
Festlegung Wort/Byte
. Reg~ster - Nr.
Bild 169
: :
[Y!.S!~?2:V~öi:~~I('
_-:..-: J
'VB"."
0 abhängig von MOD und R/M
'
I I {Befehl mit/ohne Speicherbezug . _- - - - - --1-- Adressierungsmodus und
Displacement-Definition
Grund- Befehlsformat des 8088
- 321 8088-Befehle können 1 bis 6 Bytes lang sein. Das Grund-Befehls format umfaßt 2 Bytes und kann um bis zu 4 Bytes für eine Adreß konstante und/oder einen Immediate - Operanden verlängert werden. Die im MOD- und R/M-Feld des Befehls angegebene Adressierungsart (Bild 169) ist die Vorschrift zur Bildung der Effektiven Adresse EA , die den Off set bzgl. einer Segmentbasis ergibt . Die EA entsteht nach Bild 170 aus 1 bis 3 Komponenten.
[o~~j
EA Effektive Adresse
Anm . :
C· .]
Bild 170
[o~H
+
+
J
[DI SP8 o d er DI SP16
( Index Displace (Bas i s reg i ster) + register) + me n t '---v----' v ge rn. R/M - Feld gern. MOD-Fe l d d . h . Adreßkomponente kann entfa l len Bildung der Effektiven Adresse im 8088
Aus den 24 möglichen Adreßkombinationen lassen sich 5 grundsätz liche Adressierungsarten für Speicheroperanden unterscheiden : 1 . ) direkte Adressierung mit 16-Bit Displacement im Befehl 2.) indirekte Adressierung über ein Basis - oder Indexregister 3 . ) indirekte Adressierung über ein Basis - oder ein Indexregi ster und einem 8 - Bit - oder 16 - Bit - Displacement 4 . ) indirekte Adressierung über ein Basis - und ein Indexregister 5.) indirekte Adressierung über ein Basis- und ein Indexregister und einem 8-Bit - oder 16 - Bit - Displacemel11:aus dem Befehl . In der Assemblersprache des 8088 schreibt man z.B . zu 3.: MOV AL , QUELL[SI]; d.h.
(AL)_(DISP8/16 + (SI))
zu 4 . : ADD [BX] [DI] ,DX ; d . h .
((BX) + (DI) ) _ ( (BX) + (DI)) + (DX)
Auf eine Vielzahl von Assembler-Eigenschaften , die de u t l ich über das bei 8 - Bit-Mikroprozessoren Bekannte hinausgehen , kann hier nur verwiesen werden 1681. Von den Hilfsmitteln für den Test von 8088 - Programmen sei der 2 Echtzeit - Testemulator 1 rCE 1691 erwähnt.
- 322 7
Vergleich des Mikroprozessors Z80 mit dem 8085
Der Mikroprozessor
Z 8 0 der Firma ZILOG 170 I 1711 ist eine
Weiterentwicklung des Mikroprozessors 8080 , die etwa gleichzeitig mit dem 8080 - Nachfolger 8085 von INTEL auf den Markt karn . Der 8- Bit-Prozessor Z80 den Registerblock und den Befehlssatz des 8085 (vgl. Abschn. 2) zwar als Untermenge, weist jedoch einige Erweiterungen in der Struktur und im Befehlsumfang a uf. Nach Bild 171 sind beim z80 die 16 Adreßleitungen AlS -O und die 8 Datenleitungen D7 - 0 getrennt herausgeführt, sodaß externes Demultiplexen der Leitungen entfällt. Zur Ansteuerung der peripheren Bausteine am Z80-Systembus sind die Steuersig nale RD (Lesen) und WR (Schreiben) sowie MREQ (Speicheranforderung)
und IORQ (Ein - /Ausgabeanforderung) vorgesehen . Beim
isolated - IO-Verfahren (vgl . Abschn . 4.2.1) geht MREQ mit in die Auswahlschaltung für die Speicherbausteine und
IORQ in die
Auswahl der Ein - /Ausgabe - und Erweiterungsbausteine ein. Der Z80 benötigt einen externen All A12 Al3 A14 AIS CLK D4 D3 D5 D6 +SV D2 D7 DO Dl INT NMI HALT MREQ IORQ
A10 A9 A8 A7 A6 AS A4
A3 A2 Al AO GND RFSH MI RESET BUSRQ WAIT BUSAK WR
RD
Taktg enerator , der den Grundtakt CLK von 4 MHz (Z80A), 6 MHz (Z80B) bzw. 8 MHz (Z80H) liefert. Die weiteren Ansch lußsignale sind in 1701 erk lärt. Die 8-Bit - breite Hardware-Struktur des Z80 ste ll t mehr prograrnrnierbare Register (Bild 172) zur Verfügung als der 8085. Die Universal - Register A, B, C, D, E ,
H,
Leinschließlich
Flag - Register F sind im wesentlichen wie beim 8085 prograrnrnierbar . Durch spezielle Austauschbefeh l e kann deren Inhalt mit den entsprechenden
Bild 171 Anschlußbeleg ung Registern des zusätzlich vorhandenen des Bausteins i80 Alternativen Registersatzes sehr
- 323 -
s ch ne l l vertauscht werden : " EXX " vertauscht die 6 Reg i ster B . . L mit B' . . L ' ,
"E X AF, AF ' " vertausc h t A ,F mi t
A ' ,F ' .
Die
Alt e rn at i v - Re gi ster kö nne n de n Sta t us von In terrup t-Pr ogramme n auf n ehmen , was letzten Endes die Interrupt - Antwortzeite n ver kürzt (vg l. Abschn . 2.4 .1 ) oder i m Programm a l s z u sätz li c h e Speic h er - Regis t er genutzt werde n . I m Spezia l - Registerbloc k (Bild 17 2) fal l en die zwei Index regi s ter I X u n d I Y auf , die die i n dizier t e Adressier u ng von Sp eic h eropera n den ermöglichen (vgl . Bild 26 und Bild 27). Zum Be i sp i e l
lä dt der Tr a n sport -Befe h l
" LD A, (I X+d )" d e n Akku -
mu l ator mit ei n em Byte aus dem Speicher , dessen effek ti ve Adres se durch Addition des I ndexwerts (IX) und des 8 - Bi t - Di sp l ace me n ts d aus de m Befehl ( - 1 28
d
+1 27) gebildet wird . Di e 1 6 - Bit -
Indexr egister s i n d la d b a r un d mit de n 16 - Bit - Arit hme tikb e fehl e n z u ve r ä n dern.
Neben den Sprungbefehlen mit absoluter 16 - Bit - Adresse gib t es b eim Z8 0 re l ative Sprü n ge , deren 8 - Bit - Versc hi ebu n g e sic h au f
, Un iver sa l- { Regis te r
Alt ernat i ve r Re g ister satz
Ha u pt -Registers a tz
" A
8
A'
8
Flags F ' 8
B
8
C
8
B'
8
C'
0
8
E
8
0'
8
E'
8
H
8
L
8
H'
8
L'
8
In de x - Re g is t e r I X
16
I ndex - Registe r
16
Spez i a l Register
~
IY
Stack Poi n ter SP
16
Befe h l sz ä hl er PC
16
I
81
R
8
IIFFll IFF 2 1 IIMFal I MF b I
8
Abk. : I d .h. In ter r upt - Ve k tor - Reg ister R Me mor y - Re fr es h-Reg i ster IF F 1 /2 d . h. I nter ru pt - Sta tu s -Fl ipf lops 1 /2 I MFa/b Interr u pt - ~o dus-~I ipflops alb Bi ld 1 72
,
"
v
Fl a gs F 8
Programmiermodell des Mikroprozessors Z80
- 324 Code im Speic h er
den akt uell en Befehlszäh l ersta nd (PC) bezieht, und zwar den unbedingten Sprung "JR e " un d den bedingten Sprung "JR
cond , e ".
Das Sprungzie l ergibt sic h nach Bild 1 73 zu (PC ) = (PC) + e neu mit dem Sprungbere ich - 126 e +129 . Die Bedingung cond bezieht sich auf Carry - oder Zero-Flag. Relative Adressen in Be f eh l en haben den Vortei l, daß sie bei Versc h iebun g des Codes im Speicher nicht geändert werde n müsBild 173
Befehlszähl er re lati ver Sprung
sen (relocatable code) .
Der Befehlsvorrat des Z80 wurde im Verg l eich zum 8085 erheb lich erweitert . Abhä ngig vo n der Betrachtungsweise kann man für den Z80 etwa 150 Maschinenbefehle 170 1 im Vergleic h zu den etwa 72 Befehlen des 8085 a ng eben . Es gibt demzufolge Z80 Befeh l e mi t
2 Operationscode - Bytes.
Neu hin z ukommende Befehlsgruppen sind :
* Bl ocktransferbefehle verschieben einen Block von Bytes im Hauptspeicher (aufwärts- oder abwärtszähl e nd) .
* Blocksuchbefe hl e verg l eic h en einen Datenb l ock im Speicher byteweise mit einem Suchbegriff im Akk umu l ator .
* Universelle Ein-/Ausgabebefehle tauschen mit a ll en Uni ver salregistern A . . L Bytes aus , wobei die Kanal - Nummer im Re gister C steht (z . B. " IN E, (C) " bzw . "OUT (C),E"). Zusätz lich gibt es Bl ock -E /A- Befehle , die Speicherbytes adressieren .
* Rotations - und Versc hi ebebefe hl e beziehen sich beim Z80 auf die Universalregister A .. L und a uf Speicherp lätz e. Zu den 4 Rotationsbefehlen kommen logische und arithmetische Verschiebebefehle hinzu (vgl. Absch n. 2 . 3.3) .
* Bit-Befehle setzen , rücksetzen und testen Einzelbits in den Universalregistern und Speicherplätzen.
- 325 Das Interruptsystem des z80 baut auf demjenigen des 8080 auf und hat nur wenig mit dem des 8085 gemeinsam. Der Baustein Z80 hat nach Bild 17 1 einen sperrbaren allgemeinen Interrupt - Ein gang INT und einen nicht maskierbaren Alarm- Eingang NM I. Die Befeh l e "EI " und " 01 " wirken - ähnlich wie beim 8085 - auf die i n ternen Status - F l ipflops IFFI u nd IFF2 (Bild 1 72)
170 1.
Die 3 I n terrupt - Modi des Z80 - IMO!1!2 - sind mit den 3 SetInterrupt - Mode - Befehlen "IM 0 " , " IM 1 " und " IM 2 " einschaltbar ; der aktuelle Modus wird in den 2 Interrupt - Modus-Flipflops IM Fa!b gespeichert (Bild 172) . Der Interruptmodus 0 entspricht den 8080- und 8085 - Interrupt systemen insoweit, als darin über einen externen " RST n"-Befeh l verzweigt wird (vgl . Bild 73) . Der Modus 1 ste l lt ein Ein - Ebenen - Interruptsystem mit fester Verzweigungsadresse 0038H dar , das der 8080 im Zusammenspiel mit seinem System-S teuer ba u stein bietet (vgl. Bild 1 1 5). Der Interruptmodus 2 ermöglicht den Aufbau eines Mehr - Ebe nen Interruptsystems mit einer auf Speicherseiten modulo 256 plazierbaren Interrupt - Vektortabelle (vgl . Bild 82) . Während des Interrupt - Acknow l edge - Zykl u s bildet der Z80 eine 16 - Bit Ze i ger adresse auf ein Element in der Interrupt - Vektortabelle. Der Zeiger entsteht aus dem programmierbaren Inhalt des Interrupt - Vektor-Registers I
(high byte)
(Bild 172) und einem
8- Bit - Vektor (low byte), den ei n peripherer Baustein auf den Datenbus legen muß . Der Z80 l eitet einen I n terrupt - Acknowledge Zyk l us durch gleichzeitiges Aktivieren der Prozessor- Sig n a l e IORQ und MI ein . Für den Aufbau des Mehr-Ebenen - Systems benötigt man keinen eigenen Interrupt Controller , wenn man die speziellen Ein - ! Au sgabe - u n d Ergänzungsba u steine des Z80 - Systems ei n setzt . Diese werden untereinander in einer Prioritäten-Kette s o ver sc h altet , daß die Priorität eines peripheren Bausteins durch seine Anordnung in der Kette bestimmt wird (daisy - chain- Ver fa hr en , Bild 174). Im INTA- Zyklus legt derjenige periph ere Baustein , der eine Interrupt - Anforderung und d ie höc h s t e
- 326 Priorität in der Kette hat , selbständig ein Vektorbyte auf de n Date nbus, sodaß das i hm zugeordnete Interrup t - Programm aufgerufen wird . - In de r Prioritäten - Kette nach Bild 174 rea giert im INTA-Z yk lus z . B. der mittlere Baustein, wenn sein Interrupt-En able - In - S igna l lEI sig n a l isiert , daß der höh er priore Bau stei n (CTC) keinen Int err up t -Wunsch hat , d urch Aufschalten seines Vektor -Bytes und Abhänge n der n iederpr ior e n Nachbarn
mi t dem Ausgang IEO ;low (!nterrupt
~n ab l e
Qut) .
Hat der mittl ere Baustein keine Int err upt - Anforderung , so gibt er die nachf olge nde n Bausteine mit IEO;high für Unt e rbr e chungen frei .
Systembus
höchste Priorität Bild 174
geringste Priorität
Interrupt - Prioritätenkette mit Z80 - Spezia l baustei nen
Die wichtigsten Spezial-Bausteine des Z80 - Systems für Ein - / Ausgabe und Ergänzungsfunktione n 1701 sind: - z80-PIO Parallel - Ein- /Ausgabebaustein (2 ports , Handshake) - Z80 - SIO Serieller Ein - /Ausgabeba u stei n (2 Kanäle) - Z80-CTC Zähl er - und Zeitgeber-Baustein (4 Zähl er) - Z80 - 0MA Steuerbaustein (1 OMA-Kanal) Neben den Z80 - spezifischen E/A- un d Ergänzungsbausteinen wer den auch die INTEL - Standard - Bausteine (vg l . Abschn . 1. 2 . 6 und Abschn . 5) eingesetzt, mit denen a ll erdings die beschriebene Prioritätenkette nicht möglich ist .
- 327 -
Literaturverzeichnis 111
Osborne A.: An Introduction to Microcomputers .
12 1
Kobitzsch W.: Mikroprozessoren Teil 1: Grundlagen .
131
Kunsemüller H.: Digitale Rechenanlagen. Stuttgart 1971
141
DIN 44300 : Informationsverarbeitung
151
Haack 0.: Einführung in die Digi t altechnik.
16 1
DIN 66 003: Informationsverarbeitung 7- Bit - Code
171
Makroassembler Programmiersprache 8080/85 . SIEMENS 1981
18 1
Wilkes M. V. : The best way to design an automatie calcu -
Berkeley 1975/1976 München Wien 1977
Stuttgart 1972
lating machine. Manchester University Computer Conference 1951 191
Wendt S .: Zur Systematik von Mikroprogrammwerksstrukturen . El ektronische Rechenanlagen, Nr . 1 (1971)
1101
Schmidt V. : Digitalschaltungen mit Mikroprozessoren .
1111
Hoffmann R . : Rechenwerke und Mikroprogrammierung.
11 21
MCS - 80/85 Family Us er ' s Manual . INTEL Corporation .
113 1
Mikrocomputer - Bausteine Mikroprozessor - System 8085 .
1141
Kästner H.: Architektur und Organisation digitaler
115 1
Peripheral De sign Handbook . INTEL Corporation 1 979
11 61
Mikrocomputer - Ba u steine Peripherie .
11 71
Haas D.: Universeller Peripherie - Controller (UPI) er -
Stuttgart 1981 München Wien 1977 Santa Clara 1977 SIEMENS Datenbuch 1980/81 Rechenanlagen. Stuttgart 1 978
SIEMENS Datenbuch 1979/80 setzt spezielle Peripherie- Bausteine in Mikro computersystemen . German Chapter of the ACM 19 77 1181
Fl oppy Disc Controller 279X . WESTERN DIGITAL
- 328 1191
Parker R. O. /Kroeger J.H. : Algorithm Details for the Am 95 11 Arithmetic Processing Unit . ADVANCED MICRO DEVICES 1978
120 1
Rechenberg P .: Grundzüge digita l er Rechenautomaten
1211
DIN 66000 : Mathematische Zeichen der Schaltalgebra.
1221
DIN 66001: Informationsverarbeitung. Sinnbilder für
123 1
Singer F.: Programmieren in der Praxis . Stuttgart 1 980
124 1
Martin W.: Mikrocomputer in der Prozeßdatenverarbeitung .
125 1
Birck H. /Swik R. : Mikroprozessoren und Mikrorechner.
126 1
MCS-86 User's Manual. INTEL Corporation 1979
München , Wien 1968
Datenfluß - und Programmablaufpläne.
München , Wien 1977 München , Wien 1980 127 1
PL/M - Programmiersprache . SIEMENS Datenb u ch 1980/8 1
1281
Gößler R.: Entwicklungshilfsmittel für die Mikrocomputer
129 1
Ebersmann H. : Neue Wege in der Mikrocomputer - Entwicklung .
1301
Lichte/Harbers: UNIX unterstützt Mikrocomputer-Entwick -
1311
An In troduction to CP/M Features and Facilities . und
Programmierung. ELEKTRONIK , Heft 5 (1977) ELEKTRONIK, Heft 7 (1981) lungssystem . ELEKTRONIK, Heft 26 (1982) CP/M 2 User's Guide . DIGITAL RESEARCH , 1 978/79 1321
Einführung Siemens Mikrocomputer Entwicklungssystem .
133 1
SME ISIS 11 8080/8085 Makroassemb l er Bedienungsanleitung .
134 1
SMP-MON2, Technische Beschreibung des Monitorprogramms
135 1
Kreidl J .: Arbeitsweise von Debug-Programmen.
136 1
SDK- 85 System Design Kit , User ' s Manual. I NTEL 1978
1371
ISIS 11 8 080 /8085 Tabellenheft (SME). SIEMENS 1980
138 1
INTELLEC Serie 11, MDS Hardware Refere nc e Manual .
1391
ISIS II Betriebssystem , Bedienungsanleitung . SIEMENS 1981
SIEMENS , München SIEMENS, München für die Zentraleinheit SMP - E2/E3 . SIEMENS , 1980 ELEKTRONIK , Heft 6 (1 977)
INTEL 1979/80
- 329 -
1401
ISIS 11 CREDIT , Bildschirm- orientierter Text - Editor
1411
ICE - 85b In Circuit Emulator , Operating Instructions for
1421
MCS-8051 User's Manual. INTEL
1431
iSBC 80/24 Single Board Computer Hardware Reference
1441
Mikrocomputer - Baugruppensystem SMP, Systemübersicht .
1451
Application Note AP 28A: MULTIBUS Interfacing. INTEL
146 1
Maurer G. : Entwicklung und Test eines 8085 Single Board
1471
Lesea A. /Zaks R .: Mikroprozessor Interface Techniken .
1481
DIN 66202 : Schnittstelle für periphere Einheiten in
149 1
Kafka G. : Einführung in die Datenfernverarbeitung .
1501
V. 24/V . 28 - Schnittste ll ennorm. CCITT 1964/68/72
1511
RS-232 C- Standard . EIA 1969
15 2 1
DIN 66020 : Anforderungen an die Schnittstelle bei Über-
1531
BöningW .: ADMA, ein fortschrittlicher DMA-Controller
Bedienungsanleitung. SIEMENS ISIS 11 Users. INTEL 1981
Manual. INTEL Corporation 1980 SIEMENS 1983 Corporation 1980 Computers. Diplomarbeit an der FH Ulm, 1983 Sybex. 1979 digitalen Rechensystemen. ELEKTRONIK-Sonderheft Datenfernverarbei tung 1982
gabe bipolarer Datensignale . 1974 für 16 - Bit-Mikrocomputersysteme. SIEMENS Compo n ents Heft 2 (1983) 1541
Component Data Catalog . INTEL Corporation 1983
1551
Technical Manual Printer Model 702 . CENTRONICS 1978
1561
Matrixdrucker MT 110/MT 120, Bedienungsanleitung .
1571
Tholl H.: Mikroprozessortechnik. Stuttgart 1982
1581
Fortschritte bei Halbleiterspeichern: .. 64K , 128K, 256 K..
1591
Programmierbarer Multifunktionsbaustein SAB 8256A MUART.
1601
Siemens-Mikrocomputer - Entwicklungssystem Serie-IV.
MANNESMANN TALLY 1982
Elektronik Entwicklung, Heft 12 (1983) SIEMENS 1982 Produktinformation SIEMENS 1983
- 330 1611
Microsystems Components Handbook, Volume I /lI . INTEL 1986
1621
MSM80C85 Datenblatt. OKI Semiconductor
1631
Memory Components Handbook. INTEL 1986
1641
MCS-86 User ' s Manual. INTEL 1979
165 1
iAPX86,88,186 and 188 Us er ' s Manual. INTEL 1983
1661
Giloi W. K.: Rechnerarchitektur.
1671
Disk Operating System V 3.1. Microsoft, Copyright IBM, 1983
1681 1691
ASM86 Language Reference Manual. INTEL 1981 2 1 ICE Integrated Instrumentation and In - Circuit Emulation
1701
ZILOG Data Book. ZILOG Corporation 1982/1983
1711
Zaks R. : Programmierung des Z80.
Berlin Heidelberg New York 1981
System Reference Manual . INTEL 1983/1984
Sybex, Berke l ey Paris Düsseldorf 1983
Seite
Verzeichnis der Beispiele Bsp. 1 :
Dual-Dezimal-Umwandlung
Bsp. 2 :
Dezimal-Dual-Umwandlung (Subtraktionsmethode)
14
Bsp. 3 :
Dezimal-Dual - Umwandlung (Divisionsmethode)
14
Bsp. 4 :
Dual - Dezimal - Umwandlung von Brüchen
16
Bsp. 5 :
Dezimal-Dual-Umwandlung von Brüchen (Multiplikationsmethode)
16
Bsp . 6 :
Bildung des Zweierkomplements
18
Bsp. 7 :
Bildung des Zweierkomplements im 8 - Bit- Dualsystem
20
Bsp. 8 :
Darstellung von Binärworten im Oktal - und Hexadezimalsystem
22
Bsp . 9 :
Textdarstellung im ASCII - Code "79"
13
ULM"
26
Bsp . 10: Register-Speicherbefehl "ADD r , adr"
54
Bsp. 11: Addit ion vorzeichenloser 8-Bit Festpunktzahlen
66
Bsp. 12: Subtraktion vorzeichenloser 8- Bit Festpunktzahlen
68
Bsp. 13 : Subtraktion vorzeichen los er Festpunktzahlen durch Addition des Zweierkomplements (4 - Bit Dualsystem)
69
Bsp. 14: Addition und Subtraktion von Zweierkomplementzahlen
71
- 331 Seite BSp . 15 : Bytetransfer Bsp . 16: Löschen eines Speicherplatzes
123 123
Bsp. 17: Anwendung der Addier - und Zählbefehle
124
Bsp. 18: Subtraktionsbefehl
125
Bsp . 1 9: Addition mehrfachlanger Festpunktzahlen
1 29
Bsp . 20: Zweierkomplementbildung mit 8085 - Befeh l en
135
Bsp . 21 : Multiplikation mit Faktor 2
1 35
Bsp . 22 : Manipulation von Einzelbits
136
Bsp. 23 : Addition mehrfachlanger Zahlen mit Programmschleife
141
BSp. 24: Unterprogramm Zeitverzögerung
148
Bsp . 25 : Dezimaladdition von 4stelligen Dezimalzahlen
154
Bsp . 26: Unterprogramm mit Parameterübergabe nach PL/M- Konvention
156
Bsp. 27 : Interruptprogramm INTTI
172
Bsp . 28: Beispielprogramm HDUMP in Assemblersprache
188
Bsp. 29 : Zur Anwendung der Monitor-Kommandos
197
Bsp. 30 : Makrodefinition
205
Bsp . 31: Untersuchung des Programms HDUMP (Bsp. 28) mit dem Testemulator ICE85
215
Bsp . 32 : Befehle für Digital - Ausgabe nach Bild 122
252
Bsp . 33: Aufruf - Verteiler mit Digital - Eingabe
253
Bsp . 34 : Polling-Programm für Analog-Eingabe
269
Bsp. 35: Interrupt- Modul für Analog -E ingabe
273
Bsp. 36 : Initialisieren des Bausteins 8255
280
Bsp . 37 : Lauflicht
282
Bsp . 38 : Mu l tiplex - Ansteuerung von Siebensegmentanzeigen
286
Bsp. 39 : Drucker-Ausgaberoutine Bsp . 40 : Initialisierung des 8251A für Datensichtgeräteanschluß
294
Bsp . 41 : Einlesen eines zeichens von der Tastatur des Daten - Sichtgerätes im Polling - Verfahren Bsp . 42: Initialisierung des 8253/Zähler ~ mit LSB und MSB
300 300 304
Bsp . 43: Lesen des Zählerstands: " read on the f l y "
305
Bsp . 44 : Programmierbarer Taktgenerator mit 8253
309
- 332 -
Sachregister Ablaufdiagramm 76 ff. Ablaufsteuerung 49 Ablaufverfolger 179, 21 0 Addition 66, 129 -, mehrfachlang 71 Adreßbus 35 Adreßraum 38, 226 Adreßpegel 86 Adreß - /Datenbus 102 Adreßregister 47, 49 Adresse 27, 30 - , symbolisch 83. 84 -, effektive 321 -, logische 319 Adressierungsverfahren 54 ff ., 321 AEDIT 210 Akkumulator 48 ALU 46, 47, 92 Analog-Digitalwandler 267 ff. Analog -E ingabe 266 ff. Arithmetik 66 ff. Arithmetikprozessor 64, 316 Arithmetikbefeh l e 124 ff. ASCII-Code 23, 25 Assemblerbefehle 82 ff. Assemblersprache 80 ff. Assembleranweisung 84 ff. Assemblernotation 29, 82 Assemblierung 29, 81, 87 Asynchronübertragung 299 ff. Ausführungseinheit 313 f . Ausführungszeit 97, 148 f. Auswahlsignal 43 , 62, 227 ff.
Baudrate 261 Baugruppe 224 Baugruppensystem 224 Bausteinauswahl 230 ff . BCD-Zahl 21 , 23 BCD-Zahlen-Addition 152 ff. Bedingungskennzeichen 48 Befehle 29 Befehlsfamilien 28 Befehlsliste 115 ff. Befehlsformate 30, 320 Befehlsregister 48, 49, 95 Befehlszähler 48 , 49 , 94 Befehlsablauf 53
Befehlszyk lu s 51 ff ., 98, 107 ff. Betriebssystem 202 ff . Bibliothek 203 Binärzeichen 11 f. Binärwort 12 Binärziffern 13 Bit 11 Bi t-Set/Reset - Steuerwort 282 ff. BlOCk-Ein- /Ausgabe 274 ft. Borger 67 Bus 34, 35, 100 ff. -, synchron 105 -, asynchron 10 6 Bus Interface Einheit 313 f . Buszyklus 35, 100 ff. Bus-Zuteilung 36 Byte 12
carriage return 27 carry (CY) 66 , 69 carry flag 94 CCITT-Nr . 5 24 CENTRONICS -Schnittstelle 291 ff. chip enable 43, 62 , 227 ff. chip select 43 , 62, 227 ff. CMOS 39 ff. control bus 36, 100 ff. control register 62 f. control word 63, 281 CPU 34 -, 8085 90 ff. CREDIT 208 ff . cross assemb l er 180 cross compiler 180 Cursor 24
daisy chain 325 f. Daten 32 f . Datenbus 35, 100 Datenendeinrichtung (DEE) 258 Datensichtgerät 27 Datenübertragungseinrichtung 'DÜE 257 f . Datenübertragung , asynchron 261 ff. -, synchron 26 1 ff .
- 333 Datei 178, 182 Festpunktarithmetik 66 ff. Dateinamen 205 ff. Festpunktzah l en 13 ff. Dekodierung 227 ff. Festwertspeicher 33 , 39 Dezimalkorrektur 23 flags 95 Dezimal- Dua l- Umwandlung 14 flag - Register 48, 94 Dezimaltastatur 31 floppy disc 201 Digital-Ein- /Ausgabe 250 ff. Flußdiagramm 76 ff. Disassembler 195 Funktionseinheit 33, 34 Diskette 207 Division 72 ff. Grundtakt 96 , 322 Divisionsmethode 14 OMA 33, 274 ff. DTE-Modus 259 Halbleiterspeicher 39 ff . Dual - Dezimal-Umwandlung 13, 16 Haltepunkt 1 93 , 197 Dualzahl 13 Haltezeit 45 Dualbruch 16 Handshake-Schnittstelle 254 ff . - , 8255 286 ff. Hauptprogramm 169 f. Echtzeit - Test 213 Hauptspeicher 32 , 37 ff . Echtzeit - Emulation 213 Hexadezimalzahl 21 f . , 1 84 Echtzeit-Testadapter 201, Hold- Anforderung 101, 275 f. 213 ff . , 321 Editor 178, 208 ff . EDL I N 210 in circuit emulator 201 , 210 ff. EEPROM - Baustein 40 ff. Index 22 Einadreßbefehle 54 Indexregister 323 Ein - /Ausgabe Information 1 1 bitseriell 11 0, 111, 256 f f . input/output 59 ff., 249 ff . interru pt-gesteuert 270 ff. input/output address 62, 320 isoliert 225 f. input/output port 34 para l lel 250 ff. input/output channel ( IOC) 34 programmiert 265 ff. , instruction fetch 53, 98 270 ff. instruction queue 314 speicherbezogen 225 f. Interface 249 ff. , 8255 277 ff . Interface-Baustein 61 Ein - /Ausgabeadresse 62, 226, interrupt controller 174 ff . 228 Interrupt - Eingang 1 62 ff.,316, Ein-/Ausgabebaustein 60, 62, 325 277 , 295 , 326 Interrupt-Maske 160 , 165 Ein - Platinen-Mikrocomputer 222 Interrupt Mode 325 Einze l befehlsmodus 194, 198 Interrupt - Register 94 Einzelbitverarbeitung 1 31, 136 Interrupt-Vektor-Register 323 Einzelbefehls-Emulation 213, Inte r rupt - Routine 167 ff. 247 Interrupt - Steuerung 64 f., 1 58 Emulator 1 79, 182, 213 ff. Interrupt-Vektor - Tabelle 316 Entwicklungssystem 180 , 199 ff. Interrupt-Verschachtelung 160 Entwicklungscomputer 180 ISO-7 - Bit-Code 24 Entprellung 253 isolated 10 225 f. EPROM - Baustein 40 f. Ergänzungseinheit 64 KaI tstart 51 f. EXCLUSIV- ODER-Verknüpfung 75 Kanal 62 Kommentar 84 Komplement 17 ff . Koprozessor 316
- 334 label 83 Ladenwaage 31 Laufpriorität 162 LED- Anzeige 281 Leitwerk 46 Lesezyk l us 39, 43 f. , 103 f. L I FO - Prinzip 112 Linienstrom-Schnittstelle 263 linker 178 list - Da.t ei 183 listing 87, 171 ff., 1 83 ff. locater 178 Logikbefehle 130 ff . LSB 15 , 303
Oktalzahl 20 f . Operand 27 , 54 Operanden - jAdressenfeld 83 Operationscode 29 f . , 83 , 320 Operationscode-Abruf 98 f. overflow 9 overflow f1ag 315
Parallel-Ein - jAusgabe 250 ff . - , 8255 277 ff . - , Z80-PIO 326 Parameterüberqabe 155 ff., 199 Paraqrafqrenze 318 parity bit 24 Peripheriegerät 59 ff . PE (periphere Einheit) 32 f. , Makro 204 f . 34, 60, 249 mapping 21 1 , 217 Personal Computer 181 , 277 Marke 83 pipeline 314 Markenfeld 83 , 85 pointer 31 9 Maschinencode 29 polling 159 , 265 ff. Maschinenzyklus 95 ff . port 62 Matrixdrucker 201 port address 62 Mehrebenen-Interrupt 175 ff . Priorität 161 , 162 , 1 77 Mehrplatinensystem 223 , 228 Prioritäts - Kette 325 f . Mikrocomputer 32 ff. , 218 ff. Problemanalyse 76 Mikroprozessor 32 ff., 46 Programm- Ablaufplan 76 ff. MinjMax - Mode 316 Programmdokumentation 84 Mnemonik 28 f . , 83 , 115 ff. Programmentwicklu n g 88, 178 ff . Monitor 179 , 190 ff . , 202 Programmiermodell 93, 315 , 323 Monitorprogramm 179, 190 ff ., Programmliste 87, 171 ff., 183 202 Programmodul 272 f . Monitorkommandos 191 program listing 87 , 171 ff. , 1 83 MSB 15 , 19 , 303 Programmschleife 140 ff. MULTIBUS 37, 316 Mu l tifunktionsbausteine 235 ff . Programm- Statuswort 94 Programm- Unterbrechung 158 ff . MU l ti - Mikrosysteme 36 Programmiergerät 201 Multiplex-Ansteuerung 283 ff. Programmiersprache 89 Multiplikation 72 PROM 40 f. Multiplikationsmethode 16 Prozeßperiph erie 59 Pseudobefehl 84 ff . Pseudotetraden 21 f . Name 83 Pufferung 219 NICHT - Operation 75 NMI 316 , 325 NMOS 39 Quellprogramm 80, 81 , 182 ff . Quellprogrammdatei 183 Objektcode 80 f. , 182 f. Objektdatei 182 f. Ob j ektprogramm 80 f. , 182 f. ODER-Verknüpfung 75 offset 318 ff.
- 335 RAM 33 , 43 -, dynamisch 39 , 41 -, statisch 39 , 41 realtime trace 179 Rechenwerk 46 ff ., 92 re - entrant 157 Referenzversion -, deutsch 25 f. -, international 25 f. Register 15, 91 ff. , 315 , 323 Registeradresse 29 f. , 320 Registeradressierung 55 Registerpaar 1 5, 91 ff. Relativsprung 324 relocatable code 324 Reset-Vorgang 51 f. Restart - Eingänge 163 ff. Restart - Befehl 145 ROM 33 , 39 , 41 Rotierbefehle 131 ff. RS 232 C-Schnittstelle 257 ff. Rückkehrbefehle 142 ff. Rücksetzvorgang 51 f .
Schaltwerk 50 Schnittstelle -, paral l el 64 -, seriel l 64 Schnittstel l en -Umsetzung (8080 - 8085) 241 Schreib-/Lesespeicher 39, 43 Schreibzyk lu s 39 , 43, 45, 1 04 f. Segmentbasis 318 ff. Segment 318 Segmentlänge 319 Segmentregister 314 ff. Shift-Befehle 1 31 ff. Siebensegmentanzeige 283 ff. Siebensegmentcode 284 ff. Signa1 - Zeitdiagramm 44 f., 107 sign 17 single chip- Mikrocomputer 90 , 221 f. single step 194, 198 , 318 Sonderbefehle 150 ff. Source - Datei 183 Speicher 32 -, peripher 32 , 59 Speicheradresse 38 - ,physikalische 318 ff . Speicheradressierung 56 ff . indirekt 56, 321 -, indiziert 58, 321 , 323
Speicherkapazität 38 Speicherplan 81 Speicherplatz 37 Spe i chertechno l ogie 39 Speicherwort 38 Speicherzelle 37 Speicherzyklus 39 Sprungbefehle 137 ff. , 324 Stack 111 ff. Stackpointer 94 Standard- Systemschnittstelle (8080) 239 ff. Start - Stop- Betrieb 264 Statusbit 271 Statusbyte 63 -, 8255 289 , 291 -, 8251A 298 Status - flag 95 , 315 , 323 Steuerbus 35 f. Steuersignal 39, 49 Steuerwort 63, 281 Steuerzeichen 24 ff . Steuerungsbefehle 150 ff . Struktogramm 89 Subtraktion 67 , 125 -, mehrfachlang 71 Subtraktionsmethode 14 Symbol- Querverweisliste 1 87 , 190 Symboltabelle 87 , 187 Syntaxregeln 82 Systembus 35 , 100 ff. Systembuszyklus 96
Takt 96 Taktgenerator -, programmierbar 308 ff . Taktzustand 96 Terminal 27 Testemulator 179 ff . Text -Editor 178, 208 ff. top down design 76 tracer 179 Transferbefehle 119 ff. traj) 167 trap flag 315 f. Überlauf 67 , 69 f. , 316 Übertrag 66 f ., 69 UNO-Verknüpfung 75 Universalregister 92 f. , 315 , 323
- 336 -
Unterb r echungseingang 162 ff. Unterbrechungssystem 64 f . , 158 ff . Unterbrechungsmaske 160, 165 Unterbrechungsquittung 99 Unterbrechungsprogramm 167 ff. Unterbrechungs-Steuerbaustein 174 ff. Unterprogramm 113 , 147 f. , 154 ff. Unterprogrammbefeh l e 142 ff . Urladevorgang 201 UART - Baustein 296 USART - Baustein 295 ff. utility 199 V.24-Schnittstelle 257 ff . V.28 - Norm 260 Vektoradresse 162 ff ., 175 ff . Vergleichsbefehle 1 31 ff. Verschiebung 318 f. Verschiebebefehle 131 ff ., 320 , 324 Virt uel l e Adresse 55 VME - Bus 37 Vorzeichen 17 Vorzeichen-Betragsdarstellung 17
Warmstartroutine 1 97 Wartetakt 106 , 109 watch dog 270 Winchester disc 201 Wort 12 Wortlänge 12 X- ONjX- OFF-Protokol l 27
Zä hl sc h leife 148 , 1 49 Zahlendarstellung 13 ff . Zahlenbereich 15, 17 , 19 f . Zahlenformat 1 5 Zah l enkomplement 17 ff. Zahlenring 19 Ze i chen - , alphanumerisch 23 Zeitgeber- Baustein 64 f. , 301 ff. Zeitfehler 264
Zeitmultiplexverfahren 285 Zeitüberwachung 270 Zielsystem 179 ff. Zonenteil 24 Zug riff -, indizi ert 58 -, sequentiel l 39 -, wahlfrei 39 Zweiadreßbefehl 55
Teubner Studien skripten Elektrotechnik v. Münch,
Werkstoffe der Elektrotechnik 5., überarbeitete Aufl. 254 Seiten. DM 19,80
Oberg,
Berechnung nichtlinearer Schaltungen für die Nachrichtenübertragung
Pinske,
Elektrische Energieerzeugung
168 Seiten. DM 16,80 127 Seiten. DM 15,80 Pregla/Schlosser,
Passive NeLzwerke - Analyse und Synthese
198 Seiten. DM 17,80 Römisch,
Berechnung von Verstärkerschaltungen
2., durchgesehene Aufl. 192 Seiten. DM 17,80 Schaller/Nüchel,
Nachrichtenverarbeitung
Band Digitale Schaltkreise 3., überarbeitete Aufl. 168 Sei ten. DM 17,80 Band 2 Entwurf digitaler Schaltwerke 4., überarbeitete und erweiterte Aufl. 223 Seiten. DM 17,80 Band 3
Entwurf von Schaltwerken mit Mikroprozessoren
2., neubearbeitete und erweiterte Aufl. 173 Seiten. DM 16,80 Schlachetzki, Halbleiterbauelemente der Hochfrequenztechnik
280 Seiten. DM 19,80 Schlachetzki/v. Münch, Integrierte Schaltungen 255 Seiten. DM 19,80 Schmidt,
Digitalelektronisches Praktikum
Scholze,
Einführung in die Mikrocomputertechnik
2., durchgesehene Aufl. 238 Seiten. DM 18,80 2., überarbeitete und erweiterte Aufl. 336 Seiten. DM 21,80 Schymroch,
Hochspannungs-Gleichstrom-Übertragung
Seinsch,
Grundlagen elektr. Maschinen und Antriebe
127 Seiten. DM 15,80 230 Seiten. DM 18,80 Strassacker, Rotation, Divergenz und das Drumherum
2., überarbeitete Aufl. XII, 227 Seiten. DM 19,80 Thiel,
Elektrisches Messen nichtelektrischer Größen
Ulbricht,
Netzwerkanalyse, Netzwerksynthese und Leitungstheorie
Unger,
Hochfrequenztechnik in Funk und Radar
Vaske,
Berechnung von Drehstromschalcungen
2., überarbeitete und erweiterte Aufl. 244 Seiten. DM 19,80 175 Seiten. DM 15,80 2., neubearbeitete und erweiterte Aufl. 233 Seiten. DM 18,80 2., überarbeitete Aufl. 180 Seiten. DM 16,80 Vsske,
Berechnung von Gleichstromschaltungen
Va~e,
Berechnung von Wechselscromschaltungen
Vaske,
Ubertragungsverhalten elektrischer Netzwerke
Weber,
Laplace-Transformation für Ingenieure der Elektrotechnik
Westermann,
Laser
4., durchgesehene Aufl. 132 Seiten. DM 15,80 3., durchgesehene Aufl. 224 Seiten. DM 18,80 3., überarbeitete Aufl. 164 Seiten. DM 16,80 5., überarbeitete Aufl. 223 Seiten. DM 18,80 190 Seiten. DM 17,80 Preisänderur.gen vorbehalten