[Marke[:]] [Mnemonik [Argument_1[,Argument_2[,...]]]] [;Kommentar]
Mnemonik | Anzahl der Argumente | Typ der Argumente | Beschreibung |
---|---|---|---|
ALIGN | 1 oder 2 | Numerischer Ausdrücke |
Ausrichten der aktuellen Adresse auf eine Zweierpotenz,
also z.B. auf 2, 4, 8, 16, usw.
Beispiel: ORG 8000H DB 1 ALIGN 100H ;Aktuelle Adresse jetzt 8100H Optional kann als zweites Argument auch das Byte angegebene werden, mit dem aufgefüllt werden soll: ORG 8000H DB 1 ALIGN 4,0FFH ;Es werden 3 Bytes FFh eingefuegt. |
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, U880UNDOC, Z80 oder Z80UNDOC |
Angabe des Prozessortyps, Die vier möglichen Schlüsselwörter können auch als eigenständige Pseudobefehle geschrieben werden. Dort ist auch die Bedeutung erläutert. |
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 bzw. der Quelltextdatei, Alle weiteren Zeilen des Quelltextes bzw. der aktuellen Quelltextdatei werden ignoriert. Steht der Befehl in einer mit INCLUDE eingebundenen Datei, wird diese eingebundene Datei beendet und der Assembler setzt mit der nächsten Zeile hinter dem zugehörigen INCLUDE-Befehl fort. |
|
ENT ENTRY |
0 |
Eintrittspunkt in das Programm, 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. |
ERROR | 1 | Zeichenkette |
Die angegebene Zeichenkette wird als Fehler ausgegeben.
Der Pseudobefehl ERROR ist i.d.R nur in Verbindung mit
bedingter Assemblierung
sinnvoll, um z.B. bei nicht erfüllten Bedingungen
einen Fehler zu melden:
IF $ > 800h ERROR 'Programmcode zu gross fuer 2K-EPROM' ENDIF |
EVEN | 0 |
Ausrichten der aktuellen Adresse auf einen geraden Wert, Der Befehl hat die gleiche Wirkung wie: ALIGN 2 |
|
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 gleichen Regeln wie beim weiter oben beschriebenen Pseudobefehl BINCLUDE. |
NAME | 1 | Zeichenkette |
Festlegen des Programmnamens, Die einzige Wirkung des Befehls ist, dass beim Speichern des erzeugten Programmcodes in eine Datei der angegebene Name als Dateiname in die Datei geschrieben wird, sofern das Dateiformat einen Namen unterstützt. |
NEWPAGE | 0 |
Im Assembler-Listing wird ein Seitenumbruchzeichen 0Ch
(Form Feed) eingefügt und ein neuer Tabellenkopf erzeugt.
Die Zeile mit dem NEWPAGE steht auf der neuen Seite.
Achtung! Der JKCEMU-Texteditor hat keine Seitenverwaltung und stellt deshalb das eingefügte Seitenumbruchzeichen als einzelnes Zeichen dar. Abhängig von der verwendeten Schriftart ist dieses Zeichen möglicherweise nicht sichtbar. Beim Drucken werden allerdings die Seitenumbruchzeichen ausgewertet und führen zu jeweils einer neuen Seite. |
|
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. |
PAGE | 0 | PAGE ist ein Synonym für NEWPAGE und hat deshalb die gleiche Wirkung wie NEWPAGE. | |
TITLE | 1 | Zeichenkette |
Festlegen des Titels bzw. des Programmnamens, Der Befehl TITLE ist ein Synonym für den Pseudobefehl NAME und hat somit auch die gleiche Bedeutung wie dieser. |
U880 | 0 |
Der Pseudobefehl U880 erlaubt ausschließlich
die Robotron-Mnemonik/-Syntax und überschreibt damit
die eingestellten Assembler-Optionen in der Gruppe
Mnemonik/Syntax.
Der Befehl hat die gleiche Bedeutung wie: CPU U880 |
|
U880UNDOC | 0 |
Der Pseudobefehl U880UNDOC erlaubt
die Robotron-Mnemonik/-Syntax sowie undokumentierte Befehle.
Die eingestellten Assembler-Optionen in der Gruppe
Mnemonik/Syntax werden damit überschrieben.
Der Befehl hat die gleiche Bedeutung wie: CPU U880UNDOC |
|
Z80 | 0 |
Der Pseudobefehl Z80 erlaubt ausschließlich
die Zilog-Mnemonik/-Syntax und überschreibt damit
die eingestellten Assembler-Optionen in der Gruppe
Mnemonik/Syntax.
Der Befehl hat die gleiche Bedeutung wie: CPU Z80 |
|
Z80UNDOC | 0 |
Der Pseudobefehl Z80UNDOC erlaubt
die Zilog-Mnemonik/-Syntax sowie undokumentierte Befehle.
Die eingestellten Assembler-Optionen in der Gruppe
Mnemonik/Syntax werden damit überschrieben.
Der Befehl hat die gleiche Bedeutung wie: CPU Z80UNDOC |
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 |
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 A,x ADC A,x SBC A,x |
ADD x ADC x SBC x |
x: entweder:
|
Teilregister | Name |
---|---|
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 |
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 |
Mnemonik und Syntax |
---|
IN F,(C) IN (C) |
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 |
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 |
Abschließender Buchstabe | Basis der Zahl | Bemerkung |
---|---|---|
nicht vorhanden | 10 | Dezimalzahl |
B, oder b | 2 | Binärzahl |
O, o, Q oder q | 8 | Oktalzahl |
H oder h | 16 | Hexadezimalzahl, muss mit einer Ziffer (z.B. 0) beginnen! |
Beispiel | Dezimaler Wert |
---|---|
123 | 123 |
101b | 5 |
123q | 83 |
0AFh | 175 |
%AF | 175 |
X'AF' | 175 |
Zugriff auf | Syntax |
---|---|
HIGH(...) | Zugriff auf höherwertiges Byte |
LOW(...) | Zugriff auf niederwertiges Byte |
Operator | Beschreibung |
---|---|
+ |
Vorzeichen Der nachfolgende Wert wird nicht verändert. |
- |
Vorzeichen Der nachfolgende Wert wird mathematisch negiert. |
NOT | Der nachfolgende Wert wird bitweise negiert |
Operator | Beschreibung |
---|---|
+ | 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. |
* / MOD |
+ - |
<< >> SHL SHR |
< <= > >= LT LE GT GE |
= <> EQ NE |
AND |
XOR |
OR |
Anweisungen/Syntax | Beschreibung |
---|---|
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. |
Option | Bedeutung | |
---|---|---|
-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 |
Assembler-Listing erzeugen, Die Datei für das Assembler-Listing hat den gleichen Pfad und den gleichen Basisnamen wie die Ausgabedatei (siehe Option -o). Die Endung ist jedoch: .lst |
|
-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 | |
-t |
Markentabelle ausgeben, Die Markentabelle wird auf der Standard-Ausgabe ausgegebene, es sei denn, Sie haben auch die Option -l angegebene. In dem Fall wird die Markentabelle an das Assembler-Listing angehängt. |
|
-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). |
|
-J |
Zu große relative Sprünge als absolute übersetzen, Diese Option bewirkt, dass relative Sprungbefehle mit einer zu großen Sprungdistanz nicht zu einem Fehler führen, sondern als absolute Sprungebefehle übersetzt werden. In dem Fall wird eine Warnung ausgegeben. Die Option hat jedoch keine Wirkung beim DJNZ-Befehl, da es zu diesem keinen funktional gleichwertigen Befehl mit einem absoluten Spring gibt. Auch das Simulieren des DJNZ-Befehls durch andere CPU-Befehle lässt sich funktional nicht hundertprozentig exakt realisieren, da DJNZ keine CPU-Flags beeinflusst. |
|
-U | Undokumentierte Befehle erlauben | |
-R | Nur Robotron-Mnemonik/-Syntax erlauben | |
-Z | Nur Zilog-Mnemonik/-Syntax erlauben |