NOP

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: NOP
Opcode: $EA
Anzahl der Bytes: 1
Befehlsgruppe: Spezialbefehl
Adressierung: implizit
Beeinflusste Flags im Statusregister:
keine
Taktzyklen: 2


Der Assembler-Befehl NOP hat, bis auf zwei verbrauchte Taktzyklen, keine Funktion. Er verändert weder Register noch Speicherzellen.
Der Befehl wird für Timing-Zwecke und als Platzhalter im Code verwendet.

Funktionsprinzip

Ass befehl ea.gif

Bedeutung der Buchstaben im Befehl

NOP No OPeration
keine Funktion

Beispiel

; Dieses Programm erzeugt schräge schwarz-weiß-Balken, die sich am Bildschirm bewegen.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms

           sei              ; Interrupts sperren
           lda $d020        ; VIC-Register für Rahmenfarbe
           pha              ; Rahmenfarbe am Stapel sichern

           lda $d011        ; VIC-Steuerregister
           and #%11101111   ; Bit 4 löschen: Bildschirm aus
           sta $d011

init       ldx #$00         ; Rahmenfarbe schwarz
loop       stx $d020

           lda $dc01        ; CIA 1 Datenport B (Tastatur-Matrix)
           cmp #$ff         ; Warte auf Tastendruck
           bne taste

           inx              ; Rahmenfarbe weiß
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           cpx #$02         ; prüfe, ob Rahmenfarbe rot
           bne loop         ;   nein -> loop
           jmp init         ;   ja   -> init

taste      lda $d011        ; VIC-Steuerregister
           ora #%00010000   ; Bit 4 setzen: Bildschirm an
           sta $d011

           pla              ; Rahmenfarbe holen ...
           sta $d020        ; ... und wiederherstellen
           cli              ; Interrupts freigeben 
           rts              ; Rücksprung

Speicherauszug:

.c000  78        sei
.c001  ad 20 d0  lda $d020
.c004  48        pha
.c005  ad 11 d0  lda $d011
.c008  29 ef     and #$ef
.c00a  8d 11 d0  sta $d011
.c00d  a2 00     ldx #$00
.c00f  8e 20 d0  stx $d020
.c012  ad 01 dc  lda $dc01
.c015  c9 ff     cmp #$ff
.c017  d0 0d     bne $c026
.c019  e8        inx
.c01a  ea        nop
.c01b  ea        nop
.c01c  ea        nop
.c01d  ea        nop
.c01e  ea        nop
.c01f  e0 02     cpx #$02
.c021  d0 ec     bne $c00f
.c023  4c 0d c0  jmp $c00d
.c026  ad 11 d0  lda $d011
.c029  09 10     ora #$10
.c02b  8d 11 d0  sta $d011
.c02e  68        pla
.c02f  8d 20 d0  sta $d020
.c032  58        cli
.c033  60        rts

Beispielprogramme