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/11/04 12:30] – [Standard-Funktionen] volkerp | cpm:arnold_assembler [2026/08/25 10:03] (aktuell) – [ASIDE-Assembler-Makros] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Arnold-Assembler ====== | + | ====== Arnold-Assembler |
| - | Die meisten meiner Assembler-Programme sind mit dem [[http:// | + | Die meisten meiner Assembler-Programme sind mit dem Arnold-Assembler von http:// |
| Allerdings erzeugt der Arnold-Assembler erzeugt nicht direkt Binär-Dateien oder auch Hex-Dateien, | Allerdings erzeugt der Arnold-Assembler erzeugt nicht direkt Binär-Dateien oder auch Hex-Dateien, | ||
| Zeile 8: | Zeile 8: | ||
| <code dos> | <code dos> | ||
| - | as.exe -cpu Z80 -L file.asm | + | asl.exe -cpu Z80 -L file.asm |
| p2bin.exe -r $-$ file.p | p2bin.exe -r $-$ file.p | ||
| del file.p | del file.p | ||
| Zeile 16: | Zeile 16: | ||
| ===== Hinweise ===== | ===== Hinweise ===== | ||
| - | Der Assembler ist recht kompatibel zum M80 und anderen Assemblern. | + | Der Assembler ist recht kompatibel zum M80 und anderen Assemblern. |
| + | |||
| + | Zeichenketten müssen | ||
| Kleine Perl-Programme erleichtern die Arbeit | Kleine Perl-Programme erleichtern die Arbeit | ||
| Zeile 22: | Zeile 24: | ||
| * convasm.pl konvertiert SYPS K1520 - U880 - Syntax nach Zilog-Syntax | * convasm.pl konvertiert SYPS K1520 - U880 - Syntax nach Zilog-Syntax | ||
| * convida.pl | * convida.pl | ||
| + | * convida_Z8.pl Konvertiert IDAPro-Z8-ASM-Dateien in brauchbares Format für den Arnold-Assembler | ||
| Beim **Z8-Prozessor** muss beachtet werden, dass der Assembler automatisch versucht, die Registernutzung zu optimieren. Um 100% originalen Code zu erreichen, ist es hilfreich, RP auf ein ungenutzte Adresse zu setzen: | Beim **Z8-Prozessor** muss beachtet werden, dass der Assembler automatisch versucht, die Registernutzung zu optimieren. Um 100% originalen Code zu erreichen, ist es hilfreich, RP auf ein ungenutzte Adresse zu setzen: | ||
| Zeile 74: | Zeile 77: | ||
| Wann immer der | Wann immer der | ||
| - | Name eines | + | Name eines |
| nicht mit diesem | nicht mit diesem | ||
| wird der Name des zuletzt | wird der Name des zuletzt | ||
| Punkt davor gehängt. Auf diese Weise nehmen Symbole, deren Name nicht | Punkt davor gehängt. Auf diese Weise nehmen Symbole, deren Name nicht | ||
| mit einem Punkt anfängt, | mit einem Punkt anfängt, | ||
| - | und Symbole, deren Name mit einem Punkt anfängt, können in jedem Be- | + | und Symbole, deren Name mit einem Punkt anfängt, können in jedem Bereich |
| - | reich neu verwendet werden. | + | |
| ===== Standard-Funktionen ===== | ===== Standard-Funktionen ===== | ||
| Zeile 103: | Zeile 105: | ||
| ===== Makros ===== | ===== Makros ===== | ||
| - | Beim Aufruf eines Makros werden die beim Aufruf angegebenen | + | Beim Aufruf eines Makros werden die beim Aufruf angegebenen |
| - | namen | + | |
| - | gebene | + | |
| LOGOP MACRO LINST | LOGOP MACRO LINST | ||
| Zeile 120: | Zeile 120: | ||
| Wichtig | Wichtig | ||
| men im case-sensitiven | men im case-sensitiven | ||
| - | aber nie eine Umwandlung in Großbuchstaben erfolgt. Die Makroparame- | + | aber nie eine Umwandlung in Großbuchstaben erfolgt. Die Makroparameternamen |
| - | ternamen | + | |
| - | den. | + | |
| Der Unter- | Der Unter- | ||
| - | strich | + | strich |
| - | menzuketten, z.B. CALL part1_part2 | + | |
| Ein etwas verstecktes | Ein etwas verstecktes | ||
| Zeile 177: | Zeile 174: | ||
| s.a. [[forth: | s.a. [[forth: | ||
| + | |||
| + | |||
| + | ==== ASIDE-Assembler-Makros ==== | ||
| + | |||
| + | Hat man einen Quelltext für den ASIDE-Assembler (oder ähnlich), kann man mit diesen Makros die fehlenden Assembler-Befehle nachbilden: einfach den folgende Code vor den ASIDE-Assembler-Text einfügen. | ||
| + | |||
| + | < | ||
| + | ; Anpassung Arnold-Assembler | ||
| + | cpu z80 | ||
| + | |||
| + | DEFM macro x | ||
| + | IFNB X | ||
| + | | ||
| + | shift | ||
| + | DEFM ALLARGS | ||
| + | endif | ||
| + | endm | ||
| + | |||
| + | DEFS macro a, | ||
| + | ifb b | ||
| + | ds a | ||
| + | else | ||
| + | db a dup(b) | ||
| + | endif | ||
| + | endm | ||
| + | |||
| + | | ||
| + | |||
| + | hi function x, | ||
| + | lo function x, x&255 | ||
| + | </ | ||
| + | |||