Zaks Programmierung Des
Total Page:16
File Type:pdf, Size:1020Kb
m ggggggggm Programmierung Programmierung des Z80 Programmierung des Z80 Rodnay Zaks Anmerkung: Z80 ist ein geschütztes Warenzeichen von ZILOG Inc., USA. Originalausgabe in Englisch Titel der englischen Ausgabe: Programming the Z80 Original Copyright © 1980 by SYBEX Inc., Berkeley, USA Deutsche Übersetzung: Bernd Floss Umschlag: Daniel Le Noury Satz: tgr typo-grafik-repro gmbH., Remscheid Gesamtherstellung: Druckerei Hub. Hoch, Düsseldorf Der Verlag hat alle Sorgfalt walten lassen, um vollständige und akkurate Informationen zu publizieren. SYBEX-Verlag GmbH, Düsseldorf, übernimmt keine Verantwortung für die Nutzung dieser Informationen, auch nicht für die Verletzung von Patent- und anderen Rechten Dritter, die daraus resultieren. Hersteller behalten das Recht, Schaltpläne und technische Charakteristika ohne Bekanntgabe an die Öffentlichkeit zu ändern. Für genaue technische Daten auf dem neuesten Stand wird der Leser an die Hersteller verwiesen. ISBN 3-88745-006-X 1. Auflage 1982 2. Auflage 1982 3. Auflage 1983 4. Auflage 1983 5. Auflage 1984 6. Auflage 1984 Alle deutschsprachigen Rechte Vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm odereinem anderen Verfahren) ohne schriftliche Ge nehmigung des Verlages reproduziert oder unter Verwendung elektronischer Systeme ver arbeitet, vervielfältigt oder verbreitet werden. Printed in Germany Copyright © 1982, SYBEX-Verlag GmbH., Düsseldorf Dankwort Der Entwurf eines Textbuches über Programmierung ist immer schwie rig. Ein solches Buch aber so zu konzipieren, daß es als Einführung in die Programmierung taugt und trotzdem fortgeschrittene Konzepte präsen tiert, ohne daß Hardware- und Softwareaspekte außer acht gelassen werden, ist eine Herausforderung. Der Autor möchte sich hier für die vielen Vorschläge zu Verbesserungen und Änderungen des Buches bei O. M. Barlow, Dennis L. Feick, Richard D. Reid, Stanley E. Erwin, Philip Hooper, Dennis B. Kitsz, R. Ratke und Jim Crocker bedanken. Sein besonderer Dank gilt Chris Williams für seine Beiträge zu dem Z80 Instruktions-Set und dem Kapitel über Datenstrukturen. Alle weiteren Vorschläge zur Verbesserung oder Änderung des Buches sollten an den Verlag geschickt werden. Die Tabellen zu den Hexadezimal-Kodes der Z80-Instruktionen in Ka pitel 4 sind mit Genehmigung von Zilog Inc, USA, nachgedruckt. Tabel len 2.26 und 2.27 wurden mit Genehmigung von Intel Corporation, USA, abgedruckt. 7 Inhaltsverzeichnis I. Grundbegriffe....................................................................... 17 Einführung, Was ist Programmierung?, Flußdiagramme, Darstellung von Information II. Z80 Hardware Organisation................................................ 43 Einführung, Systemarchitektur, Interne Organisation des Z80, Befehlsformate, Befehlsausführung durch den Z80, Zu sammenfassung III. Grundlegende Techniken der Programmierung.................89 Einführung, Arithmetische Programme, Multiplikation von BCD-Zahlen, Division von Dualzahlen, Zusammengefaßte Darstellung der Befehle, Unterprogramme, Zusammenfas sung IV. Der Befehlssatz des Z 8 0 .......................................................147 Einführung, Klassen von Befehlen, Zusammenfassung, Be schreibung der einzelnen Befehle V. Adressierungstechniken.......................................................429 Einführung, Mögliche Arten der Adressierung, Die Adres sierungsformen des Z80, Der Gebrauch der Z80-Adressie rungsformen, Zusammenfassung VI. Ein-/Ausgabetechniken .......................................................449 Einführung, Eingabe und Ausgabe, Parallele wortweise Übertragung, Serielle bitweise Übertragung, Zusammenge faßte Darstellung der Peripherie, Verwaltung von Ein- und Ausgabe, Zusammenfassung VII. Ein-/Ausgabegeräte .............................................................497 Einführung, Die Standard-PIO, Das interne Steuerregister, Programmierung einer PIO, Die Zilog-Z80-PIO VIII. Beispiel für Anwendungen ................................................ 507 Einführung, Löschen eines Speicherbereichs, Abfrage von Ein-/Ausgabegeräten, Eingabe von Zeichen, Test eines Zei chens, Test eines Zeichenbereiches, Erzeugen des Paritybits, Codeumwandlung: ASCII nach BCD, Hexadezimal nach ASCII, Suchen des größten Elementes in einer Tabelle, Summe von n Elementen, Berechnung einer Prüfsumme, Zählen der Nullen, Übertragung von Blöcken, Transfer ei nes Blocks von BCD-Zahlen, Vergleich zweier vorzeichen behafteter 16-Bit-Zahlen, Bubble-Sort, Zusammenfassung 8 PROGRAMMIERUNG DES Z80 IX. Datenstrukturen................................................................... 525 1. Teil — Theorie Einführung, Zeiger, Listen, Suchen und Sortieren, Zusam menfassung 2. Teil — Beispiele zum Entwurf Einführung, Darstellung der Daten in der Liste, Eine einfa che Liste, Alphabetische Liste, Verkettete Liste, Zusam menfassung X. Entwicklung von Programmen ..........................................563 Einführung, Grundlegende Entscheidungen, Unterstützen de Software, Wie man schrittweise ein Programm entwickelt, Alternativen bei der Hardware, Der Assembler, Bedingte Assemblierung, Zusammenfassung XI. S ch lu ß ................................................................................... 585 Die technologische Entwicklung, Der nächste Schritt Anhang A .........................................................................................587 Tabelle zur Umwandlung von Hexadezimalzahlen Anhang B .........................................................................................588 ASCII-Tabelle Anhang C .........................................................................................589 Tabelle relativer Sprungdistanzen Anhang D .........................................................................................590 Umwandlung dezimal nach BCD Anhang E .........................................................................................591 Der Befehlssatz des Z80 Anhang F ............................................................................................ 598 Äquivalente Befehle: Z80—8080 Anhang G .........................................................................................599 Äquivalente Befehle: 8080—Z80 I n d e x ...................................................................................................601 9 Verzeichnis der Abbildungen Abb. 1.1: Flußdiagramm zur Konstanthaltung der Raum temperatur ................................................................ 19 Abb. 1.2: Dezimal-Dual-Tabelle ............................................. 22 Abb. 1.3: Tabelle der Zweierkomplemente ......................... 28 Abb. 1.4: BCD T a b e lle ............................ 34 Abb. 1.5: Typische Gleitkommadarstellung ......................... 36 Abb. 1.6: ASCII-Umwandlungs-Tabelle ................................. 38 Abb. 1.7: Oktale Symbole ....................................................... 39 Abb. 1.8: Hexadezimalkode .................................................... 41 Abb. 2.1: Z80-Standardsystem ................................................ 44 Abb. 2.2: „Standardarchitektur“ eines Mikroprozessors . 46 Abb. 2.3: Schieben und R o tie re n ......................................... 47 Abb. 2.4: Die 16-Bit-Adreßregister erzeugen den Adreßbus . 48 Abb. 2.5: Die beiden Befehle zur Manipulation des Stapels . 51 Abb. 2.6: Einen Befehl aus dem Speicher holen ........................ 52 Abb. 2.7: Automatische Abfolge ............................................. 52 Abb. 2.8: Architektur mit einem einzelnen B u s .....................53 Abb. 2.9: Ausführung einer Addition - R0 in den Akku . 54 Abb. 2.10 Addition - Zweites Register RI in die ALU .... 54 Abb. 2.11 Das Ergebnis wird erzeugt und kommt nach R0 . 55 Abb. 2.12 Der kritische Wettlauf ............................................. 56 Abb. 2.13 Zwei Puffer werden b e n ö tig t ............................... 56 Abb. 2.14 Interne Organisation des Z 8 0 ............................... 61 Abb. 2.15 Typisches Befehlsformat .......................................... 63 Abb. 2.16 Die Kodes der R egister......................................... 64 Abb. 2.17 Instruction Fetch - (PC) wird zum Speicher geschickt 66 A b. 2.18: PC wird inkrementiert ............................................. 66 Abb. 2.19 Der Befehl kommt aus dem Speicher ins IR .... 67 Abb. 2.20 Übertragung von C nach D .................................. 68 Abb. 2.21 Der Inhalt von C wird ins TMP a b g e le g t .............. 68 Abb. 2.22 Der Inhalt von TMP wird nach D übertragen .... 69 Abb. 2.23 Zwei Transfers werden gleichzeitig ausgeführt . 71 Abb. 2.24 Das Ende von ADD ................................................ 72 Abb. 2.25 Fetch-Execute-Überlappung während T I—T2 . 73 Abb. 2.26 Abkürzungen von INTEL ....................................... 74 Abb. 2.27 Intel Befehlsformate ................................................ 76 Abb. 2.28 Übertragung des Inhalts von HL zum Adreßbus . 80 Abb. 2.29 LD A,(Adresse) ist ein Dreiwortbefehl .....................81 Abb. 2.30 Vor der Ausführung von LD A . ......................... 81 Abb. 2.31 Nach der Ausführung von LD A ......................... 82 Abb. 2.32 Das zweite Byte des Befehls gelangt nach Z .... 82 Abb. 2.33 Anschlußbelegung der Z80 M P U ......................... 85 10 PROGRAMMIERUNG DES Z80 Abb. 3.0: Die Register des Z 8 0 ............................................ 90 Abb. 3.1: Acht-Bit-Addition RES = OPI + O P 2 ..................91 Abb. 3.2: LD A,(ADR1): OPI wird aus dem Speicher geladen 92 Abb. 3.3: ADD A,(HL)