Titelbild Mikrocontroller

M-Befehle


oben MOV - Copy Register

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):
ITHSVNZC
--------

Beispiel:
mov r3,r2    ;Kopiert R2 in R3

oben MOVW - Copy Register Word

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):
ITHSVNZC
--------

Beispiel:
movw r3:r2,r1:r0    ;Kopiert das Paar R1:R0 in das Paar R3:R2

oben MUL - Multiply Unsigned

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):
ITHSVN Z C
------
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

oben MULS - Multiply Signed

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):
ITHSVN Z C
------
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

oben MULSU - Multiply Signed with unsigned

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):
ITHSVN Z C
------
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.

Impressum