BCLR - Bit Clear in SREG
BLD - Bit Load from the T-Flag in SREG to a Bit in Register
BRBC - Branch if Bit in SREG is Cleared
BRBS - Branch if Bit in SREG is Set
BRCC - Branch if Carry Cleared
BRCS - Branch if Carry Set
BREAK - Break
BREQ - Branch if Equal
BRGE - Branch if Greater or Equal (Signed)
BRHC - Branch if Half-Carry-Flag is Cleared
BRHS - Branch if Half-Carry is Set
BRID - Branch if Global Interrupt is Disabled
BRIE - Branch if Global Interrupt is Enabled
BRLO - Branch if Lower (Unsigned)
BRLT - Branch if Less Than (Signed)
BRMI - Branch if Minus
BRNE - Branch if Not Equal
BRPL - Branch if Plus
BRSH - Branch if Same or Higher (Unsigned)
BRTC - Branch if T-Flag is Cleared
BRTS - Branch if T-Flag is Set
BRVC - Branch if Overflow Cleared
BRVS - Branch if Overflow Set
BSET - Bit Set in SREG
BST - Bit Store from Bit in Register to T-Flag in SREG
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 |
| I | T | H | 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. |
bclr 0 ;Löscht das Carry-Flag bclr 7 ;Sperrt alle Interrupts
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bclr 1 ;Löschen des Z-Flags
brbc 1,null ;Verzweigen zum Label null, wenn Z-Flag gelöscht.
...
null: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 0 ;Setzt das Carry-Flag
brbs 0,eins ;Verzweigen zum Label eins, wenn C-Flag gesetzt.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bclr 0 ;Löschen des C-Flags
brcc null ;Verzweigen zum Label null, wenn C-Flag gelöscht.
...
null: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 0 ;Setzt das Carry-Flag
brcs eins ;Verzweigen zum Label eins, wenn C-Flag gesetzt.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r0,r1 ;Vergleich der Register R0 und R1
breq gleich ;Verzweigen zum Label gleich, wenn R0 = R1
...
gleich: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r1,r2 ;Vergleichen der Register R1 und R2
brge grgleich ;Verzweigen zum Label grgleich, wenn R1 ≥ R2.
...
grgleich: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 7 ;Setzt das I-Flag
brie eins ;Verzweigen zum Label eins, wenn das I-Flag gesetzt ist.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r0,r1 ;Vergleich der Register R0 und R1
brlo kleiner ;Verzweigen zum Label kleiner, wenn R0 < R1 ist.
...
kleiner: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r1,r2 ;Vergleichen der Register R1 und R2
brlt kleiner ;Verzweigen zum Label kleiner, wenn R1 < R2 ist.
...
kleiner: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 2 ;Setzt das N-Flag
brmi eins ;Verzweigen zum Label eins, wenn das N-Flag gesetzt ist.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r1,r2 ;Vergleichen der Register R1 und R2
brne ungleich ;Verzweigen zum Label ungleich, wenn R1 ≠ R2 ist.
...
ungleich: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
cp r0,r1 ;Vergleich der Register R0 und R1
brsh grgleich ;Verzweigen zum Label grgleich, wenn R0 ≥ R1 ist.
...
grgleich: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 6 ;Setzt das T-Flag
brts eins ;Verzweigen zum Label eins, wenn das T-Flag gesetzt ist.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
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...
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - |
bset 3 ;Setzt das V-Flag
brvs eins ;Verzweigen zum Label eins, wenn das V-Flag gesetzt ist.
...
eins: nop ;Verzweigungsziel, Leerbefehl ausführen...
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 |
| I | T | H | 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. |
bset 0 ;Setzt das Carry-Flag bset 7 ;Gibt alle Interrupts frei
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 |
| I | T | H | S | V | N | Z | C |
|---|---|---|---|---|---|---|---|
| - | ↔ | - | - | - | - | - | - |
| T: | Das T-Flag wird gelöscht, wenn das Bit b im Register Rd gleich 0 ist, andernfalls wird es gesetzt. |
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.