BNE $hhll
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | BNE $hhll |
Opcode: | $D0 |
Operand(en): | $nn |
Anzahl der Bytes: | 2 |
Befehlsgruppe: | Sprungbefehl |
Adressierung: | relativ |
Beeinflusste Flags im Statusregister: | |
keine | |
Taktzyklen: | 2 |
1 Extratakt bei Sprung | |
1 Extratakt bei Überschreitung einer Page-Grenze |
Der Assembler-Befehl BNE $hhll verzweigt zur Adresse $hhll (als neuer Wert des Programmzählers PC), wenn das Ergebnis der letzten Operation ungleich $00 ist, was mit Zero-Flag = 0 angezeigt wird.
Es ist bei der relativen Adressierung darauf zu achten, dass sich das Sprungziel innerhalb des gültigen Adressbereiches befindet!
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
BNE | Branch on Not Equal |
Verzweige bei Ungleichheit (<>0) |
Beispiel
; Dieses Programm wartet bis die Taste "S" gedrückt wurde. ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms PRA = $dc00 ; CIA#1 (Port Register A) DDRA = $dc02 ; CIA#1 (Data Direction Register A) PRB = $dc01 ; CIA#1 (Port Register B) DDRB = $dc03 ; CIA#1 (Data Direction Register B) start sei ; Interrupts sperren lda #%11111111 ; CIA#1 Port A = Ausgänge sta DDRA lda #%00000000 ; CIA#1 Port B = Eingänge sta DDRB lda #%11111101 ; Spalte 1 (COL1) der Matrix testen sta PRA loop lda PRB and #%00100000 ; Reihe 5 (ROW5) maskieren bne loop ; Warte bis "S" gedrückt cli ; Interrupts zulassen ende rts ; Zurück zu BASIC
Speicherauszug:
.c000 78 sei .c001 a9 ff lda #$ff .c003 8d 02 dc sta $dc02 .c006 a9 00 lda #$00 .c008 8d 03 dc sta $dc03 .c00b a9 fd lda #$fd .c00d 8d 00 dc sta $dc00 .c010 ad 01 dc lda $dc01 .c013 29 20 and #$20 .c015 d0 f9 bne $c010 .c017 58 cli .c018 60 rts
Vergleichbare BASIC-Anweisung
Für BASIC V2:
10 IF ER <> 0 GOTO 50 : REM Wenn Ergebnis ungleich 0, springe nach 50