Emu64 Help Banner

Emu64 Portal Emu64 Forum Emu64 Download Emu64 Help
 


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


Rufst du diesen Menüpunkt auf, so öffnet sich ein Cross Assembler Fenster. Darin erstellte 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 dir ein Editor zum Erstellen von Quellcode zur Verfügung und du hast die Möglichkeit das Programm direkt zu assemblieren.

Über den Menüpunkt Datei kannst du deinen Quelltext Laden oder Speichern. Im Ladedialog werden nur Dateien mit Dateiindex .txt oder .asm angezeigt. Der Cross Assembler Editor speichert Quelltexte mit der 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. Deinen Programmcode kannst du über den Menüpunkt Assemblieren compilieren, dieser wird dann in 6510 Maschinen Code übersetzt. Nach dem Compilierungsvorgang liegt das Programm im C64 Speicher. Du kannst das Programm im C64 Bildschirm direkt starten und z.B. mit Hilfe des Emu64 Debugger dein 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. Du kannst folgende Zahlenformate verwenden: 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 Anführungszeichen ““ 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 „Starte das Programm mit SYS 49152“


Ausgabe im unteren Fenster:

User Message: Starte 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 kannst du auch mit jedem anderem C64 Emulator öffnen.

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 siehst du dann SYS (Einsprungspunkt). Im dritten Parameter kannst du einen kleinen Text angeben.

Beispiel zu .BASIC



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

start
lda #$00
sta $d020
sta $d021
rts



Nach erfolgreicher Assemblierung kannst du im C64 List eingeben.

Dann siehst du:
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.




Emu64 Handbuch V4.xx Navigation V4.xx: Inhaltsverzeichnis
Portal: old-archiv

Hilfetext für Emu64 bis Version 4.32.

de/old-archiv/emu64_v4/menuepunkt-cross_assembler.txt · Zuletzt geändert: 2013/04/20 11:26 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-NonCommercial-NoDerivs 3.0 Unported License
credits to Impressum