BIT Befehl

Moderator: Rockford

Antworten
Benutzeravatar
Dr. Irata
Beiträge: 1265
Registriert: 24.08.2021 14:40
Has thanked: 182 times
Been thanked: 417 times
Kontaktdaten:

BIT Befehl

Beitrag von Dr. Irata »

der BIT Befehl ist irgendwie mystisch… wozu genau braucht man den eigentlich? Also welche zwingend praktischen Anwendung gibt es, wo man BIT einsetzen muss??

HiassofT
Beiträge: 190
Registriert: 17.08.2021 11:03
Wohnort: Salzburg, Austria
Has thanked: 20 times
Been thanked: 96 times
Kontaktdaten:

Re: BIT Befehl

Beitrag von HiassofT »

BIT ist sehr praktisch wenn man nur checken möchte ob bit 7 oder 6 einen gewissen Wert haben oder ob das AND Ergebnis mit dem Wert im Akkumulator 0 ist oder nicht - ohne den Wert im Akkumulator zu ändern.

Es ist quasi ein AND Befehl mit Zusatzfunktion (N und V werden auf Bit 7/6 des operands gesetzt) ohne den Nachteil dass der Akkumulator dadurch verändert wird.

Ich hab den Befehl oft verwendet um zB bit 7/6 eines Hardware-Registers zu checken.

Auch sehr praktisch: BIT ZP-Adresse bzw BIT 16bit-Adresse kann man verwenden um fast ohne Nebenwirkungen (bis auf die Flags) 1 oder 2 bytes Code zu überspringen ohne ein BEQ/BNE/JMP zu brauchen (spart Speicherplatz).

zB:

Code: Alles auswählen

  ...  irgendeine Routine die bei fehler JMP/BEQ/BNE ERROR macht
  LDA #0
  .BYTE $2C
ERROR:
  LDA #1
  RTS
Wenn die Routine normal durchläuft macht sie "LDA #0", "BIT $01A9", "RTS" - bei einem Fehler aber "LDA #1", "RTS" - somit kriegt man einfach konsistente Fehlercodes als Returnwert in A.

Das kann man natürlich auch weiter kaskadieren, siehe zB meinen Highspeed SIO code https://github.com/HiassofT/highspeed-s ... rc#L80-L93

so long,

Hias

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast