Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
cpm:arnold_assembler [2017/06/09 12:40] – [Hinweise] volkerp | cpm:arnold_assembler [2025/09/03 14:55] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 26: | Zeile 26: | ||
assume RP:0C0h ; keine Optimierung durch AS! | assume RP:0C0h ; keine Optimierung durch AS! | ||
+ | |||
+ | Beim **Z80-Prozessor** kann man eine alternative Syntax für Hex-Zahlen aktivieren. Das erfolgt mit | ||
+ | | ||
+ | Dann sind Hex-Zahlen in C-Notation zulässig, z.B. 0xc000 | ||
+ | |||
+ | Eine weitere Variante ist | ||
+ | INTSYNTAX +$hex, +%bin | ||
+ | Das erlaubt $efb0, %00100111 zusätzlich zur Suffix-Notation 0EFBh. | ||
+ | |||
+ | **Diverses** | ||
+ | |||
+ | statt equ EVAL oder .SET | ||
+ | |||
+ | SET und EQU erlauben die Definition typenloser | ||
+ | werden | ||
+ | nem Fall eine Warnung wegen Segment-Vermischung. Während EQU Konstan- | ||
+ | ten definiert, die nicht wieder (mit EQU) geändert werden können, er- | ||
+ | laubt SET die Definition | ||
+ | |||
+ | Einige | ||
+ | Bei diesen muß EVAL anstelle von SET verwendet werden, falls sich der | ||
+ | Maschinenbefehl | ||
+ | läßt. | ||
+ | ten Punkt (.SET anstelle SET) explizit den Pseudobefehl aufzurufen. | ||
+ | |||
+ | Ausdrücke in IF .. ELSEIF .. ENDIF | ||
+ | |||
+ | | ||
+ | | ||
+ | && | ||
+ | | ||
+ | >> | ||
+ | << | ||
+ | | ||
+ | | ||
+ | <> | ||
+ | | ||
+ | |||
+ | MOD # | ||
+ | | ||
+ | | ||
+ | |||
+ | PAGE --> NEWPAGE | ||
+ | |||
+ | |||
+ | Symbolnamen | ||
+ | |||
+ | Wann immer der | ||
+ | Name eines Symboles | ||
+ | nicht mit diesem | ||
+ | wird der Name des zuletzt | ||
+ | Punkt davor gehängt. Auf diese Weise nehmen Symbole, deren Name nicht | ||
+ | mit einem Punkt anfängt, | ||
+ | und Symbole, deren Name mit einem Punkt anfängt, können in jedem Be- | ||
+ | reich neu verwendet werden. | ||
+ | |||
+ | ===== Standard-Funktionen ===== | ||
+ | |||
+ | < | ||
+ | ; AS-Funktionen | ||
+ | hi function x, | ||
+ | lo function x, x&255 | ||
+ | </ | ||
===== Makros ===== | ===== Makros ===== | ||
+ | |||
+ | Beim Aufruf eines Makros werden die beim Aufruf angegebenen Parameter- | ||
+ | namen überall textuell im Befehlsblock eingesetzt | ||
+ | gebene | ||
+ | |||
+ | LOGOP MACRO LINST | ||
+ | LD A,B | ||
+ | LINST D ;; | ||
+ | LD B, | ||
+ | LD A,C | ||
+ | LINST E ;; | ||
+ | LD C, | ||
+ | RET | ||
+ | ENDM | ||
+ | LOGOP XOR | ||
+ | |||
+ | Wichtig | ||
+ | men im case-sensitiven | ||
+ | aber nie eine Umwandlung in Großbuchstaben erfolgt. Die Makroparame- | ||
+ | ternamen | ||
+ | den. | ||
+ | |||
+ | Der Unter- | ||
+ | strich | ||
+ | menzuketten, | ||
+ | |||
+ | Ein etwas verstecktes | ||
+ | Symbolnamen | ||
+ | des Strings mit geschweiften | ||
+ | kann man z.B. den Namen eines Symbols anhand des Wertes eines anderen | ||
+ | Symbols festlegen: | ||
+ | |||
+ | < | ||
+ | cnt .set cnt+1 | ||
+ | temp equ " | ||
+ | jrnz skip{temp} | ||
+ | . | ||
+ | . | ||
+ | skip{temp}: | ||
+ | </ | ||
+ | |||
Beispiele: | Beispiele: |