Titelbild Mikrocontroller

B-Befehle


oben BCLR - Bit Clear in SREG

Syntax: BCLR s
Funktion: Löscht einzelne Flags im Status-Register SREG.
Operation: SREG(s) ← 0
Operanden: 0 ≤ s ≤ 7
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 1001 0100 1sss 1000

Flags im Status-Register (SREG):
ITH S V N Z C
I: Wird mit dem Befehl BCLR 7 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
T: Wird mit dem Befehl BCLR 6 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
H: Wird mit dem Befehl BCLR 5 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
S: Wird mit dem Befehl BCLR 4 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
V: Wird mit dem Befehl BCLR 3 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
N: Wird mit dem Befehl BCLR 2 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
Z: Wird mit dem Befehl BCLR 1 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.
C: Wird mit dem Befehl BCLR 0 gelöscht, bei anderen BCLR Befehlen bleibt das Flag unverändert.

Beispiel:
bclr 0    ;Löscht das Carry-Flag

bclr 7    ;Sperrt alle Interrupts

oben BLD - Bit Load from the T-Flag in SREG to a Bit in Register

Syntax: BLD Rd,b
Funktion: Kopiert das T Flag aus dem Status-Register (SREG) in das Bit b im Register Rd.
Operation: Rd(b) ← T
Operanden: 0 ≤ d ≤ 31, 0 ≤ b ≤ 7
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 1111 100d dddd 0bbb

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
bst r1,3    ;Speichert Bit 3 aus R1 in das T-Flag

bld r0,4    ;Speichert das T-Flag in das Bit 4 von R0

oben BRBC - Branch if Bit in SREG is Cleared

Syntax: BRBC s,k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet ein einzelnes Bit im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Bit gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben.
Operation: (a) Wenn SREG(s) = 0, PC ← PC + k + 1
(b) Wenn SREG(s) = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63, 0 ≤ s ≤ 7
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk ksss

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 1         ;Löschen des Z-Flags
    brbc 1,null    ;Verzweigen zum Label null, 
                   ;wenn Z-Flag gelöscht.
    ...

null:    nop       ;Verzweigungsziel, Leerbefehl ...

oben BRBS - Branch if Bit in SREG is Set

Syntax: BRBS s,k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet ein einzelnes Bit im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Bit gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben.
Operation: (a) Wenn SREG(s) = 1, PC ← PC + k + 1
(b) Wenn SREG(s) = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63, 0 ≤ s ≤ 7
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk ksss

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 0        ;Setzt das Carry-Flag
    brbs 0,eins   ;Verzweigen zum Label eins, 
                  ;wenn C-Flag gesetzt.
    ...

eins:     nop     ;Verzweigungsziel, Leerbefehl ausführen...

oben BRCC - Branch if Carry Cleared

Syntax: BRCC k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Carry-Flag C im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 0,k.
Operation: (a) Wenn C = 0, PC ← PC + k + 1
(b) Wenn C = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k000

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 0        ;Löschen des C-Flags
    brcc null     ;Verzweigen zum Label null, 
                  ;wenn C-Flag gelöscht.
    ...

null:    nop      ;Verzweigungsziel, Leerbefehl ausführen...

oben BRCS - Branch if Carry Set

Syntax: BRCS k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Carry-Flag C im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 0,k.
Operation: (a) Wenn C = 1, PC ← PC + k + 1
(b) Wenn C = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k000

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 0        ;Setzt das Carry-Flag
    brcs eins     ;Verzweigen zum Label eins, 
                  ;wenn C-Flag gesetzt.
    ...

eins:     nop     ;Verzweigungsziel, Leerbefehl ausführen...

oben BREAK - Break

Syntax: BREAK
Funktion: Dieser Befehl wird nur im Zusammenhang mit dem On-Chip Debug System benutzt und kommt eigentlich im normalen Anwenderprogramm nicht vor. Wenn ein BREAK-Befehl ausgeführt wird, wird die AVR-CPU in den Stop-Modus gesetzt, so dass der On-Chip- Debugger Zugriff auf die internen Ressourcen bekommt. Wenn eines der Lock-Bits gesetzt ist oder eine der beiden Fuses JTAGEN oder OCDEN unprogrammiert ist, dann wird die CPU den BREAK-Befehl wie einen NOP-Befehl betrachten und nicht in den Stop-Modus gehen.
Der BREAK-Befehl ist nicht in allen AVR-Mikrocontrollern verfügbar.
Operation: On-Chip Debug System break
Operanden: keine
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 1001 0101 1001 1000

Flags im Status-Register (SREG):
ITHSVNZC
--------

oben BREQ - Branch if Equal

Syntax: BREQ k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Zero-Flag Z im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der Wert in den Registern Rd und Rr bei den genannten Befehlen gleich war, das Vorzeichen der Werte in Rd und Rr spielt dabei keine Rolle. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 1,k.
Operation: (a) Wenn Z = 1 (Rd = Rr), PC ← PC + k + 1
(b) Wenn Z = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k001

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r0,r1       ;Vergleich der Register R0 und R1
    breq gleich    ;Verzweigen zum Label gleich, wenn R0 = R1
    ...

gleich:    nop     ;Verzweigungsziel, Leerbefehl ausführen...

oben BRGE - Branch if Greater or Equal (Signed)

Syntax: BRGE k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Signed-Flag S im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der vorzeichenbehaftete Wert im Register Rd größer oder gleich dem vorzeichenbehafteten Wert im Register Rr bei den genannten Befehlen war. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 4,k.
Operation: (a) Wenn S = 0 (Rd ≥ Rr), PC ← PC + k + 1
(b) Wenn S = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k100

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r1,r2         ;Vergleichen der Register R1 und R2
    brge grgleich    ;Verzweigen zum Label grgleich, 
                     ;wenn R1 ≥ R2.
    ...

grgleich:    nop     ;Verzweigungsziel, Leerbefehl ...

oben BRHC - Branch if Half-Carry-Flag is Cleared

Syntax: BRHC k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Half-Carry-Flag H im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 5,k.
Operation: (a) Wenn H = 0, PC ← PC + k + 1
(b) Wenn H = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k101

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 5        ;Löschen des H-Flags
    brhc null     ;Verzweigen zum Label null, 
                  ;wenn das H-Flag gelöscht ist.
    ...
null:    nop      ;Verzweigungsziel, Leerbefehl ausführen...

oben BRHS - Branch if Half-Carry is Set

Syntax: BRHS k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Half-Carry-Flag H im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 5,k.
Operation: (a) Wenn H = 1, PC ← PC + k + 1
(b) Wenn H = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k101

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 5        ;Setzt das Half-Carry-Flag
    brhs eins     ;Verzweigen zum Label eins, 
                  ;wenn das H-Flag gesetzt ist.
    ...

eins: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BRID - Branch if Global Interrupt is Disabled

Syntax: BRID k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Global Interrupt-Flag I im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist (Flag gelöscht bedeutet, dass die Interrupts global gesperrt sind). Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 7,k.
Operation: (a) Wenn I = 0, PC ← PC + k + 1
(b) Wenn I = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k111

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 7        ;Löschen des I-Flags
    brid null     ;Verzweigen zum Label null, 
                  ;wenn das I-Flag gelöscht ist.
    ...

null: nop         ;Verzweigungsziel, Leerbefehl ausführen...

oben BRIE - Branch if Global Interrupt is Enabled

Syntax: BRIE k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Global Interrupt-Flag I im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist (Flag gesetzt bedeutet, dass die Interrupts global freigegeben sind). Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 7,k.
Operation: (a) Wenn I = 1, PC ← PC + k + 1
(b) Wenn I = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k111

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 7       ;Setzt das I-Flag
    brie eins    ;Verzweigen zum Label eins, 
                 ;wenn das I-Flag gesetzt ist.
    ...

eins: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BRLO - Branch if Lower (Unsigned)

Syntax: BRLO k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Carry-Flag C im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der Wert im Register Rd kleiner als der Wert im Register Rr bei den genannten Befehlen war. Das Vorzeichen der Werte in Rd und Rr spielt dabei keine Rolle. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 0,k.
Operation: (a) Wenn C = 1 (Rd < Rr), PC ← PC + k + 1
(b) Wenn C = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k000

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r0,r1        ;Vergleich der Register R0 und R1
    brlo kleiner    ;Verzweigen zum Label kleiner, 
                    ;wenn R0 < R1 ist.
    ...

kleiner: nop        ;Verzweigungsziel, Leerbefehl ...

oben BRLT - Branch if Less Than (Signed)

Syntax: BRLT k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Signed-Flag S im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der vorzeichenbehaftete Wert im Register Rd kleiner als der vorzeichenbehafteten Wert im Register Rr bei den genannten Befehlen war. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 4,k.
Operation: (a) Wenn S = 1 (Rd < Rr), PC ← PC + k + 1
(b) Wenn S = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k100

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r1,r2        ;Vergleichen der Register R1 und R2
    brlt kleiner    ;Verzweigen zum Label kleiner, 
                    ;wenn R1 < R2 ist.
    ...

kleiner: nop        ;Verzweigungsziel, Leerbefehl ...

oben BRMI - Branch if Minus

Syntax: BRMI k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Negativ-Flag N im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 2,k.
Operation: (a) Wenn N = 1, PC ← PC + k + 1
(b) Wenn N = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k010

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 2        ;Setzt das N-Flag
    brmi eins     ;Verzweigen zum Label eins, 
                  ;wenn das N-Flag gesetzt ist.
    ...

eins: nop         ;Verzweigungsziel, Leerbefehl ausführen...

oben BRNE - Branch if Not Equal

Syntax: BRNE k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Zero-Flag Z im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der Wert im Register Rd ungleich dem Wert im Register Rr bei den genannten Befehlen war. Das Vorzeichen der Werte in Rd und Rr spielt dabei keine Rolle. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 1,k.
Operation: (a) Wenn Z = 0 (Rd ≠ Rr), PC ← PC + k + 1
(b) Wenn Z = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k001

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r1,r2         ;Vergleichen der Register R1 und R2
    brne ungleich    ;Verzweigen zum Label ungleich, 
                     ;wenn R1 ≠ R2 ist.
    ...

ungleich: nop        ;Verzweigungsziel, Leerbefehl ...

oben BRPL - Branch if Plus

Syntax: BRPL k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Negativ-Flag N im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 2,k.
Operation: (a) Wenn N = 0, PC ← PC + k + 1
(b) Wenn N = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k010

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 2       ;Löscht das N-Flag
    brpl null    ;Verzweigen zum Label null, 
                 ;wenn das N-Flag gelöscht ist.
    ...

null: nop        ;Verzweigungsziel, Leerbefehl ausführen...


oben BRSH - Branch if Same or Higher (Unsigned)

Syntax: BRSH k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Carry-Flag C im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Wenn dieser Befehl unmittelbar auf einen der Befehle CP, CPI, SUB oder SUBI folgt, wird genau dann verzweigt, wenn der Wert im Register Rd größer oder gleich dem Wert im Register Rr bei den genannten Befehlen war. Das Vorzeichen der Werte in Rd und Rr spielt dabei keine Rolle. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 0,k.
Operation: (a) Wenn C = 0 (Rd ≥ Rr), PC ← PC + k + 1
(b) Wenn C = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k000

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    cp r0,r1         ;Vergleich der Register R0 und R1
    brsh grgleich    ;Verzweigen zum Label grgleich, 
                     ;wenn R0 ≥ R1 ist.
    ...

grgleich: nop        ;Verzweigungsziel, Leerbefehl ...

oben BRTC - Branch if T-Flag is Cleared

Syntax: BRTC k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das T-Flag im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 6,k.
Operation: (a) Wenn T = 0, PC ← PC + k + 1
(b) Wenn T = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k110

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 6       ;Löschen des T-Flags
    brtc null    ;Verzweigen zum Label null, 
                 ;wenn das T-Flag gelöscht ist.
    ...

null: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BRTS - Branch if T-Flag is Set

Syntax: BRTS k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das T-Flag im Status-Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 6,k.
Operation: (a) Wenn T = 1, PC ← PC + k + 1
(b) Wenn T = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k110

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 6       ;Setzt das T-Flag
    brts eins    ;Verzweigen zum Label eins, 
                 ;wenn das T-Flag gesetzt ist.
    ...

eins: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BRVC - Branch if Overflow Cleared

Syntax: BRVC k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Overflow-Flag V im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gelöscht ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBC 3,k.
Operation: (a) Wenn V = 0, PC ← PC + k + 1
(b) Wenn V = 1, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 01kk kkkk k011

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bclr 3       ;Löschen des V-Flags
    brvc null    ;Verzweigen zum Label null, 
                 ;wenn das V-Flag gelöscht ist.
    ...

null: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BRVS - Branch if Overflow Set

Syntax: BRVS k
Funktion: Bedingte relative Verzweigung. Dieser Befehl testet das Overflow-Flag V im Status- Register SREG und verzweigt zu einer relativ zum aktuellen PC angegebenen Adresse, wenn das Flag gesetzt ist. Die Verzweigung kann relativ zum aktuellen PC in beide Richtungen erfolgen und im Bereich zwischen -63 und +64 liegen. Der Parameter k wird als Zweierkomplement angegeben. Dieser Befehl entspricht dem Befehl BRBS 3,k.
Operation: (a) Wenn V = 1, PC ← PC + k + 1
(b) Wenn V = 0, PC ← PC + 1
Operanden: -64 ≤ k ≤ +63
Programmzähler: (a) PC ← PC + k + 1
(b) PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: (a) 2
(b) 1
16 Bit Operations Code: 1111 00kk kkkk k011

Flags im Status-Register (SREG):
ITHSVNZC
--------

Beispiel:
    bset 3       ;Setzt das V-Flag
    brvs eins    ;Verzweigen zum Label eins, 
                 ;wenn das V-Flag gesetzt ist.
    ...

eins: nop        ;Verzweigungsziel, Leerbefehl ausführen...

oben BSET - Bit Set in SREG

Syntax: BSET s
Funktion: Setzen eines einzelnen Flags im Status-Register SREG.
Operation: SREG(s) ← 1
Operanden: 0 ≤ s ≤ 7
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 1001 0100 0sss 1000

Flags im Status-Register (SREG):
ITH S V N Z C
I: Wird mit dem Befehl BSET 7 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
T: Wird mit dem Befehl BSET 6 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
H: Wird mit dem Befehl BSET 5 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
S: Wird mit dem Befehl BSET 4 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
V: Wird mit dem Befehl BSET 3 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
N: Wird mit dem Befehl BSET 2 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
Z: Wird mit dem Befehl BSET 1 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.
C: Wird mit dem Befehl BSET 0 gesetzt, bei anderen BSET Befehlen bleibt das Flag unverändert.

Beispiel:
bset 0    ;Setzt das Carry-Flag

bset 7    ;Gibt alle Interrupts frei


oben BST - Bit Store from Bit in Register to T-Flag in SREG

Syntax: BST Rd,b
Funktion: Speichert das Bit b aus dem Register Rd in das T-Flag im Status-Register SREG.
Operation: T ← Rd(b)
Operanden: 0 ≤ d ≤ 31, 0 ≤ b ≤ 7
Programmzähler: PC ← PC + 1
Words: 1 (2 Byte)
Zyklen: 1
16 Bit Operations Code: 1111 101d dddd 0bbb

Flags im Status-Register (SREG):
ITHSVNZC
-------
T: Das T-Flag wird gelöscht, wenn das Bit b im Register Rd gleich 0 ist, andernfalls wird es gesetzt.


Beispiel:
bst r1,2    ;Speichert das Bit 2 aus R1 in das T-Flag.
bld r0,4    ;Speichert das T-Flag in Bit 4 des Registers R0.

Impressum