Arnold-Assembler
Die meisten meiner Assembler-Programme sind mit dem Arnold-Assembler übersetzbar. Der Assembler von Alfred Arnold ist ein universeller Makro-Cross-Assembler für eine Vielzahl von Mikroprozessoren und -Controllern. Außerdem ist er komplett kostenlos.
Allerdings erzeugt der Arnold-Assembler erzeugt nicht direkt Binär-Dateien oder auch Hex-Dateien, sondern *.p-Zwischencode-Dateien. Diese müssen mit einem weiteren Programm p2bin.exe erst zu einer Binär-Datei umgeformt werden.
Deswegen liegt in den Downloadpaketen oft eine kleine Batch-Datei as.cmd bei, mit der ein Assemblerquelltext in eine Binärdatei umgewandelt wird:
as.exe -cpu Z80 -L file.asm p2bin.exe -r $-$ file.p del file.p
Hinweise
Der Assembler ist recht kompatibel zum M80 und anderen Assemblern. Nur Zeichenketten müssen in „..“ statt Hochkommas geschrieben werden. Einzelne Charakter-Zeichen bleiben in Hochkommas.
Kleine Perl-Programme erleichtern die Arbeit
- convasm.pl konvertiert SYPS K1520 - U880 - Syntax nach Zilog-Syntax
- convida.pl Konvertiert IDAPro-Z80-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:
assume RP:0C0h ; keine Optimierung durch AS!
Makros
Beispiele:
; ich möchte im Arnold-Assembler für Z80-Code Zeichenketten Byte für Byte mit ; 0A8h XOR-verknüpfen, also statt ; DB CR,"Test",0 ; die Bytefolge A5, FC, CD, DB, DC, A8 erzeugen. cpu z80 CR equ 0dh DX macro X,{NOEXPAND} IFNB X if EXPRTYPE(x) = 2 irpc y,x DB 'Y' ! 0A8h ENDM else DB (X) ! 0A8h endif shift DX ALLARGS endif endm ; Codierte Texte erzeugen: DX CR,"Test",0 end
s.a. FORTH für den KC85/2-4, dort gibt es ein umfangreicheres header-Makro, das den FORTH-Header erzeugt.