BMI & BPL prüfen Bit 7 automatisch

  • BMI & BPL prüfen Bit 7 automatisch

    Hallo zusammen,

    da ich meine Routine zur CIA-Uhrzeitausgabe fertig habe (und endlich läuft, wie ich es mir vorstelle), bin auf Verhalten gestoßen, welches nur in der Magic Disk CIA Kurs gestoßen bin. "Alles über Maschinensprache" bzw die C64-Wiki erwähnen das Verhalten nicht. Die beiden Befehle BMI & BPL prüfen auf ein gesetzes 7 Bit einer Speicherstelle und springen entsprechend - bis jetzt wußte ich nur, dass der BIT-Befehl das 7. Bit "prüfbar macht". In meinem Beispiel wird bei gesetzten 7. Bit zu .am gesprungen.

    Hat jemand eine Erkärung hierfür oder habe ich einen Denkfehler?


    Quellcode

    1. ;Stunden anzeigen
    2. lda $DD0B ;Stundenbyte laden (Uhr wird gleichzeitig angehalten / läuft intern weiter)
    3. bpl .am ;N-Flag nicht gesetzt springe nach .am (24H-Flag gesetzt PM / ansonsten AM)
    4. and #%00011111 ;Bit 4-7 ausblenden
    Wer schreit, denkt nicht !

    www.dmhas.de / nas.dmhas.de/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DMHas ()

  • DMHas schrieb:

    Die beiden Befehle BMI & BPL prüfen gesetzen 7 Bit einer Speicherstelle und springen entsprechend
    Nicht BMI und BPL prüfen die Speicherstelle, sondern der vorausgegangene LDA-Befehl setzt/löscht das N-Bit wie auch LDX, LDY und die mathematischen/logischen Befehle ADC, AND usw.

    vgl. Beschreibung des LDA-Befehls unter "Beeinflusste Flags im Statusregister: Negativ-Flag"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von M. J. ()

  • Das ist absolut nichts ungewöhnliches. Insofern das N-Flag von einem Befehl beeinflußt werden kann, wird das immer von Bit 7 des Ergebnisses gemacht.

    Allerdings prüfen in deinem Beispiel nicht BPL oder BMI die Speicherzelle, das macht der LDA-Befehl und setzt das N-Flag beim Transfer "Speicher" -> "Akku" entsprechend Bit 7.

    Edit: M.J. war schneller. ^^
  • Danke für die Erklärung! Das habe ich so nicht heraus gelesen aus der Wiki. Jetzt ist mir einiges klarer.

    Update: Hier (C64-Wiki - Statusregister) wird es sehr schön erklärt. Hätte ich eher mal nachlesen sollen. :haue:
    Wer schreit, denkt nicht !

    www.dmhas.de / nas.dmhas.de/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DMHas ()