previous
next
Ein Programm Assemblieren
contents
Befehle des Assemblers


Unterabschnitte


Aufbau der Assembler-Befehle

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.

Sprungmarken

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.

Befehle

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] ... ]

Datentypen

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



Arithmetische Ausdrücke

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>



Bezeichner

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.

Kommentare

Ein Kommentar beginnt mit einem Semikolon und endet am Ende der Zeile. Innerhalb des Kommentars sind beliebige Zeichen erlaubt, man kann also Programmzeilen auskommentieren.


Ein Programm Assemblieren
contents
Befehle des Assemblers
previous
next
Andreas Hofmeister
1998-12-05