Das Maschinensprache Buch zum Commodore 64
Das Maschinensprache Buch zum Commodore 64 | |||
---|---|---|---|
Sprache | deutsch | ||
Autor(en) | Lothar Englisch | ||
Verlag | Data Becker | ||
Jahr | 1984 | ||
ISBN | ISBN 3-89011-008-8 | ||
Neupreis | DM 39.- | ||
Datenträger | |||
Seitenzahl | 202 | ||
letzte Auflage | 3. Auflage (1985) | ||
Genre | Einsteiger, Programmieren, Assembler | ||
Information |
Vorwort[Bearbeiten | Quelltext bearbeiten]
Mit der Programmierung in Maschinensprache und Assembler ist das so eine Sache. Jeder würde es gern können (Maschinensprache ist extrem schnell und vielseitig), viele versuchen es (ein Versuch kann ja nicht schaden), die meisten davon geben schnell wieder auf (war wohl doch zu kompliziert) und nur wenige schaffen es wirklich (die sind dann zu beneiden).
Mit dem vorliegenden Buch wollen wir möglichst vielen Commodore 64 Anwendern den Weg in die Maschinensprache ermöglichen. Als Autor konnten wir hierfür Lothar Englisch gewinnen. Er hat bisher nicht nur an vielen unserer Bücher mitgewirkt, sondern gilt auch als ausgefuchster Kenner des Commodore Betriebssystems und der Programmierung aller Commodore Rechner in Maschinensprache und Assembler.
So stammen z.B. die beiden beliebten und sehr leistungsfähigen Programmpakete ProfiMon und ProfiAss aus seiner Feder.
Der Unterzeichner dieses Vorworts hat sich früher selbst häufig vergeblich an der Maschinensprache versucht und dabei in der Regel auch schnell frustriert aufgegegben. Geholfen hat mir schließlich das Manuskript dieses Buches und, das möchte ich nicht unerwähnt lassen, natürlich auch etwas mehr Geduld und Durchhaltevermögen.
Bei schwierigen Dingen muss man halt etwas stärker ran, aber - und das werden Sie nach erfolgreichem Durcharbeiten dieses Buches sicher bestätigen - es lohnt sich bestimmt.
Viel Spaß bei der Lektüre dieses Buches und viel Erfolg bei Ihren eigenen Maschinenspracheprogrammen.
Dr. Achim Becker
Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]
1. Einführung ............................................ 5 2. Der 6510-Mikroprozessor ............................... 10 3. Befehle und Adressierungsarten des 6510 ............... 18 3.1 Ladebefehle ........................................... 18 3.2 Speicherbefehle ....................................... 25 3.3 Transferbefehle ....................................... 26 3.4 Arithmetische Befehle ................................. 28 3.5 Logische Befehle ...................................... 33 3.6 Vergleichsbefehle ..................................... 38 3.7 Bedingte Verzweigungsbefehle .......................... 41 3.8 Sprungbefehle ......................................... 45 3.9 Zählbefehle ........................................... 46 3.10 Befehle zur Beeinflussung der Flags .................. 48 3.11 Verschiebebefehle ..................................... 50 3.12 Unterprogrammbefehle .................................. 53 3.13 Stackbefehle .......................................... 56 3.14 Befehle zur Interruptbehandlung ....................... 57 4. Die Eingabe von Maschinenprogrammen ................... 59 5. Der Assembler ......................................... 67 6. Der Einzelschrittsimulator für den 6510 ............... 94 7. Maschinenprogramme auf dem Commodore 64 ............... 118 8. Benutzung von Betriebsystemroutinen ................... 149 9. BASIC-Ladeprogramme ................................... 166 10. 6510 Disassembler für den Commodore 64 ................ 168 11. Prof. Hilfsmittel zur Erstellung von Maschinenprog. ... 174 12. Umrechnungs- und Befehlstabellen ...................... 192
Leseprobe[Bearbeiten | Quelltext bearbeiten]
1.Auflage: Seite 57, Kapitel 3.14 - Befehle zur Interruptbehandlung
Diese Befehle werden von uns vorerst nicht benutzt und sind nur der Vollständigkeit halber erwähnt. Der 6510 hat die Möglichkeit, ein Programm von außen zu unterbrechen. Dazu muss die sogenannte Interruptleitung (IRQ, Interrupt request) des Prozessors aktiviert werden. Bei einem Interrupt passiert etwas ähnliches wie bei einem Unterprogrammaufruf. Der Prozessor unterbricht die Arbeit an seinem laufenden Programm und legt den Inhalt des Programmzählers auf den Stack. Zusätzlich wird noch der Inhalt des Statusregister auf den Stack gelegt, da die Unterbrechung ja an jeder beliebigen Stelle erfolgen kann. Jetzt wird an die Stelle verzweigt, auf die die Adressen $FFFE und $FFFF zeigen. Der Inhalt dieser Adressen wird als neuer Programmzähler verwendet.
Anstelle einer Unterbrechnung von außen gibt es beim 6510 noch die Möglichkeit, durch einen Befehl einen Interrupt per Programm auszulösen. Dazu dient der Befehl BRK ('break'). Dabei werden wie beim Interrupt Programmzähler und Statusregister auf den Stack gerettet.
Um aus einem Unterbrechungsprogramm wieder in das unterbrochene Programm zurückzukehren, gibt es einen Befehl ähnlich dem RTS-Befehl bei einem Unterprogramm. Der Befehl RTI ('return from interrupt') holt zusätzlich zum Programmzähler noch den Inhalt des Statusregisters vom Stack, so dass das Programm ohne Veränderung der Flags seine Arbeit fortführen kann.
Sonstiges[Bearbeiten | Quelltext bearbeiten]
Der Name der 3. Auflage lautet "Das Maschinensprache Buch zum C64 & C128".
Eine englische Übersetzung des Buchs ist unter dem Titel "The Machine Language Book of the Commodore 64" bei Abacus Software erschienen.
Der Quelltext der im Buch abgedruckten Programme (Assembler, Disassembler, Einzelschritt-Simulator sowie ein Tool, das die Umwandlung von BASIC-Zeilen in Tokens unterdrückt) findet sich im ZIP-Archiv Datei:Das Maschinensprache Buch zum Commodore 64 Quellcode.zip.
Meinung[Bearbeiten | Quelltext bearbeiten]
Werner: "Um wirklich Assembler zu Erlernen, geht dieses Buch meiner Meinung nach zu wenig ins Detail."
Stephan64: "Anders als der Titel vermuten lässt, lehrt das Buch nicht Maschinensprache, sondern Assembler - und das zu einer Zeit, als sämtliche Computerzeitschriften sich mit Maschinensprache-Routinen in Form von DATA-Zeilen gegenseitig überboten. Und anstatt gleich am Anfang mit einem kleinen, lauffähigen Maschinensprache-Programm Appetit auf mehr zu machen, findet sich das erste (unvollständige) Beispiel erst auf Seite 61. Dazu im Anhang noch eine fehlerhafte Tabelle der "Adressierungsarten und Befehlscodes" (die Opcodes von "DEC ABX" und "INC ABX" sind falsch)... das Buch ist einfach nur schlecht, war aber bei seinem Erscheinen mangels besserer Alternativen leider unersetzlich."