Alles in Einem! Der Makro-Assembler von KUMA

Assembler ist ein Begriff, der leicht Schrecken erweckt und das nicht ohne Grund, denn die Beherrschung von Assembler gehört zu der höheren Schule der Programmierung.

Warum in Assembler programmieren? Die Frage ist insofern berechtigt, daß es auch andere Sprachen gibt, wie z. B. C oder FORTH, die „fast" so schnell wie Assembler Programme sind. Es existieren aber Bereiche, wie bei der Graphikherstellung, gewählten Problemen bei der Verarbeitung von großen Mengen an Daten, in der Messungs- und Steuerungstechnik usw., in denen der Schnelligkeitsfaktor eine große Rolle spielt. Eingriffe, Änderungen und Erweiterungen im Betriebssystem sind in der Regel nur in Assembler durchführbar.

Erfahrungsgemäß wird jeder intensive Programmierer sich irgendwann mit dem Maschinen-Code seines Rechners beschäftigen. Für jene ist ein Assembler ein unentbehrliches Werkzeug.

KUMA bietet für alle ST-Besitzer ein Assembler-Paket, welches sehr kompakt aufgebaut ist.

Der Editor und das Editieren

Um ein Programm herzustellen, braucht man einen Text-Editor, mit dem das Programm wie ein normaler Text geschrieben wird. In der Regel ist ein Editor einem Textverarbeitungsprogramm sehr ähnlich, wobei die Unterschiede nur in dem Komfort des letzteren liegen.

Normalerweise gehört zu einem Assembler-Paket ein Editor, sowie andere Hilfsprogramme, die nach Bedarf einzeln nachgeladen und ausgeführt werden. Bei KUMA ist das anders, Editor, Assembler, sowie Debugger werden im Rechner einmal geladen und bleiben erhalten.

Der Editor des KUMA Assembler-Pakets ist ein sogenannter Zeilen-Editor, und damit gehört er zur Prähistorie der Editierung. Nach Eingabe von „I" wird automatisch eine Zeilen-Nummer generiert, die nicht beliebig zu ändern ist. Dann stehen auf dieser Zeile beide Cursorbewegungen, nach links und rechts, zur Verfügung. Die Delete-Taste, sowie Backspace, dienen zum Löschen eines Zeichens in Bezug auf die Cursor-Position. Jede Zeile wird durch RETURN abgeschlossen und übernommen. Gleichzeitig besteht aber auch noch die Möglichkeit mit „Control P" anstatt des RETURN alle Ausgaben des Assemblers nicht auf den Bildschirm, sondern auf einen Drucker auszugeben.

Möglichkeiten den Cursor nach oben oder unten frei zu bewegen, existieren nicht, genausowenig wie das Einrücken von Textblöcken. Das Reeditieren läuft unter großem Aufwand ab: Durch den Befehl TARGET-Zeilennummer wird der Cursor auf die gewünschte Zeile verlagert; danach kann man mit EDIT-Zeilennummer die Zeilen verbessern oder verändern.

Man muß zugeben, daß ein solcher Editor für längere Programme nicht geeignet ist, bei kürzeren Programmen ist man allerdings dankbar, daß das Nachladen von Editor-Assembler, Linker usw. entfällt. Wenn man sich bessere Editierungsmöglichkeiten wünscht, kann man sich durch das Anwenden eines besseren Editors (z. B. der von METACOMCO) oder durch ein normales Textverarbeitungssystem (z. B. SM-Text) helfen.

Der Assembler

Der Assembler von KUMA läßt kaum Wünsche offen. Er erkennt alle Standard-Motorola-Mnemoniks des 68000er Prozessors. Damit können Programme, die für den Prozessor mit einem anderen Assembler geschrieben worden sind, und soweit sie nicht systemabhängig sind, ohne weiteres übernommen werden. Das Eingabeformat ist nicht festgelegt und dem Programmierer freigestellt. Das bedeutet, daß nicht überall mit Blanks angeordnet werden soll, das verrichtet der Assembler selbst.

Eine Eingabe kann so aussehen:

MOVE. B # 147, D2
oder
EIN: MOVE.L #$OA, DO

Die einzige Einschränkung besteht nur darin, daß eine Eingabe einen Assembler-Sinn -haben muß, so, wie die obigen Beispiele. Die nächste Notation wäre ein unsinniger Text:

MOVE. W (AI)

Diese Eingabe wird von dem Editor übernommen, aber für den Assembler fehlt ein Operand und er weiß nicht, was er mit ihm anfangen kann, so daß eine Fehlermeldung resultiert.

Der Assembler akzeptiert und verarbeitet Labels beliebiger Länge, die eine Mischung von Buchstaben und Zahlen sein können, wobei die einzige Einschränkung darin besteht, daß das erste Zeichen immer ein Buchstabe sein muß. Die Labels werden von einem Assembler-Befehl durch Doppelpunkt (:) getrennt.

Nach einem Operanden-Feld kann man beliebige Kommentare hinzufügen. Diese werden von dem Operanden-Feld durch ein Semikolon (;) getrennt. Numerische Ausdrücke sowie mathematische und logische Operationen stehen zur Verfügung.

Eine Reihe von Pseudo-Operatoren kommen dem Programmierer zu Hilfe. Sie dienen in den meisten Fällen zur Steuerung des Assembler-Listings, sowie zur einfachen Generierung von Tabellen.

z. B. folgende Pseudo-Operatoren:

Tabelle = $ 7FD00
oder
DC.L $ 70000,....

Außer der bedingten Assemblierung verfügt der KUMA Assembler über eine sogenannte direkte Assemblierung. Nach Eingabe von „A" (für Assembler), gefolgt von einer Adresse beginnt der Assembler direkt zu interpretieren sowie auszuführen. Dabei sind Kommentare wie- Labels nicht mehr möglich. Bei der bedingten Assemblierung stehen verschiedene Optionen zur Wahl: Durch Option „O" werden Verzweigungen optimiert. Das Auswählen von „L" veranlaßt den Linker einen verknüpfbaren Code zu erzeugen. Bei „E" oder „P" wird ein formatiertes Listing aus dem Drucker geschickt. Eine Auflistung auf dem Bildschirm findet durch die Option „V" statt. Dabei können auch mehrere Optionen miteinander vermischt werden.

Der Linker

Normalerweise generiert ein Assembler einen verknüpfbaren Code, der später durch ein Hilfs-Programm, dem sogenannten Linker, in einen ausführbaren Code umgewandelt wird. Bei dem KUMA Assembler ist dies etwas anders. Der Assembler erzeugt ein Programm, das sofort ausführbar ist. Der Linker seinerseits, erzeugt .ein Programm, das zum Teil optimiert worden und deswegen schnell ist. Bei kurzen Programmen kann man auf den Linker ganz verzichten.

Die „L" Option in Assembler-Modus erzeugt ein „gelinktes,, Programm. Dabei ist zu beachten, daß der Linker nur mit absoluten, nicht verschiebbaren Werten arbeitet.

Der Debugger

Bei der Programmierung von höheren Sprachen unterlaufen häufig Fehler, die nur nach einer langen Suchaktion zu finden sind. Bei der Assembler-Programmierung ist das auch nicht anders, nur daß hier das Auffinden eines Fehlers um einiges problematischer ist als in BASIC. Hier schafft nur ein Debugger Abhilfe. Das Assembler-Paket, das uns heute beschäftigt, besitzt ein durchaus komfortables „Fehlersuchprogramm".

Alle existierenden Register des 68000er Prozessors werden durch die Option „X" angezeigt. Mit „X", plus der Angabe eines bestimmten Registers wird dessen Inhalt angezeigt und dessen Veränderung ermöglicht. Suchfunktionen, sowie Einzelschrittabläufe eines Programms sind auch möglich. Ganze Speicherbereiche können entweder gefüllt oder kopiert werden. Multiabbruchpunkte kann man beliebig setzen um den Ablauf eines Programms zu beobachten.

Assembler mit MAKRO-Verarbeitung

Der KUMA-Assembler bietet die Möglichkeit der Erstellung von MAKROS, die ohne Zweifel dem Programmierer, sowie der Lösbarkeit eines Programms, zu Hilfe kommen. Ein MAKRO bildet eine bestimmte Befehlssequenz, die fortwährend wiederholt wird, und nicht eine Verzweigung im Programm, wie es der Fall bei einem Unterprogramm wäre. Deswegen wird ein Programm, das MAKROS verwendet, immer länger, aber in der Regel schneller.

Ein MAKRO wird durch eine Kopfzeile charakterisiert, wo immer ein Name oder ein Symbol erscheint. Der Name wird durch Doppelpunkt von dem Befehl MAKRO getrennt. Später kann dieser mit verschiedenen Lokalparametern versehen werden. Eine MAKRO-Definition wird durch den Befhl ENDM beendet.

Die Dokumentation

Das mitgelieferte Handbuch umfaßt 30 Seiten, in denen die verschiedenen Befehle, sowie Fehlermeldungen sehr mager erklärt sind. Dieses Handbuch ist keine Hilfe (muß auch nicht sein) für einen Anfänger, der sich mit der Befehlsübersicht des 68000er Prozessors nicht auskennt. Hier muß man sich ein spezielles Buch über die Technik der Programmierung dieses Prozessors besorgen, wie es auch von KUMA empfohlen wird. Zwei Beispiele sollen den Umgang mit dem Assembler verdeutlichen.

Das ist für den erfahrenen Programmierer ausreichen. Für diejenigen, die noch nicht erfahren genug sind, wären ein paar Beispiele mehr angebrachter, aber das würde den Rahmen dieses Tests sprengen.
Was uns an dem KUMA Assembler gefällt, ist, daß es sich um einen kompakten Einpaß-Assembler handelt, mit angenehmen Möglichkeiten zur Fehlersuche, sowie der Herstellung von MAKROS. Der schwache Punkt wäre der einfache Zeilen-Editor. Aber wo bekommt man alles auf einmal und dazu noch perfekt.



Aus: ST-Computer 02 / 1986, Seite 8

Links

Copyright-Bestimmungen: siehe Über diese Seite