★ APPLICATIONS ★ PROGRAMMATION ★ CPC-Assembler v2.0 ★ |
CPC-Assembler v2 (CPC Amstrad International) | Applications Programmation |
Allen Lesern unserer Serie “Also sprach die Maschine“ möchten wir dieses Programm besonders empfehlen: Auch wer sich bislang noch nicht mit Maschinensprache beschäftigt hat, findet hier ein komfortables Werkzeug, mit dem er seine ersten Schritte unternehmen kann, ohne die gewohnte BASIC-Umgebung zu verlassen. In den nächsten Folgen unserer Serie wird der Umgang mit dem Assembler noch genau erklärt werden; die folgende Programmbeschreibung richtet sich vor allem an Leser, die bereits über etwas Erfahrung verfügen. Im wesentlichen handelt es sich bei dem Programm um eine vollkommen neu gestaltete Version des bereits vor zwei Jahren veröffentlichten CPC-Assemblers; der besondere Dank des Autors gilt allen Lesern, die durch zahlreiche Anregungen und Verbesserungsvorschläge zur Version 2.0 beigetragen haben. Hier nun der Leistungsumfang des Assemblers, mitsamt den neuen Features:
Weiterhin wurden noch einige kleinere 'Unpäßlichkeiten' beseitigt: Auch der Befehl LD SP,nn wird jetzt korrekt übersetzt, und mit der DM-Anweisung können bis zu 80 Zeichen übergeben werden. Hinweise zum Abtippen Alle REM-Kommentare können entfallen, da die Zeilen keine Sprungziele darstellen. Zu beachten ist insbesondere der umgekehrte Schrägstrich (Ganz- Das Quellprogramm Eine Quellprogrammzeile setzt sich aus folgenden Elementen zusammen:
Die Zeilennummem und speziell der REM-Apostroph sind nur zwingend notwendig, wenn der Sourcecode direkt im Speicher übersetzt werden soll. Ihm steht in diesem Fall der BASIC-Zeilennummernbereich 1 - 9999 zur Verfügung, der Assembler selbst muß ab Zeile 10000 beginnen. Diese Methode ist insbesondere bei kurzen und mittleren Maschinenprogrammen günstig, da der Quelltext mit MERGE zum Assembler dazugeladen und mit dem BASIC-Editor direkt bearbeitet werden kann. Wird von Diskette bzw. Kassette as-sembliert, so muß der Quellcode als ASCII-Datei vorliegen, kann also mit einem beliebigen Editor geschrieben werden. Wenn die Zeilen nicht numeriert sind, ergänzt der Assembler von sich aus im Listing eine fortlaufende Numerierung. Falls Zeilennummern angegeben werden, so müssen sie am Anfang der Zeile stehen (keine führenden Blanks!). Label als symbolische Konstanten oder Sprungziele beginnen mit einem Buchstaben und sind maximal 6 Zeichen lang. Groß- und Kleinschreibung wird nicht unterschieden. Label, Befehl und Operand müssen durch mindestens ein Leerzeichen getrennt sein; der Operand selbst darf jedoch keine Blanks enthalten, außer als ASCII Zeichen zwischen Anführungsstrichen. Im Operanden können Werte in der CPC-spezifischen Weise als binäre, hexadezimale oder dezimale Zahl angegeben werden; weiterhin sind Labels und ASCII Zeichen in Anführungsstri- Die Quellcode-Zeilen können weiterhin mit einem Kommentar versehen werden, der durch ein Semikolon abgetrennt wird. Die Assemblerdirektiven
Anmrerkung: Anstatt der Befehle DB, DW, DM und DS können auch die bei manchen Assemblern üblichen Anweisungen DEFB, DEFW, DEFM und DEFS benutzt werden. Der Programmablauf Nach dem Start des Assemblers mit RUN wird zunächst nach dem Namen des zu übersetzenden Programms gefragt. Wenn Sie hier nur ENTER bzw. RETURN drücken, erscheint der Diskettenkatalog auf dem Bildschirm. Falls sich das Quellprogramm im Speicher befindet (das heißt eine Zeilennummer kleiner 10000 existiert), so wird dieses übersetzt, ansonsten liest der Assembler die Programmzeilen aus der Disketten- bzw. Kassettendatei mit dem angegeben Namen. Durch eine weitere Abfrage wird entschieden, ob das bei der Assemblierung erstellte Listing auf dem Bildschirm oder Drucker ausgegeben werden soll. Das Maschinenprogramm steht nach einem Durchgang ('Pass') komplett im Speicher. Der Assembler kann jedoch bei Vorwärtssprüngen den Code im Listing noch nicht vollständig angeben; diese Zeilen werden mit einem Stern markiert und weiterhin provisorisch Nullbytes eingesetzt. Falls ein vollständiges Listing des Objektcodes gewünscht wird, so kann ein zweiter Durchgang gestartet werden. Ansonsten besteht die Möglichkeit, den Quellcode als ASCII-Datei zu sichern (nur, falls er sich im Speicher befindet) oder den Maschinencode als AMSDOS-Binärdatei, COM-File oder BASIC-Lader zu speichern; der Assembler übernimmt dabei die Generierung der DATA-Zeilen. Die Dateien werden bei der Aufzeichnung automatisch mit den Endungen .ASM, .BIN, .COM oder .BLD versehen. Die Speicherverwaltung Der Assembler setzt HIMEM auf &7FFE,der Bereich darüber wird als fester I/O-Puffer für Lade- und Speicheroperationen eingerichtet und bei folgenden Gelegenheiten benutzt:
Damit steht der Bereich ab &9000 für den Maschinencode zur Verfügung. HIMEM kann jedoch bei Bedarf durch Änderung des Variablen wertes HiBas in Zeile 10080 noch weiter herabgesetzt werden. Weiterhin belegt der Assembler mit einer kleinen Maschinenroutine etwa 80 Bytes im unbenutzten Datenbereich der Tonhüllkurven (ab &B70A beim CPC 464 bzw. ab &B3A6 beim 664/6128). Auch das läßt sich ändern, indem der Variablen cadr in Zeile 10100 ein anderer Wert zugewiesen wird. Abschließend noch ein Hinweis für die Freunde der Spieleprogrammierung in Assembler: Bei den Listings aus dieser Serie sollten die Doppelpunkte nach den Labels durch Leerzeichen ersetzt werden; weiterhin müssen Hexzahlen auf CPC-übliche Weise gekennzeichnet werden, damit der Assembler das Programm übersetzen kann.
|