ATARI ST Programmieren in Maschinensprache Christian Nieber SYBEX DÜSSELDORF • SAN FRANCISCO • PARIS • LONDON Inhaltsverzeichnis Vorwort 9 Kapitel 1: Was ist Maschinensprache? Der Aufbau eines Computers Wie sage ich's meinem Computer Und was kommt nach dem Assembler? Was tut ein Linker? 13 13 17 19 22 Kapitel 2: Einführung in Maschinensprache Der innere Aufbau des MC68000 Erste Schritte Die Addition in Maschinensprache und das Userbyte Die Subtraktion in Maschinensprache Die Multiplikation Die Division SHIFT und ROTATE SHIFT-Befehle ROTATE-Befehle Logische Operationen Der AND-Befehl DerOR-Befehl Der EOR-Befehl Der NOT-Befehl Bedingte Verzweigungen Flags als Verzweigungsbedingung Verzweigungen nach CMP Sonstige Verzweigungen Die DBcc-Befehle Adreßberechnung bei Verzweigungsbefehlen Die Adressierungsarten des MC68000 Register-direkte Adressierung Konstanten-Adressierung Absolute Adressierung Indirekte Adressierung des Speichers Implizite Adressierung eines Registers Programmzähler-relative Adressierung 25 25 29 32 37 38 43 45 45 51 52 53 54 55 56 57 59 59 62 62 65 66 67 67 68 68 72 72 ATARI ST - Programmieren in Maschinensprache Stackorganisation und Programmsprünge DerStack Unterprogramme Parameterübergabe zu Unterprogrammen Kontrollstrukturen in Assembler IF-THEN-ELSE Realisierung von Schleifen Organisation von ATARI ST-Programmen Grundlagen der Bedienung eines Assemblers Befehle Assembler-Direktiven Das erste lauffähige Programm Die Benutzung einer RAM-Disk Makros Die Benutzung eines Debuggers Besonderheiten des Prozessors MC68000 Der Supervisormodus Das Systembyte .' Kapitel 3: Die Befehle des MC68000 in systematischer Reihenfolge Ein-Operand-Befehle Schieben und Rotieren Arithmetische und logische Ein-Operand-Befehle EXTundSWAP Zwei-Operand-Befehle Die MOVE-Befehle Arithmetische Befehle Logische Befehle Bit-Befehle Bedingte Befehle Sprungbefehle Sonstige Befehle 74 74 76 78 81 81 82 84 90 91 95 101 111 112 118 123 123 124 129 131 : 132 142 150 153 153 165 189 196 201 206 214 Kapitel 4: Zusammenarbeit mit dem Betriebssystem DasGEMDOS DasBIOS DasXBIOS Die GEM-Aufrufe AES-Aufrufe Das VDI (Virtual Device Interface) Die LINE-A-Routinen 227 228 241 245 254 255 257 261 Kapitel 5: Einige nützliche Routinen Ausgabe von Zeichenketten 269 269 Inhaltsverzeichnis Eingabe von Zeichenketten Ausgabe von hexadezimalen Zahlen Eingabe von hexadezimalen Zahlen Ausgabe von Dezimalzahlen Eingabe von Dezimalzahlen Die Langwortdivision 272 277 278 280 284 286 Kapitel 6: Maschinennahe Programmierung Setzen eines Punktes in hoher Auflösung Setzen eines Punktes in niedriger Auflösung Linien ziehen in hoher und niedriger Auflösung Programmierung von Interrupts Klangerzeugung durch direkte Amplitudensteuerung EineRAM-Disk 289 289 292 296 308 319 325 Kapitel 7: Tips und Tricks für schnellere Programme Optimierungen auf Befehlsebene Allgemeine Optimierungen Optimierung von MO VE-Befehlen Optimierung von arithmetischen Befehlen Optimierung von Verzweigungsbefehlen Selbstmodifizierender Code Optimierung auf der Realisierungsebene Optimierung auf der Algorithmenebene 333 334 335 336 338 341 342 344 350 Anhang A: Zahlendarstellung in Maschinensprache 355 Anhang B: Unterschiede verschiedener Assembler 365 Anhang C: Tips für Umsteiger 373 Anhang D: Tips zum Einbinden von Assembler in andere Programmiersprachen 375 Anhang E: Tips zur Fehlersuche 395 Anhang F: Befehlstabelle Adressierungsarten und Ausführungszeiten 399 Anhang G: Glossar 409 Stichwortverzeichnis 419