Jede Anweisung eines Assembler-Programms besteht aus einer Sprungmarke, einem Assembler-Befehl mit seinen Argumenten und aus einem Kommentar, wobei jeder dieser Teile auch weggelassen werden kann.. Ein Anweisung endet immer am Ende der Zeile.
Eine Sprungmarke, auch ``Label'' genannt, ist so etwas ähnliches wie eine Variable, man kann sie als Argument für einen Befehl verwenden, insbesondere als Ziel bei einem Sprungbefehl.
Eine Sprungmarke besteht aus einem Bezeichner gefolgt von einem Doppelpunkt, wobei zwischen dem Bezeichner und dem Doppelpunkt beliebig viele Leerzeichen stehen dürfen. Dem Bezeichner wird als Wert die Adresse, an der der folgende Befehl beginnt, zugewiesen.
Für manche Befehle (etwa der JUMP-Befehl der RETII-CPU) haben Sprungmarken eine besondere Bedeutung, eine Sprungmarke wird dazu vom Assembler besonders gekennzeichnet. Wird eine Sprungmarke in einem Ausdruck verwendet, dann wird das Ergebnis ebenfalls wie eine Sprungmarke behandelt.
Ein Befehl besteht aus einem Bezeichner (dem Namen des Befehls) und den Argumenten des Befehls. Welche Befehle vorhanden sind, wird im wesentlichen von der CPU bestimmt die in der Animation verwendet wird, es gibt jedoch auch Befehle die vom Assembler definiert werden und damit für alle CPUs vorhanden sind. Einem Assembler-Befehl kann eine Liste von Argumenten folgen, deren einzelne Elemente durch Kommata getrennt sind. Anzahl und Typ der Argumente ist vom Befehl abhängig. Die Allgemeine Form eines Befehls ist also
Befehl [Argument1 [ , Argument2] ... ]
Der Assembler unterscheidet zwischen folgenden Datentypen
Typ | Schreibweise | Bemerkung |
Integer (Ganzzahl) | [1-9]* | Angabe als Dezimalzahl |
0x[1-9,A-F,a-f]* | Angabe als Hexadezimalzahl, C-Notation | |
[1-9,A-F,a-f]*h | Angabe als Hexadezimalzahl, Postfix-Notation | |
[1-9,A-F,a-f]*o | Angabe als Oktalzahl (zur Basis 8), Postfix-Notation | |
[0,1]*b | Angabe als Binär-Zahl, Postfix-Notation | |
Zeichenkette | ``[.]*'' | |
Bezeichner | [A-Z,a-z][0-9,A-Z,a-z_]* | |
Register | Sind Bezeichner und werden von der CPU bestimmt. | |
Bedingungen | Sind ebenfalls Bezeichner, die von der CPU bestimmt werden |
Anstelle einer Integer-Zahl kann auch ein arithmetischer Ausdruck stehen. Der Ausdruck wird beim Übersetzen des Programms ausgewertet. Allen Bezeichnern (mit Ausnahme der Sprungmarken) in einem Ausdruck muß vorher eine Integer-Zahl als Wert zugewiesen werden.
In einem Ausdruck stehen folgende Operatoren zur Verfügung :
Operator | Bedeutung |
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Integer-Division |
% | Modulo |
#453#> | |
| | Bitweises Oder |
^ | Bitweises Exklusiv-Oder |
Unärer Operator | Bedeutung |
+ | 0 + Ausdruck |
- | 0 - Ausdruck |
! | Bitweise Negation |
Ein Ausdruck kann folgende Form haben
<Bezeichner> |
<Integer-Zahl> |
( <Ausdruck> ) |
<Unärer Operator> <Ausdruck> |
<Ausdruck> <Operator> <Ausdruck> |
Im allgemeinen muß einem Bezeichner ein Wert zugewiesen werden, bevor er verwendet wird. Eine Ausnahme bilden hier Sprungmarken, diese kann man auch verwenden bevor sie im Programm auftauchen.
Einige Bezeichner sind vordefiniert, etwa die Assembler Befehle oder die Bedingungen für Sprünge. Diese Bezeichner können nicht neu definiert werden oder in Sprungmarken verwendet werden.
Ein Kommentar beginnt mit einem Semikolon und endet am Ende der Zeile. Innerhalb des Kommentars sind beliebige Zeichen erlaubt, man kann also Programmzeilen auskommentieren.