AND (RAUTE)$nn
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | 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 | ||
1 | PC | R | Lese Befehl, inkrementiere PC |
2 | PC | R | lese Wert, inkrementiere PC |
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
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