NOP
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | 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
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