Syntax: |
MOV Rd,Rr
|
Funktion: |
Dieser Befehl kopiert den Wert des Registers Rr in das Register Rd. Das Register Rr
wird dabei nicht verändert.
|
Operation: |
Rd ← Rr
|
Operanden: |
0 ≤ d ≤ 31, 0 ≤ r ≤ 31
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
1
|
16 Bit Operations Code: |
0010 11rd dddd rrrr
|
Flags im Status-Register (SREG):
Beispiel:
mov r3,r2 ;Kopiert R2 in R3
Syntax: |
MOVW Rd+1:Rd,Rr+1:Rr
|
Funktion: |
Dieser Befehl kopiert den Wert eines Registerpaares in ein anderes Registerpaar. Das
Registerpaar Rr+1:Rr wird dabei nicht verändert.
Dieser Befehl ist nicht in allen AVR - Mikrocontrollern verfügbar.
|
Operation: |
Rd+1:Rd ← Rr+1:Rr
|
Operanden: |
d ε {0,2,4,...,30}, r ε {0,2,4,...,30}
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
1
|
16 Bit Operations Code: |
0000 0001 dddd rrrr
|
Flags im Status-Register (SREG):
Beispiel:
movw r3:r2,r1:r0 ;Kopiert das Paar R1:R0 in das Paar R3:R2
Syntax: |
MUL Rd,Rr
|
Funktion: |
Dieser Befehl multipliziert eine 8 Bit - Zahl mit einer 8 Bit - Zahl, das Ergebnis ist 16 Bit
lang.
Der Multiplikand Rd und der Multiplikator Rr sind vorzeichenlose Zahlen. Das 16 Bit -
Ergebnis ist ebenfalls vorzeichenlos. Das Ergebnis wird im Register R1 (High-Byte) und
R0 (Low-Byte) abgelegt.
Wenn als Rd oder Rr die Register R0 oder R1 ausgewählt werden, so werden diese
Register mit dem Ergebnis überschrieben.
Dieser Befehl ist nicht in allen Bausteinen verfügbar.
|
Operation: |
R1:R0 ← Rd x Rr
|
Operanden: |
0 ≤ d ≤ 31, 0 ≤ r ≤ 31
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
2
|
16 Bit Operations Code: |
1001 11rd dddd rrrr
|
Flags im Status-Register (SREG):
Z: |
Das Z-Flag wird gesetzt, wenn das Ergebnis 0000h ist, andernfalls wird das Flag
gelöscht.
|
C: |
Das C-Flag wird gesetzt, wenn das Bit 15 des Ergebnisses gesetzt ist, andernfalls
wird das Carry-Flag gelöscht.
|
Beispiel:
mul r5,r4 ;R5 mit R4 multiplizieren
movw r5:r4,r1:r0 ;Ergebnis in R5:R4 zurück schreiben
Syntax: |
MULS Rd,Rr
|
Funktion: |
Dieser Befehl multipliziert eine 8 Bit - Zahl mit einer 8 Bit - Zahl, das Ergebnis ist 16 Bit
lang.
Der Multiplikand Rd und der Multiplikator Rr sind vorzeichenbehaftete Zahlen. Das 16 Bit
- Ergebnis ist ebenfalls vorzeichenbehaftet. Das Ergebnis wird im Register R1 (high
Byte) und R0 (low Byte) abgelegt.
Dieser Befehl ist nicht in allen Bausteinen verfügbar. Als Operanden können nur die
Register R16 bis R31 ausgewählt werden.
|
Operation: |
R1:R0 ← Rd x Rr
|
Operanden: |
16 ≤ d ≤ 31, 16 ≤ r ≤ 31
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
2
|
16 Bit Operations Code: |
0000 0010 dddd rrrr
|
Flags im Status-Register (SREG):
Z: |
Das Z-Flag wird gesetzt, wenn das Ergebnis 0000h ist, andernfalls wird das Flag
gelöscht.
|
C: |
Das C-Flag wird gesetzt, wenn das Bit 15 des Ergebnisses gesetzt ist, andernfalls
wird das Carry-Flag gelöscht.
|
Beispiel:
mul r21,r20 ;R21 mit R20 multiplizieren
movw r21:r20,r1:r0 ;Ergebnis in R21:R20 zurück schreiben
Syntax: |
MULSU Rd,Rr
|
Funktion: |
Dieser Befehl multipliziert eine 8 Bit - Zahl mit einer 8 Bit - Zahl, das Ergebnis ist 16 Bit
lang.
Der Multiplikand Rd ist eine vorzeichenbehaftete Zahl, der Multiplikator Rr ist eine
vorzeichenlose Zahl. Das 16 Bit - Ergebnis ist ebenfalls vorzeichenbehaftet. Das
Ergebnis wird im Register R1 (High-Byte) und R0 (Low-Byte) abgelegt.
Dieser Befehl ist nicht in allen Bausteinen verfügbar. Als Operanden können nur die
Register R16 bis R23 ausgewählt werden.
|
Operation: |
R1:R0 ← Rd x Rr (mit Vorzeichen ? mit Vorzeichen x ohne Vorzeichen )
|
Operanden: |
16 ≤ d ≤ 23, 16 ≤ r ≤ 23
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
2
|
16 Bit Operations Code: |
0000 0011 0ddd 0rrr
|
Flags im Status-Register (SREG):
Z: |
Das Z-Flag wird gesetzt, wenn das Ergebnis 0000h ist, andernfalls wird das Flag
gelöscht.
|
C: |
Das C-Flag wird gesetzt, wenn das Bit 15 des Ergebnisses gesetzt ist, andernfalls
wird das Carry-Flag gelöscht.
|
Beispiel:
mulsu r23,r22 ;Multipliziert R23 und R22. Ergebnis in R1:R0.