Die gute alte Highscore. Was täten wir nur ohne Sie. Die Highscore macht das Spiel erst zum Wettbewerb. Wie aber sage ich es meinem Computer in 6502 Assembler.
Ja, wie kann ich in 6502 Maschinensprache zwei beliebig große Zahlen miteinander vergleichen?
So geht’s:
War eine kleine Übung am Sonntag morgen. Hat jemand eine bessere Idee? Anregungen nehme ich gerne an!
26. Juli 2013 at 2:55 pm
ich würde es in Deinem Kontext ungefähr so machen (wenn die Zahlen tatsächlich Motorolaformat (Highbyte links) haben sollten, was beim 6502 eher unüblich ist…)
start
ldy #$FA ; -> 6 steps to zero… $FA = -6
check
lda (zahl1-$FA), y
cmp (zahl2-$FA), y
bne leave
iny
bne check
equal
tya
brk
leave
bcs greater
lda #FF
brk
greater
lda #1
brk
Ergebnis im Akku:
0 -> gleich, >0 Zahl1 größer, <0 Zahl1 kleiner
Vorteil: Das Ergebnis ist mit beq/bmi leichter auszuwerten als Dein 1,2,3…
Grüße!
5. August 2013 at 7:27 pm
Danke dir. Klar: Bei der Rückgabe irgendwelcher Zahlen als index, müsste man zur Auswertung eine sehr viel Höherern Aufwand betreiben, als wenn mann einfach die Statusregister mittels der Branch Befehle auswertet. Ich habe etwas ähnliches in dem folgenden Beispiel schon mal ausprobiert:
http://retrozock.com/2013/04/09/6502-lean-code-durch-sparsame-flags/