Cross Assemler

Menüpunkt: Cross Assembler

Menü: Tools -> Cross Assembler


Zitate aus dem C64 Artikel: Assemblersprache


Assembler ist eine Programmiersprache, welche eine (besser) für Menschen lesbare Repräsentation von Maschinensprache ist. Als Assembler wird nicht nur die Sprache selbst, sondern auch ihr Compiler benannt. Übersetzt der Compiler ein Assembler-Programm in die Maschinensprache, so nennt man den Vorgang "assemblieren". [...]


Quelle des Zitats: http://www.c64-wiki.de/index.php/Assembler


Zitate aus dem C64 Artikel: Crossassembler


Ein Cross-Assembler ist ein Assembler, der auf einer Hostplattform wie MS-DOS, Windows oder Linux läuft und Maschinencode für eine andere Zielplattform (z.B. für den C64) erzeugt. [...]

Quelle des Zitats: http://www.c64-wiki.de/index.php/Crossassembler


Mit Aufruf dieses Menüpunktes wird ein Cross Assembler Fenster geöffnet. Erstelle Programme sind nicht nur auf dem Emu64, sondern auch auf einen realen C64 lauffähig.


Bild: Cross Assembler Fenster (Editor/Compiler)


Dieses Fenster ist in zwei Teilen aufgesplittet. Im oberen Teil steht Ihnen ein Editor zum Erstellen von Quellcode zur Verfügung und es besteht die Möglichkeit das Programm direkt zu assemblieren.


Über den Menüpunkt Datei können Sie ihren Quelltext Laden oder Speichern. Zum Laden werden Dateiindexe mit .txt oder .asm angezeigt. Der Cross Assembler Editor speichert Quelltexte mit Dateiendung .asm ab. Das Dateiformat .asm entspricht einer Textdatei und kann auch mit anderen Texteditoren bearbeitet werden.


Der Editor verfügt über die normalen Eigenschaften eines Texteditors.


Der Cross Assembler ist ein 2 Pass Assembler der an TurboAss angelehnt ist. Ihren Programmcode  können Sie über den Menüpunkt Assemblieren compilieren, der dann in 6510 Maschinen Code übersetzt wird. Nach dem Compilierungsvorgang liegt das Programm im C64 Speicher. Sie können das Programm im C64 Bildschirm direkt starten und z.B. mit Hilfe des Emu64 Debugger ihr Programm auf Herz und Nieren überprüfen.  Außerdem ist es möglich das C64 Programm gleich als PRG zu exportieren.


Im unteren Teil gibt der Assembler Informationen zum Assemblieren aus.


Pseudo Ops

PseudoOpcodes sind Befehle, welche die Assemblierung beeinflussen. Nach jedem Pseudo Opcode muss

mindestens ein Leerzeichen (space) oder ein Tab folgen. Ansonsten gibt der Assembler eine Fehlermeldung aus.Vor einem Pseudo Opcode in einer Zeile darf auch keine Labeldefinition stehen. Diese sollte dann in einer extra Zeile darüber sein. Die Pseudo Opcodes können groß oder klein geschrieben werden.


Liste der Emu64 Cross Assembler Pseudo Opcodes

.BYTE

Werte werden 1:1 in den Speicher geladen.

.TEXT

Ein Text wird als Bytewerte in den Speicher geschrieben.

.MESSAGE

Textausgabe im 2ten Pass im unteren Fenster

.VAR

Variablenausgabe im Ausgabefenster

.SAVE

Speichert nach Assemblierung das Programm ab.

.BASIC

Erstellt automatisch einen Basicstart.

.BASICLOADER

Erzeugt einen BASIC-Loader der zum Abtippen gedacht ist.


Pseudo Opcode: .BYTE

Werte werden 1:1 in den Speicher geladen

Die Werte müssen im Wertebereich von 0 - 255 liegen. Die Werte werden alle durch ein Komma getrennt

Es können folgende Zahlenformate verwendet werden Dezimal,Hexadezimal ($), Binär (%), oder ein Zeichen ('A')


Beispiel zu .BYTE


Rasterbas

.BYTE 0,1,3,5,2,3,7,14,5,7,0,2


sprite

.byte %00110011,%00011011


.BYTE 1,$23,$11,%00110011,'Z'



Pseudo Opcode: .TEXT

Ein Text der zwischen den "" steht wird als Bytewerte in den Speicher geschrieben.


Beispiel zu .TEXT


formatstring

.text        "n:NEUE DISK,AA"



Pseudo Opcode: .MESSAGE

Hier wird der Text der zwischen den "" steht im 2ten Pass im unteren Fenster ausgegeben.


Beispiel zu .MESSAGE


.message "Starten Sie das Programm mit SYS 49152"



Ausgabe im unteren Fenster:


User Message: Starten Sie das Programm mit SYS 49152


Pseudo Opcode: .VAR

Hier wird am Ende, im unteren Ausgabefenster, der Inhalt der Variable ausgegeben.


Beispiel zu .VAR


*=$c000


vic = $d000


start

       lda #$00        

       sta vic+21

end


.var vic

.var start

.var end



Ausgabe im unteren Fenster:


vic 16Bit [$D000 (53248)]  8Bit [$00 (0)]

start 16Bit [$C000 (49152)]  8Bit [$00 (0)]

end 16Bit [$C005 (49157)]  8Bit [$05 (5)]


Pseudo Opcode: .SAVE

Speichert nach erfolgreicher Assemblierung das ausführbare Programm unter dem angegebenen Namen ab.


Beispiel zu .SAVE


       .save  c:\test.prg


*=$c000


start

       inc $d020

       jmp start



Nach erfolgreicher Assemblierung befindet sich eine Datei namens "test.prg" im Rootverzeichnis von C:\. Diese kann auch mit jedem anderem Emulator geöffnet werden.


Pseudo Opcode: .BASIC

Erstellt automatisch einen Basicstart.

Somit befindet sich das Programm dann ab $0801 und kann mit RUN gestartet werden. Das Aussehen der BASIC-Zeile kann beeinflusst werden. Die Zuweisung *= ist dann nicht mehr notwendig.


Der erste Parameter gibt an, welche BASIC Zeilennummer die Startzeile haben soll.

Der zweite Parameter gibt den Einsprungspunkt an. In der Basic Zeile sieht man dann SYS (Einsprungspunkt). Im dritten Parameter kann man einen kleinen Text angeben.


Beispiel zu .BASIC


       .basic 1974,start,"-= BY ANDONE [2007] =-"


start

       lda #$00

       sta $d020

       sta $d021

       rts



Nach erfolgreicher Assemblierung kann man im C64 List eingeben.


Dann sieht man:

1974 SYS2085 -= BY ANDONE [2007] =-


Pseudo Opcode: .BASICLOADER

Erzeugt einen BASIC-Loader der zum Abtippen gedacht ist.

Das Assembler Programm sollte nicht ab $0801 sein, sonst würde der BASIC-Loader sich selbst überschreiben, der Assembler würde aber trotzdem den Loader erzeugen. Übliche Loader Assembler Adressen sind $C000 und $9000.


Beispiel zu .BASICLOADER


       .basicloader  c:\schwarz.txt


*=$c000


start

       lda #$00

       sta $d020

       sta $d021

       rts



Nach erfolgreicher Assemblierung befindet sich eine Datei namens "schwarz.txt" im Rootverzeichnis C:\. Diese kann mit jedem Textprogramm geöffnet werden.


Diese Textdatei wird erzeugt:


10  C=0:D=0:Z=100

20  FOR A=0 TO 8

30  READ B:D=D+B:POKE 49152+A,B:C=C+1

40  IF A=8 THEN READ B:IF B<>D GOTO 70

50  IF C<10 GOTO 90

55  IF A=8 THEN PRINT "ALLES OK":END

60  READ B:IF B=D GOTO 80

70  PRINT "CHECKSUMMEN FEHLER IN";Z:END

80  C=0:D=0:Z=Z+1

90  NEXT:PRINT "ALLES OK"

100 DATA 169,0,141,32,208,141,33,208,96,1028


In den Data Zeilen befindet sich das eigentliche Programm. Der Assembler erzeugt auch Checksummen damit Fehler, die beim Abtippen entstanden sind, erkannt und angezeigt werden.


Copyright © 2009 - 2010, Thorsten Kattanek

Created with the Freeware Edition of HelpNDoc: Full featured multi-format Help generator