Zahlenspielereien die Vierte

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:

Bildschirmfoto 2013-06-30 um 18.04.46

 War eine kleine Übung am Sonntag morgen. Hat jemand eine bessere Idee? Anregungen nehme ich gerne an!
Werbung

2 responses to “Zahlenspielereien die Vierte

  • Irgendwer

    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!

  • Bert

    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/

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: