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

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!

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.