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
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
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
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 ...
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...
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...
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...
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 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
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...
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 ...
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...
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...
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...
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...
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 ...
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 ...
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...
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 ...
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...
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 ...
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...
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...
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...
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...
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
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.