Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| cpm:arnold_assembler [2025/08/13 12:12] – [Hinweise] volkerp | cpm:arnold_assembler [2025/11/04 12:30] (aktuell) – [Standard-Funktionen] volkerp | ||
|---|---|---|---|
| Zeile 31: | Zeile 31: | ||
| Dann sind Hex-Zahlen in C-Notation zulässig, z.B. 0xc000 | 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 | ||
| + | setlength function text, | ||
| + | </ | ||
| + | |||
| + | hi(), lo() liefern das obere bzw. untere Byte eines Words\\ | ||
| + | setlength() z.B. für DATE, damit hier immer eine konstante Länge bleibt: db setlength(DATE, | ||
| + | |||
| + | individuell z.B. zur Ausgabepositionierung im Bildwiederholspeicher | ||
| + | < | ||
| + | ; Z9001 bws(zeile 0..23, spalte 0..39) analog print_at | ||
| + | bws function z, | ||
| + | bwsc function z, | ||
| + | </ | ||
| ===== 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: | ||