You are currently viewing JASm Coding – Sprachkonstrukte

JASm Coding – Sprachkonstrukte

JASm Coding Syntax

Bezogen auf die JASm Core Syntax ergibt sich damit eine abwärtskompatible Änderung:

<Whitespaces> {<Address> <Whitespaces>} <Mnemonic> [<Whitespace> {<Address> <Whitespaces>} <Value> [<Whitespace> {<Address> <Whitespaces>} <Value>]] <Rest>

wobei

  • <Value>
    ist eine beliebige Anzahl an Zeichen die nicht in <Whitespaces> enthalten sind, vorzugsweise numerische Werte, eine mit @ eingeleitete alphanumerische Folge oder ein in Anführungszeichen (“) gesetzter String
  • <Address>
    ist eine positiven Anzahl an alphanumerischen Zeichen gefolgt von einem Doppelpunkt

Zudem wird die JASm Core Syntax um folgende Optionen erweitert.

<Whitespaces> [<Address> <Whitespaces>] [<DataMnemonic>] {<Whitespace> {<Address> <Whitespaces>} <Value>} <Rest>

wie oben und mit

  • <DataMnemonic>
    ist eins aus D, DA, DAT oder DATA, wobei zwischen Groß- und Kleinbuchstaben nicht unterschieden wird

Oder

<RemarkMnemonic> <Anything>

mit

  • <RemarkMnemonic>
    ist eins aus R, REM, #, // oder ;, wobei zwischen Groß- und Kleinbuchstaben nicht unterschieden wird
  • <Anything>
    ist eine beliebige Sequenz aus Zeichen (außer Zeilen- und Dateienden). Die Sequenz endet mit einem Zeilen- oder Dateiende.

Oder

<Whitespaces> [<Address> <Whitespaces>] [<IncludeMnemonic>] {<Whitespace> {<Name> <Whitespaces>} <Value>} <Rest>

wie oben und mit

  • <IncludeMnemonic>
    ist eins aus I, IN, INC oder INCLUDE, wobei zwischen Groß- und Kleinbuchstaben nicht unterschieden wird
  • <Name>
    ist eine beliebige, nichtleere Sequenz von Buchstaben, Ziffern und Unterstrichen

Leerzeilen, bzw. Zeilen, die ausschließlich <Whitespaces> beinhalten werden generell ignoriert.

Es ist nicht zwingend erforderlich, dass die Parameter für den Befehl in der selben Zeile geführt werden. Auf diese Weise können den Parametern ebenfalls Adresslabels zugewiesen werden.

So kann

SUB 10 2

auch als

SUB 10
2

oder auch als

SUB
10
2

auf zwei oder drei Zeilen aufgeteilt implementiert werden.

Ebenso können nachfolgende Zellwerte auch in einer Folge fortgeschrieben werden:

SUB 47 11 0 47 12

Dies ist aber im Allgemeinen zu vermeiden um Programmierfehlern vorzubeugen und die Lesbarkeit beizubehalten.

Besonders in diesem Beispiel ist zu beachten, dass nach Abarbeitung des SUB Befehls das Programm in der nächsten Zelle (mit Inhalt 0) fortgeführt wird. Im obigen Beispiel wurde mit der Sequenz 0 47 12 eine gültige Anweisung platziert, da die 0 den Befehl SUB darstellt und die Anweisung der folgenden entspricht:

SUB 47 11
SUB 47 12

Notation

JASm unterscheidet keine Groß- und Kleinschreibung bei den Mnemonics, wohl aber in den Adressbezeichnern. Dennoch wird empfohlen, die Mnemonics ausschließlich in Großbuchstaben zu halten, Adressen für Variablen in Kleinbuchstaben. Adressen im Quellcode, die für Sprünge vorgesehen sind, sollten mit einem Großbuchstaben beginnen.

Eine Ausnahme bilden “lokale” Variablenbezeichner, die für Prozeduren verwendet werden. Hier bietet es sich an, den Prozedurnamen (= Sprungadresse) gefolgt von einem Unterstrich und dann dem Variablenbezeichner (z. B. ADD_a) zu verwenden. Auf diese Weise kann die Adresse einer Funktion zugeordnet werden. [Wie Prozeduren funktionieren können, wird im nächsten Beitrag dargestellt.]

Zudem sollte die Rücksprungadresse mit _return, ein mögliches Ergebnis mit _result und ein möglicher Fehlercode mit _error an dem Funktionsnamen gekennzeichnet werden, also z. B. ADD_return, ADD_result und ADD_error.

Optisch kann der Quellcode dahingehend aufbereitet werden, dass der Code in Spalten untereinander gehalten wird. Die erste Spalte ist für Adressmarker vorgesehen, in der zweiten Spalte befinden sich die Mnemonics, anschließend ein bis zwei Daten, ggf. mit Adressmarkerdefinition. In der letzten Spalte sind Kommentare organisiert.

Eine Ausnahme bilden REM Kommentare, die umgeben von je mindestens einer Leerzeile am Anfang einer Zeile stehen.

REM Musterquellcode für JASm Formatierung

                @Start          # Programmzeiger initialisieren
Step:           -3              # Schrittweite des Programmzeigers festlegen
a:              10 
b:              -5 
Start:          SUB @a @b       # Erste Codezeile im Programm
                SUB -1 @a 
                SUB 0 0         # Programmende

Und weiter?

Durch diese Elemente ist JASm deutlich leichter handhabbar geworden. Insbesondere die textuelle Adressierung von Speicherzellen ist eine erhebliche Erleichterung. Im nächsten Beitrag zu JASm werden nun einige konkrete Codebeispiele geliefert, die kleinere Aufgabenstellungen wie Addition, Multiplikation und Textausgaben präsentieren. Die Beispiele werden dabei zur besseren Verständlichkeit in der hier dargestellten Codierung, also mit Kommentaren und sprechenden Adressen dargestellt.

Inhalt

Schreibe einen Kommentar

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.