CLI
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | CLI |
Opcode: | $58 |
Anzahl der Bytes: | 1 |
Befehlsgruppe: | Flaggen-Befehl |
Adressierung: | implizit |
Beeinflusste Flags im Statusregister: | |
Interrupt-Flag | |
Taktzyklen: | 2 |
Der Assembler-Befehl CLI löscht das Interrupt-Flag und lässt maskierbare Interrupts (IRQ) wieder zu.
Mit dem Assembler-Befehl SEI können Interrupts gesperrt werden (nicht jedoch NMIs).
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
CLI | CLear Interrupt flag |
Lösche Unterbrechungs-Flagge |
Beispiel
; Dieses Programm erweitert die originale Interrupt-Service-Routine. ; Solange der Feuerknopf am Joystick des Control-Port 2 gedrückt wird, flimmert der Bildschirmrahmen. ; Nach der Rückkehr ins Basic ist die Routine natürlich immer noch aktiv. ; 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 lda #%00010000 ; Feuerknopf-Bit des Control-Port 2 maskieren bit $dc00 ; Bitweise UND-Verknüpfung dem Inhalt des Registers PRA des CIA 1 bne nicht ; wenn Feuerknopf nicht gedrückt --> Sprung in alte IRQ-Routine inc $d020 ; wenn Feuerknopf gedrückt --> VIC-Register Rahmenfarbe um 1 erhöhen nicht 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 a9 10 lda #$10 .c00f 2c 00 dc bit $dc00 .c012 d0 03 bne $c017 .c014 ee 20 d0 inc $d020 .c017 4c 31 ea jmp $ea31
Vergleich des Beispielprogramms mit Basic
Keine vergleichbare BASIC-Befehlsfolge vorhanden.