Jürgen Kehrel Apple-Assembler lernen Band 1: Einführung in die Assembler-Programmierung Jürgen KehreI · Apple-Assembler lernen J ürgen Kehrel Apple-Assembler lernen Band 1: Einführung in die Assembler-Programmierung des 6502/65C02 Dr. Alfred Hüthig Verlag Heidelberg Diejenigen Bezeichnungen von im Buch genannten Erzeugnissen, die zugleich eingetra gene Warenzeichen sind, wurden nicht besonders kenntlich gemacht. Es kann also aus dem Fehlen der Markierung ® nicht geschlossen werden, daß die Bezeichnung ein freier Warenname ist. Ebensowenig ist zu entnehmen, ob Patente oder Gebrauchsmusterschutz vorliegt. Als Ergänzung zu diesem Buch ist gesondert lieferbar: »Begleitdiskette zu Apple-Assembler lernen, Bd. 1« ISBN 3-7785-1243-9 CIP-Kurztitelaufnahme der Deutschen Bibliothek Kehrei, Jürgen: Apple-Assembler lernen/Jürgen Kehre!. - Heidelberg: Hüthig Bd. 1. Einführung in die Assembler-Programmierung des 6502/65C02. - 1986 ISBN 3-7785-1151-3 © 1986 Dr. Alfred Hüthig Verlag GmbH Heidelberg Printed in Germany Satz, Druck und Bindung: Laub GmbH, Elztal-Dallau 5 o. Vorwort Sie haben gehört, daß Assembler wahnsinnig schnell ist. Sie wissen, daß Assembler sehr kompakte Programme erzeugt. Sie haben aber auch gehört, daß Assembler schwierig zu erlernen sei und haben deshalb bisher erst gar nicht so richtig damit angefangen. Sie haben in vielen Zeitschriften Assemblerlistings gesehen und gehofft, sie mögen auf Diskette erscheinen. Oder Sie haben Byte für Byte die HEX-Dumps abgetippt ohne zu wissen, was Sie da eigentlich eingeben, und hinterher den großen Frust erlebt, wenn Sie sich verschrieben haben und nichts läuft. Sie mußten feststellen, daß viele interessante Programme in Assembler ge schrieben sind und Dinge tun, die Sie mit Basic nicht schaffen. Sie stehen Assembler mit einem Gefühl zwischen Bewunderung und Abscheu gegenüber. SIE sind gerade richtig, um am Kurs "Apple-Assembler lernen" teilzunehmen. Dieser Kurs hilft Ihnen systematisch, die Assemblerprogrammierung des Apple 11 mit allen Tricks und Finessen zu erlernen. Dabei wird sowohl im Buch als auch bei der Software der 65C02-Prozessor des Apple IIc und des neuesten (enhan ced) Apple IIe voll unterstützt. Ein Komfort-Assembler für 6502- und 65C02-Code sowie ein anschaulicher 6502-Simulator sind auf der Begleitdiskette enthalten, so daß Sie keine weitere Software kaufen müssen, um alle Teile dieses Kurses auch praktisch durchzu führen. Sie sollten folgende Vorkenntnisse besitzen: - Normale Bedienung des Apple 11 - mittlere Fähigkeiten in der Basic-Programmierung oder einer anderen Hoch- sprache. Sie brauchen aber kein Basic-Experte zu sein. An Hardware werden benötigt: - Apple II mit Applesoft im ROM (Hplus, He oder Hc) - 1 Diskettenlaufwerk - Monitor oder (notfalls) Fernseher. Außerdem sind zwei Leerdisketten und die "DOS 3.3 System Master"-Diskette von Apple erforderlich. Heidelberg, Oktober 1985 Dr. Jürgen B. Kehrel 7 Inhalt O. Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2. Der langsame Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3. Jetzt machen wir Fortschritte. . . . . . . . . . . . . . . . . . . . . . . . . . 15 Lektion 1: Wie der Blitz. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Lektion 2: DasrasendeHer(t)zdesApple . . . . . . . . . . . . . . . . 21 Lektion 3: Wieviele Bits bitte? . . . . . . . . . . . . . . . . . . . . . .. 23 Lektion 4: HEX ist keine Hexerei. . . . . . . . . . . . . . . . . . . . .. 27 Lektion 5: Vorzeichen zum Vorzeigen. . . . . . . . . . . . . . . . . . . 30 Lektion 6: Mit festem Wohnsitz. . . . . . . . . . . . . . . . . . . . . .. 32 Lektion 7: Ein Spaziergang im Monitor . . . . . . . . . . . . . . . . . . 35 Lektion 8: Vom Kopfzum Chip . . . . . . . . . . . . . . . . . . . . . . . 39 Lektion 9: Legale Tauschgeschäfte . . . . . . . . . . . . . . . . . . . . . 41 Lektion 10: IDUS - So tun als ob . . . . . . . . . . . . . . . . . . . . . . . 45 Lektion 11: Nehmen, Geben und Tauschen . . . . . . . . . . . . . . . . 48 Lektion 12: Aufund Ab mit Rundenzähler. . . . . . . . . . . . . . . . . 54 Lektion 13: Ein Karussell mit Ausgang . . . . . . . . . . . . . . . . . . . 57 Lektion 14: 1 + 1 = 3, auch das kann sein. . . . . . . . . . . . . . . . . . 60 Lektion 15: Borgen bringt Sorgen . . . . . . . . . . . . . . . . . . . . . . 63 Lektion 16: Zeige Flagge beim Vergleichen . . . . . . . . . . . . . . . . 67 Lektion 17: Schleife vor und zurück . . . . . . . . . . . . . . . . . . . . . 70 Lektion 18: Hast du da noch Töne . . . . . . . . . . . . . . . . . . . . .. 73 Lektion 19: Wir setzen Zeichen. . . . . . . . . . . . . . . . . . . . . . . . 78 Lektion 20: Ein guter Abgang. . . . . . . . . . . . . . . . . . . . . . . . . 81 Lektion 21: Links herum und rechts herum. . . . . . . . . . . . . . . . . 84 Lektion 22: Kreisverkehr . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Lektion 23: Keine wundersame VeJ'l11l'hJ'ung . . . . . . . . . . . . . . . 89 Lektion 24: Teile und herrsche .. ..... . . .... . .. .. ..... 92 8 Inhalt Lektion 25: Gesetzt oder nicht? . . . . . . . . . . . . . . . . . . . . . . . 95 Lektion 26: Ein wenig Logik. . . . . . . . . . . . . . . . . . . . . . . . . . 97 Lektion 27: BIT für Bits . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100 Lektion 28: Erst voll, aber schon übergelaufen . . . . . . . . . . . . .. 102 Lektion 29: Tief im Keller sitz' ich drin . . . . . . . . . . . . . . . . . . . 104 Lektion 30: Wo komme ich her? . . . . . . . . . . . . . . . . . . . . . .. 107 Lektion 31: Eine kleine Unterbrechung. . . . . . . . . . . . . . . . . . . 112 Lektion 32: Restbestände . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Lektion 33: Flaggenparade . . . . . . . . . . . . . . . . . . . . . . . . .. 118 Lektion 34: A weiß, daß B weiß, wo C wohnt . . . . . . . . . . . . . .. 121 Lektion 35: Ein Zuhause für mein Programm . . . . . . . . . . . . . .. 129 4. Der 6502/65C02 Befehlssatz. . . . . . . . . . . . . . . . . . . . . . . . . .. 133 5. ASSESSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 182 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 182 System voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 183 Der Aufbau von ASSESSOR. . . . . . . . . . . . . . . . . . . . . . . . . . 184 Der Start von ASSESSOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Das Format des Quellcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Ausdrücke und Adressierungsarten . . . . . . . . . . . . . . . . . . . . .. 187 Der Kommando-Modus. . . . . . . . . . . . . . . . . . . . . . . . . . . .. 190 Der Editier-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 198 Die Pseudo-Opcodes von ASSESSOR. . . . . . . . . . . . . . . . . . . . 199 Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 206 Besondere Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Interna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 208 Speicherbelegung unter ASSESSOR. . . . . . . . . . . . . . . . . . . . . 209 Hilfsprogramme für ASSESSOR . . . . . . . . . . . . . . . . . . . . . . . 211 KOMMEX. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 211 ASSESSOR-Filer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 212 6. IDUS - Der Debugger und Simulator. . . . . . . . . . . . . . . . . . . .. 215 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Der Start von IDUS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Die Simulatorgraphik . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 217 Das Dialogfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 218 Der Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Spezielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 223 Speicherbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Inhalt 9 Anhang 1: HEX-DEZ Umwandlung. . . . .. . . . . . . . . . . . . . . . . . 225 Anhang2: ASCII-Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 226 Anhang3: Bildschirmdarstellung . . . . . . . . . . . . . . . . . . . . . . . . . 227 Anhang4: 6502/65C02-Befehlstabelle . . . . . . . . . . . . . . . . . . . . .. 229 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230