Assembler

Im Emulator ist ein Assembler integriert, den Sie über den Texteditor aufrufen können, d.h., den Assembler-Quelltext öffnen, bearbeiten und assemblieren Sie im Texteditor. Alternativ kann der Assembler auch als eigenständiges Kommandozeilenprogramm aufgerufen werden (siehe Kommandozeile).

Die Beschreibung des Assemblers unterteilt sich in folgende Rubriken:

1. Assembler-Optionen

Mit den Assembler-Optionen beeinflussen Sie die Arbeitsweise des Assemblers, insbesondere hinsichtlich der unterstützten Mnemonik und Syntax sowie was mit dem erzeugten Programmcode geschehen soll. Die Assembler-Optionen stellen Sie in einem Fenster ein, dass beim erstmaligen Starten des Assemblers erscheint. Außerdem können Sie die Optionen jederzeit mit dem Menüpunkt Assemblieren mit... aufrufen und verändern.

In den Assembler-Optionen können Sie u.a. auch eine Datei angeben, in der der erzeugte Programmcode geschrieben wird. Das Format der Datei ergibt sich dabei aus der Dateiendung (*.tap ergibt eine KC-TAP-Datei).

Achtung! Bei KCC-, KCM- und KC-TAP-Dateien gibt es Unterschiede zwischen KC85/1, KC87 und Z9001 auf der einen sowie HC900 und KC85/2..5 auf der anderen Seite. Damit der Assembler das richtige Dateiformat erzeugt, orientiert er sich am gerade emulierten System. Emuliert JKCEMU gerade einen KC85/1, KC87 oder Z9001, wird in den Dateikopf der Dateityp COM eingetragen und bei KC-TAP-Dateien mit der Blocknummer 0 begonnen. In allen anderen Fällen wird kein Dateityp eingetragen. Außerdem beginnen dann KC-TAP-Dateien entsprechend den HC900- und KC85/2..5-Konventionen mit der Blocknummer 1.

Wenn Sie mehrere Assembler-Quelltexte im Texteditor geöffnet haben, werden die Assembler-Optionen für jeden Quelltext separat verwaltet.

2. Assembler-Ausgaben und Fehlermeldungen

Alle Assembler-Ausgaben, d.h. Meldungen über den Abarbeitungsfortschritt, Fehlermeldungen, Warnungen und, sofern in den Assembler-Optionen angegeben, die Ausgabe der Markentabelle erscheinen in einem separaten Fenster, dass mit jedem Start des Assembler geöffnet beziehungsweise auf dem Desktop nach vorn geholt wird. Auf Fehlermeldungen und Warnungen können sie doppelt klicken, um direkt zu der betreffenden Stelle im Quelltext zu gelangen.

3. Allgemeine Syntax

3.1. Groß- und Kleinschreibung

Der Assembler unterscheidet außer bei Zeichen- und Zeichenkettenliteralen nicht zwischen Groß- und Kleinschreibung, d.h., die Mnemonik der Befehle und die Register können sowohl groß als auch klein geschrieben werden. Bei den Marken gibt man in den Assembler-Optionen an, ob zwischen Groß- und Kleinschreibung unterschieden werden soll.

3.2. Aufbau einer Assembler-Quelltextzeile

Die allgemeine Syntax einer Quelltextzeile lautet:

[Marke[:]] [Mnemonik [Argument_1[,Argument_2[,...]]]] [;Kommentar]


In eckigen Klammern stehende Ausdrücke sind optional. Eine Marke muss am Anfang einer Zeile beginnen. Ein Assembler-Befehl (angegeben durch eine Mnemonik) darf nicht am Anfang einer Zeile beginnen, d.h., wenn die Zeile keine Marke enthält, muss vor der Mnemonik mindestens ein Leerzeichen oder ein Tabulator stehen. Eine Ausnahme bilden die Anweisungen für die bedingte Assemblierung. Diese können am Zeilenanfang stehen, aber auch eingerückt werden.

3.3. Marken

Marken haben einen numerischen Wert und werden definiert, indem sie am Anfang einer Assembler-Zeile stehen. Wenn diese Zeile den Pseudobefehl EQU enthält, bekommt die Marke den Wert des hinter EQU stehenden Ausdrucks, anderenfalls den Wert der aktuellen Adresse.

Marken können als Sprungziele oder in numerischen Ausdrücken verwendet werden.

Marken können Buchstaben, Ziffern, den Unterstrich, das @-Zeichen sowie Fragezeichen enthalten. Ziffern und das Fragezeichen sind aber nicht am Anfang der Marke erlaubt.

Achtung! Der Assembler legt zur Unterstützung der bedingten Assemblierung automatisch immer die Marke __JKCEMU__ mit dem Wert -1 (alle Bits gesetzt) an.

3.4. Assembler-Befehle

Die Assembler-Befehle werden in Form einer Mnemonik geschrieben. Der Assembler versteht folgende Befehle:

3.5. Kommentare

Kommentare beginnen mit einem Semikolon. Alles ab dem Semikolon bis zum Ende der Quelltextzeile wird als Kommentar gewertet und vom Assembler nicht ausgewertet. Dies gilt jedoch nicht, wenn das Semikolon in einen Zeichenliteral oder einem Zeichenkettenliteral steht. In dem Fall markiert das Semikolon keinen Kommentar.

4. Pseudobefehle

Der Assembler versteht folgende Pseudobefehle:
Mnemonik Anzahl der Argumente Typ der Argumente Beschreibung
BINCLUDE 1 Zeichenkette Einbinden einer Binärdatei,
Die angegebene Datei wird unverändert an der aktuellen Stelle in den erzeugten Programmcode eingefügt. Der Dateiname kann ohne oder mit Pfad angegeben werden, wobei sowohl ein absoluter als auch ein relativer Pfad erlaubt sind. Die Pfadaangabe muss den Regeln des Betriebssystems entsprechen, auf dem JKCEMU läuft. Unabhängig davon kann aber ein relativer Pfad auch in einer betriebssystemunabhängigen Form (also auch unter Windows) mit einem Slash (/) als Pfadtrennzeichen angegeben werden.
CPU 1 Schlüsselwort U880 oder Z80 Angabe des Prozessortyps,
Dieser Pseudobefehl ist aus Kompatibilitätsgründen vorhanden und hat keine Wirkung, da der Assembler sowieso nur diesen einen Prozessortyp unterstützt.
DB
DEFB
DEFM
DFB
mindestens 1 Numerische Ausdrücke oder Zeichenketten Datenbytes erzeugen
DEFH
DFH
HEX
mindestens 1 Hexadezimalzahlen,
Es können Hexadezimalzahlen auch ohne führende Null und ohne abschließendes H angegeben werden.
Beispiel: DEFH AB
Datenbytes erzeugen
DEFS
DFS
DS
mindestens 1 Numerische Ausdrücke Speicherbereich reservieren,
Steht der Befehl am Anfang oder am Ende des Quelltextes, wird der Speicherbereich zwar reserviert, d.h. die Adressen mitgezählt, jedoch wird kein Programmcode erzeugt. Steht dagegen der Befehl mitten im Quelltext, wird der Bereich mit Nullbytes aufgefüllt.
DA
DEFW
DFW
DW
mindestens 1 Numerische Ausdrücke Datenwörter (jeweils 2 Bytes) erzeugen
END 0 Ende des Quelltextes,
Alle weiteren Quelltextzeilen werden ignoriert.
ENT 0 Eintrittspunkt in das Programms,
Die aktuelle Adresse wird als Startadresse verwendet. Fehlt der Befehl im Quelltext, gilt die Anfangsadresse als Startadresse.
EQU 1 Numerischer Ausdruck Marke definieren,
Die Quelltextzeile muss eine Marke enthalten, die mit dem angegebenen Wert definiert wird.
INCLUDE 1 Zeichenkette Einbinden einer Quelltextdatei,
Die angegebene Datei wird an der aktuellen Stelle in den Quelltext eingefügt und mit assembliert. Bzgl. des Dateinamens gelten die die gleichen Regeln wie beim weiter oben beschriebenen Pseudobefehl BINCLUDE.
ORG 1 Numerischer Ausdruck Programmzähler (Adresse) auf den angegebenen Wert setzen,
Steht der Befehl mitten im Quelltext, wird der Bereich zwischen der letzten und der neuen Adresse mit Nullbytes aufgefüllt.
Z80 0 Angabe des Prozessortyps,
Dieser Pseudobefehl ist aus Kompatibilitätsgründen vorhanden und hat keine Wirkung, da der Assembler sowieso nur einen Prozessortyp unterstützt.

Alle Pseudobefehle können auch mit einem vorangestellten Punkt geschrieben werden, z.B. .ORG, .DB und so weiter. In dem Fall darf der Pseudobefehl auch am Zeilenanfang stehen.

5. Mnemonik und Syntax: Zilog oder Robotron?

Robotron hat bei einigen Assembler-Befehlen eine von Zilog abweichende Mnemonik eingeführt, teilweise auch eine abweichende Syntax. Der JKCEMU-Assembler unterstützt beide Varianten. In den Assembler-Optionen können Sie aber auch einstellen, dass entweder nur die Zilog- oder nur die Robotron-Mnemonik/-Syntax zugelassen ist.

Die Mnemonik unterscheidet sich bei folgenden Befehlen:
Assembler-Befehl Zilog-Mnemonik Robotron-Mnemonik
bedingte CALL-Befehle CALL Z
CALL NZ
CALL C
CALL NC
CALL PE
CALL PO
CALL M
CALL P
CAZ
CANZ
CAC
CANC
CAPE
CAPO
CAM
CAP
Vergleichsbefehle CP CMP
Austauschbefehl mit AF EX AF,AF' EXAF
Eingabebefehl: Nur Flag-Register von Zilog nicht dokumentiert INF
unbedingter absoluter Sprung JP JMP
bedingte absolute Sprünge JP Z
JP NZ
JP C
JP NC
JP PE
JP PO
JP M
JP P
JPZ
JPNZ
JPC
JPNC
JPPE
JPPO
JPM
JPP
bedingte relative Sprünge JR Z
JR NZ
JR C
JR NC
JRZ
JRNZ
JRC
JRNC
bedingte Rückkehrbefehle RET Z
RET NZ
RET C
RET NC
RET PE
RET PO
RET M
RET P
RZ
RNZ
RC
RNC
RPE
RPO
RM
RP


Die Syntax unterscheidet sich bei folgenden Befehlen:
Assembler-Befehl Zilog-Syntax Robotron-Syntax Erläuterung
Eingabebefehle IN r,(C) IN r r: Register A, B, C, D, E, H oder L
Ausgabebefehle OUT (C),r
OUT (n),A
OUT r
OUT n
r: Register A, B, C, D, E, H oder L
n: numerischer Ausdruck
8-Bit-Befehle:
  • ADD
  • ADC
  • SBC
ADD A,x
ADC A,x
SBC A,x
ADD x
ADC x
SBC x
x: entweder:
  • numerischer Ausdruck oder
  • Register A, B, C, D, E, H, L oder
  • (HL) oder
  • (IX+d) oder
  • (IY+d)


6. Undokumentierte Prozessorbefehle

Einige Operationscodes führen im Mikroprozessor Befehle aus, die vom Hersteller nicht dokumentiert sind. Dabei verhält sich der Prozessor U880 genau so wie die Z80 CPU.

Der Assembler unterstützt diese undokumentierten Befehle, wenn Sie das in den Assembler-Optionen so festlegen. Da die Befehle weder von Zilog noch von Robotron dokumentiert sind, existiert auch keine offizielle Mnemonik beziehungsweise Syntax. Aus diesem Grund sind Mnemonik und Syntax dieser undokumentierten Prozessorbefehle spezifische Eigenheiten des JKCEMU-Assemblers und werden nachfolgend beschrieben.

6.1. Zugriff auf die einzelnen Bytes der Index-Register

Viele 8-Bit-Register-Befehle können auch auf das niederwertige beziehungsweise höherwertige Byte der beiden Indexregister angewendet werden. Dabei versteht der Assembler folgende Namen für die Index-Teilregister:
TeilregisterName
Niederwertiges Byte von IX: IXL oder LX
Höherwertiges Byte von IX: IXH oder HX
Niederwertiges Byte von IY: IYL oder LY
Höherwertiges Byte von IY: IYH oder HY


Folgende Befehle sind möglich:
Mnemonik und Syntax mit IXH Erläuterung
LD IXH,n
LD IXH,r
LD IXH,IXH
LD IXH,IXL
n: numerischer Ausdruck
r: Register A, B, C, D oder E
LD r,IXH r: Register A, B, C, D oder E
ADD A,IXH
ADC A,IXH
SUB IXH
SBC A,IXH
AND IXH
XOR IXH
OR IXH
CP IXH
INC IXH
DEC IXH

Anstelle von IXH sind auch IXL, IYH, IYL sowie die alternativen Schreibweisen HX, LX, HY und LY möglich.

6.2. Eingabebefehl: Nur Flag-Register setzen

Der Befehl liest ein Byte vom Eingabetor, dessen Adresse im Register C steht und setzt das Flag-Register entsprechend. Der eingelesene Wert selbst wird nicht behalten.
Mnemonik und Syntax
IN F,(C)
IN (C)

Achtung: Robotron hat diesen Befehl mit der Mnemonik INF dokumentiert. Diese Mnemonik wird vom Assembler somit auch als ein offizieller Befehl verstanden.

6.3. Logischer Linksschiebebefehl

Der Befehl schiebt das Argument um ein Bit nach links, wobei das Bit 0 danach auf 1 gesetzt ist.
Mnemonik und Syntax Erläuterung
SLL r
SLL (HL)
SLL (IX+d)
SLL (IY+d)
r: Register A, B, C, D, E, H oder L


6.4. Rotations-, Schiebe- und Einzelbitbefehle mit Indexregistern, die auch auf ein anderes Register wirken

Die offiziell dokumentierten Rotations-, Schiebe- und Einzelbitbefehle, die auf ein Byte im Arbeitsspeicher angewendet werden, welches durch indirekte Adressierung mit einem Indexregister und Distanzangabe bestimmt wird, können auch auf ein Register wirken, welches als zusätzliches Argument anzugegeben ist. Das gilt auch für den undokumentierten SLL-Befehl.
Mnemonik und Syntax Erläuterung
RLC (IX+d),r
RRC (IX+d),r
RL (IX+d),r
RR (IX+d),r
SLA (IX+d),r
SRA (IX+d),r
SLL (IX+d),r
SRL (IX+d),r
RES b,(IX+d),r
SET b,(IX+d),r
r: Register A, B, C, D, E, H oder L
b: 0 bis 7

Anstelle von IX kann auch IY angegeben werden. Die Befehle haben die gleiche Wirkung wie die offiziell dokumentierten Befehle ohne die zusätzliche Registerangabe, nur mit dem Unterschied, dass sie auch auf das zusätzlich angegebene 8-Bit-Register wirken.

7. Numerische Ausdrücke

Numerischen Ausdrücke kommen überall dort zur Anwendung, wo ein numerischer Wert benötrigt wird. Beim Assemblerbefehl

  LD A,3

ist z.B. die 3 ein numerischer Ausdruck, und zwar konkret ein Zahlenliteral. Numerische Ausdrücke können aber auch komplexer sein und Operationen, Funktionen, Zeichenliterale und Marken enthalten. Außerdem können numerische Ausdrücke mit runden Klammern beliebig geschachtelt werden.

7.1. Zahlenliteral

Zahlenliterale beginnen mit einer Ziffer und können mit einem Buchstaben enden, der die Basis der Zahl angibt. Folgende Buchstaben sind dabei möglich:
Abschließender Buchstabe Basis der Zahl Bemerkung
nicht vorhanden10Dezimalzahl
B, oder b2Binärzahl
O, o, Q oder q8Oktalzahl
H oder h 16 Hexadezimalzahl, muss mit einer Ziffer (z.B. 0) beginnen!

Hexadezimalzahlen können auch in zwei anderen Syntax-Varianten geschrieben werden:
Beispiele:
BeispielDezimaler Wert
123123
101b5
123q83
0AFh175
%AF175
X'AF'175


7.2. Zeichenliteral

Ein Zeichenliteral ist ein in einfachen Hochkommas eingeschlossenes Zeichen, z.B. 'A'. Ein Zeichenliteral kann innerhalb eines numerischen Ausdrucks verwendet werden.

7.3. Funktionen

Der Assembler bietet Funktionen für den Zugriff auf das niederwerte und höherwertige Byte eines numerischen Wertes.
Zugriff aufSyntax
HIGH(...) Zugriff auf höherwertiges Byte
LOW(...) Zugriff auf niederwertiges Byte


7.4. Unäre Operatoren

Unäre Operatoren wirken auf den nachfolgenden Ausdruck.
OperatorBeschreibung
+ Vorzeichen
Der nachfolgende Wert wird nicht verändert.
- Vorzeichen
Der nachfolgende Wert wird mathematisch negiert.
NOT Der nachfolgende Wert wird bitweise negiert


7.5. Binäre Operatoren

Binäre Operatoren stehen zwischen zwei Ausdrücken.
OperatorBeschreibung
+Addition
-Subtraktion
*Multiplikation
/Division
MOD Module - Rest der Division
AND bitweise UND-Verknüpfung
OR bitweise Inklusiv-ODER-Verknüpfung
XOR bitweise Exklusiv-ODER-Verknüpfung
<<
SHL
links schieben
Der vor dem Operator stehende Wert wird um soviele Bits nach links geschoben, wie der Wert hinter dem Operator angibt.
>>
SHR
links schieben
Der vor dem Operator stehende Wert wird um soviele Bits nach rechts geschoben, wie der Wert hinter dem Operator angibt.
<
LT
Vergleich auf kleiner als
Ist der erste Wert kleiner als der zweite, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.
<=
LE
Vergleich auf kleiner oder gleich
Ist der erste Wert kleiner oder gleich dem zweiten, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.
>
GT
Vergleich auf größer als
Ist der erste Wert größer als der zweite, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.
>=
GE
Vergleich auf größer oder gleich
Ist der erste Wert größer oder gleich dem zweiten, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.
=
EQ
Vergleich auf Gleichheit
Ist der erste Wert gleich dem zweiten, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.
<>
NE
Vergleich auf Ungleichheit
Ist der erste Wert ungleich dem zweiten, ergibt das den Wert -1 (alle Bits gesetzt), anderenfalls 0.

Binäre Operatoren haben eine geringere Bindungskraft als unäre. Innerhalb der binäre Operatoren gibt folgende Tabelle Auskunft über die Bindungskraft. Je weiter oben ein Operator steht, desto höher ist die Bindungskraft.
* / MOD
+ -
<< >> SHL SHR
< <= > >= LT LE GT GE
= <> EQ NE
AND
XOR
OR


7.6. Aktuelle Adresse

Die aktuelle Adresse wird durch das $-Zeichen repräsentiert. Wenn Sie also in einem Ausdruck den Wert des Programm Counters (Register PC) zu Beginn der aktuellen Assembler-Zeile benötigen, schreiben Sie dafür das Zeichen: $

8. Zeichenketten

Eine Zeichenkette (Zeichenkettenliteral) umfasst ein oder mehrere in einfachen oder doppelten Hochkommas eingeschlossene Zeichen. Zeichenkettenliterale können nur bei den Pseudobefehlen BINCLUDE, DB, DEFB, DEFM, DFB und INCLUDE verwendet werden.

9. Bedingte Assemblierung

Unter bedingter Assemblierung versteht man, dass Teile des Quelltextes nur dann assembliert werden, wenn eine bestimmte Bedingung erfüllt ist.

Ein der bedingten Assemblierung unterliegender Quelltextabschnitt beginnt mit einer IF-Anweisung, die es in mehreren Varianten gibt. Die Anweisung ENDIF markiert das Ende dess betreffenden Quelltextabschnitts und schließt somit die IF-Anweisung ab.

Zwischen IF und ENDIF kann optional auch die Anwisung ELSE stehen. Der Quelltext zwischen ELSE und ENDIF wird nur dann assembliert, wenn der Bereich zwischen IF und ELSE nicht assembliert wird und umgekehrt.

Die Tabelle beschreibt die verschiedenen IF-Anweisungen für die bedingte Assemblierung:
Anweisungen/SyntaxBeschreibung
IF <numersicher_Ausdruck>
IFT <numersicher_Ausdruck>
Der nachfolgende Quelltext wird assembliert, wenn der Wert des numerischen Ausdrucks ungleich 0 ist.
IFE <numersicher_Ausdruck>
IFF <numersicher_Ausdruck>
Der nachfolgende Quelltext wird assembliert, wenn der Wert des numerischen Ausdrucks gleich 0 ist.
IFDEF <Marke> Der nachfolgende Quelltext wird assembliert, wenn die angegebene Marke existiert.
IFNDEF <Marke> Der nachfolgende Quelltext wird assembliert, wenn die angegebene Marke nicht existiert.
IF1 Der nachfolgende Quelltext wird im ersten Assembler-Lauf assembliert.
IF2 Der nachfolgende Quelltext wird im zweiten Assembler-Lauf assembliert.

Die Anweisungen für die bedingte Assemblierung können sowohl am Zeilenanfang stehen als auch eingerückt werden. Des Weiteren können bedingte Assemblierungen auch in sich geschachtelt werden.

Der JKCEMU-Assembler legt automatisch die Marke __JKCEMU__ mit dem Wert -1 (alle Bits gesetzt) an. Damit kann erkannt werden, ob das Programm mit dem JKCEMU-Assembler assembliert wird.

Beispiel:

  DB 'Dieses Programm wurde mit'
IFDEF __JKCEMU__
  DB ' dem JKCEMU-'
ELSE
  DB ' einem anderen '
ENDIF
  DB 'Assembler assembliert'


10. Kommandozeile

Der Assembler kann mit einer Kommandozeile auch ohne den Emulator als eigenständiges Programm aufgerufen werden. Unter Windows müssen Sie dazu die Eingabeaufforderung starten. Die Kommandozeile zum Aufruf des Assemblers sieht folgendermaßen aus (Name und Pfad der JKCEMU-JAR-Datei sind entsprechend anzupassen):

java -jar jkcemu.jar --as [Optionen] <Quelltextdatei>

oder

java -jar jkcemu.jar --assembler [Optionen] <Quelltextdatei>

Folgende Optionen können angegeben werden (Groß-/Kleinschreibung beachten!):
OptionBedeutung
-h Hilfe zu den Assembler-Optionen anzeigen
-f <Datei> weitere Kommandozeile aus Datei lesen

Die Kommandozeile kann recht lang sein, möglicherweise länger als von der Eingabeaufforderung oder dem Betriebssystem unterstützt. Aus diesem Grund kann die Kommandozeile aus einer Datei gelesen werden.

Beim Erreichen der Option -f öffnet der Assembler die angegebene Datei und liest daraus die weitere Kommandozeile. Wenn das Ende der Datei erreicht wurde, wird der Rest der ursprünglichen Kommandozeile weiter verarbeitet. Der Assembler tut also so, als ob der Inhalt der Datei anstelle der Option -f in der Kommandozeile stehen würde.

In der Datei müssen die einzelnen Kommandozeilenargumente nicht in einer Zeile stehen, sondern können auf mehrere Zeilen aufgeteilt werden. Wenn ein Kommandozeilenargument Leerzeichen enthält, muss dieses in doppelte Hochkommas eingeschlossen werden, damit der Assembler es als ein Argument verarbeitet.
-l Markentabelle ausgeben
-o <Ausgabedatei> Der erzeugte Programmcode wird in die angegebene Datei geschrieben. Das Format der Ausgabedatei hängt von der Endung (*.bin; *.hex; *.kcc; *.kcm; *.tap; *.z80) und von der Angabe der Option -9 ab.
Fehlt die Option -o, hat die Ausgabedatei mit Ausnahme der Endung den gleichen Namen wie die Quelltextdatei. Die Endung lautet: *.bin
-9 Wurde mit der Option -o eine KCC-, KCM- oder TAP-Datei angegeben, wird diese im Format für einen Z9001, KC85/1 und KC87 erzeugt (Dateityp COM eingetragen und bei TAP-Dateien hat der erste Block die Nummer 0). Fehlt die Option -9, werden KCC-, KCM- und TAP-Dateien im Format für HC900 und KC85/2..5 erzeugt.
-C Groß-/Kleinschreibung bei Marken beachten
-D <Marke> Marke mit dem Wert -1 (alle Bits gesetzt) definieren
-D <Marke=Wert> Marke mit dem angegebenen Wert definieren
Der Wert wird in Form einer Dezimal-, Hexadezimal-, Oktal- oder Binärzahl angegeben (siehe Zahlenliteral).
-U Undokumentierte Befehle erlauben
-R Nur Robotron-Mnemonik/-Syntax erlauben
-Z Nur Zilog-Mnemonik/-Syntax erlauben