Server read only due to being migrated.


Das Wiki ist im Nur-Lese-Modus, da es gerade migriert wird.

DEC $hhll, X

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: DEC $hhll,X
Opcode: $DE
Operand(en): $ll $hh
Anzahl der Bytes: 3
Befehlsgruppe: Arithmetik- und Logikbefehle
Adressierung: absolut X-indiziert
Beeinflusste Flags im Statusregister:
Negative-Flag
Zero-Flag
Taktzyklen: 7
1 PC R Lese Befehl, inkrementiere PC
2 PC R lese Adress-Lowbyte, inkrementiere PC
3 PC R hole Highbyte der Adresse,
addiere Indexregister X zum Adress-Lowbyte,
inkrementiere PC
4 Adresse + X R* lese von effektiver Adresse,
korrigiere Highbyte der effektiven Adresse
5 Adresse + X R lese erneut von effektiver Adresse
6 Adresse + X W schreibe bisherigen Wert auf effektive Adresse zurück
und führe Operation auf den Wert aus
7 Adresse + X W schreibe neuen Wert auf effektive Adresse
Anmerkung: * das Highbyte der effektiven Adresse könnte zu diesem Zeitpunkt ungültig sein


Der Assembler-Befehl DEC $hhll,X vermindert den Inhalt der Speicherzelle ($hhll+X) um 1.
Bei einer Verminderung des Wertes 0 wird der neue Wert wieder 255 ($ff).

Funktionsprinzip

Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Bedeutung der Buchstaben im Befehl

DEC DECrement Memory
Vermindere Speicherzelle

Beispiel

Siehe auch Beispiele bei DEC $ll.

; Diese Programm lässt den Bildschirmhintergrund flimmern.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms

           ldx #$01     ; Index-Register initialisieren
schleife   dec $d020,x  ; Vermindert den Inhalt von $d021 (Hintergrundfarbe) um eins.
           jmp schleife ; Endlosschleife

Speicherauszug:

.c000	 a2 01   	ldx #$01
.c002	 de 20 d0	dec $d020,x
.c003	 4c 02 c0	jmp $c002

Vergleich des Beispielprogramms mit BASIC

Für BASIC V2:

10 X=1
20 POKE 53280+X,PEEK(53280+X) - 1 AND 255: REM AUF BYTEWERT MASKIEREN 0-255
30 GOTO 20

Beispielprogramme