AND (RAUTE)$nn

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: AND #$nn
Opcode: $29
Operand(en): $nn
Anzahl der Bytes: 2
Befehlsgruppe: Arithmetik und Logikbefehl
Adressierung: unmittelbar
Beeinflusste Flags im Statusregister:
Negative-Flag
Zero-Flag
Taktzyklen: 2


Der Assembler-Befehl AND #$nn führt eine bitweise UND-Verknüpfung mit dem Akkumulator und einer Konstanten $nn durch.
Das Ergebnis wird im Akkumulator gespeichert.
Dieser Befehl eignet sich besonders zum Löschen (Ausmaskieren) einzelner Bits.

Wahrheitstabelle der UND-Verknüpfung

Das Ergebnis ist bei der UND-Verknüpfung gleich 1, wenn beide Bits gesetzt (1) sind.

0 0 = 0
0 1 = 0
1 0 = 0
1 1 = 1

Funktionsprinzip

Ass befehl 29.gif

Bedeutung der Buchstaben im Befehl

AND AND with Accumulator
Bitweise UND-Verknüpfung mit Akkumulator

Beispiel

; Dieses Programm schaltet den Bitmap-Modus ein.
; Nach einem Tastendruck wird wieder in den Textmodus gewechselt.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms

GETIN = $ffe4

*=$c000

start    lda $d011       ; Grafikmodus ein 
         ora #%00100000  ; Bit 5 von $D011 setzen
         sta $d011       ; (Achtung, verstellt ggf. Rasterzeilen-Interrupt)

eingabe  jsr GETIN       ; Zeichen einlesen
         beq eingabe     ; warte auf Tastendruck

         lda $d011       ; Grafikmodus aus
         and #%11011111  ; Bit 5 von $D011 löschen
         sta $d011

         rts             ; Rücksprung	

Speicherauszug:

.c000  ad 11 d0        lda $d011
.c003  09 20           ora #$20
.c005  8d 11 d0        sta $d011
.c008  20 e4 ff        jsr $ffe4
.c00b  f0 fb           beq $c008
.c00d  ad 11 d0        lda $d011
.c010  29 df           and #$df
.c012  8d 11 d0        sta $d011
.c015  60              rts

Vergleich des Beispielprogramms mit BASIC

Für BASIC V2:

10 POKE 53265, PEEK (53265) OR 32 
20 GET A$: IF A$="" THEN 20
30 POKE 53265, PEEK (53265) AND 223 

Beispielprogramme