SEI
Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: | SEI | ||
Opcode: | $78 | ||
Anzahl der Bytes: | 1 | ||
Befehlsgruppe: | Flaggen-Befehl | ||
Adressierung: | implizit | ||
Beeinflusste Flags im Statusregister: | |||
Interrupt-Flag | |||
Taktzyklen: | 2 | ||
1 | PC | R | Lese Befehl, inkrementiere PC |
2 | PC | R | Lese nächstes Befehlsbyte (und verwerfe es), führe Operation durch |
Der Assembler-Befehl SEI setzt das Interrupt-Flag und unterbindet alle Interrupts (IRQ) bis auf den NMI.
Der Assembler-Befehl CLI hebt diese Sperre wieder auf.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
SEI | SEt Interrupt flag |
Setzte Unterbrechungs-Flagge |
Beispiel
; Dieses Programm erweitert die originale Interrupt-Service-Routine um den Befehl INC $d020. ; Dadurch flimmert der Rahmen, auch nach der Rückkehr ins BASIC, immer noch. ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms sei ; Interrupts sperren lda #<isr sta $0314 ; Vektor für neue Interrupt-Service-Routine ändern lda #>isr sta $0315 cli ; Interrupts zulassen rts isr inc $d020 ; VIC-Register Rahmenfarbe um 1 erhöhen jmp $ea31 ; Sprung in die alte IRQ-Routine
Speicherauszug:
.c000 78 sei .c001 a9 0d lda #$0d .c003 8d 14 03 sta $0314 .c006 a9 c0 lda #$c0 .c008 8d 15 03 sta $0315 .c00b 58 cli .c00c 60 rts .c00d ee 20 d0 inc $d020 .c010 4c 31 ea jmp $ea31
Vergleich des Beispielprogramms mit Basic
Keine vergleichbare BASIC-Befehlsfolge vorhanden.