Mnemonik |
Operanden |
Beschreibung |
Operation |
Flags |
Takte |
MOV
|
Rd, Rr |
Kopiert von Register nach Register |
Rd ← Rr |
keines |
1 |
MOVW
(1) |
Rd, Rr |
Kopiert von Registerpaar nach Registerpaar |
Rd+1:Rd ← Rr+1:Rr |
keines |
1 |
LDI
|
Rd, K (3) |
Register mit Konstante laden |
Rd ← K |
keines |
1 |
LDS
(1) |
Rd, k |
Register mit Konstante aus Datenspeicher laden |
Rd ← (k) |
keines |
2 |
LD
(2) |
Rd, X |
Register indirekt laden |
Rd ← (X) |
keines |
2 |
LD
(2) |
Rd, X+ |
Register indirekt laden und Zeiger anschließend inkrementieren |
Rd ← (X), X ← X + 1 |
keines |
2 |
LD
(2) |
Rd, -X |
Register indirekt laden und Zeiger vorher dekrementieren |
X ← X - 1, Rd ← (X) |
keines |
2 |
LD
(2) |
Rd, Y |
Register indirekt laden |
Rd ← (Y) |
keines |
2 |
LD
(2) |
Rd, Y+ |
Register indirekt laden und Zeiger anschließend inkrementieren |
Rd ← (Y), Y ← Y + 1 |
keines |
2 |
LD
(2) |
Rd, -Y |
Register indirekt laden und Zeiger vorher dekrementieren |
Y ← Y - 1, Rd ← (Y) |
keines |
2 |
LDD
(1) |
Rd, Y+q |
Register indirekt mit Verschiebung laden |
Rd ← (Y + q) |
keines |
2 |
LD
(2) |
Rd, Z |
Register indirekt laden |
Rd ← (Z) |
keines |
2 |
LD
(2) |
Rd, Z+ |
Register indirekt laden und Zeiger anschließend inkrementieren |
Rd ← (Z), Z ← Z + 1 |
keines |
2 |
LD
(2) |
Rd, -Z |
Register indirekt laden und Zeiger vorher dekrementieren |
Z ← Z - 1, Rd ← (Z) |
keines |
2 |
LDD
(2) |
Rd, Z+q |
Register indirekt mit Verschiebung laden |
Rd ← (Z + q) |
keines |
2 |
STS
(1) |
k, Rr |
Register in Datenspeicher speichern |
(k) ← Rr |
keines |
2 |
ST
(2) |
X, Rr |
Register indirekt speichern |
(X) ← Rr |
keines |
2 |
ST
(2) |
X+, Rr |
Register indirekt speichern und X danach inkrementieren |
(X) ← Rr, X ← X + 1 |
keines |
2 |
ST
(2) |
-X, Rr |
Register indirekt speichern und X vorher dekrementieren |
X ← X - 1, (X) ← Rr |
keines |
2 |
ST
(2) |
Y, Rr |
Register indirekt speichern |
(Y) ← Rr |
keines |
2 |
ST
(2) |
Y+, Rr |
Register indirekt speichern und Y danach inkrementieren |
(Y) ← Rr, Y ← Y + 1 |
keines |
2 |
ST
(2) |
-Y, Rr |
Register indirekt speichern und Y vorher dekrementieren |
Y ← Y - 1, (Y) ← Rr |
keines |
2 |
STD
(1) |
Y+q, Rr |
Register indirekt mit Verschiebung speichern |
(Y + q) ← Rr |
keines |
2 |
ST
(2) |
Z, Rr |
Register indirekt speichern |
(Z) ← Rr |
keines |
2 |
ST
(2) |
Z+, Rr |
Register indirekt speichern und Z danach inkrementieren |
(Z) ← Rr, Z ← Z + 1 |
keines |
2 |
ST
(2) |
-Z, Rr |
Register indirekt speichern und Z vorher dekrementieren |
Z ← Z - 1, (Z) ← Rr |
keines |
2 |
STD
(1) |
Z+q, Rr |
Register indirekt mit Verschiebung speichern |
(Z + q) ← Rr |
keines |
2 |
LPM
(2) |
|
Laden aus dem Programmspeicher in R0 |
R0 ← (Z) |
keines |
3 |
LPM
(2) |
Rd, Z |
Laden aus dem Programmspeicher in Rd |
Rd ← (Z) |
keines |
3 |
LPM
(2) |
Rd, Z+ |
Laden aus dem Programmspeicher in Rd und Z hinterher inkrementieren
|
Rd ← (Z), Z ← Z + 1 |
keines |
3 |
ELPM
(1) |
|
Laden aus dem erweiterten Programmspeicher in R0 |
R0 ← (RAMPZ:Z) |
keines |
3 |
ELPM
(1) |
Rd, Z |
Laden aus dem erweiterten Programmspeicher in Rd |
Rd ← (RAMPZ:Z) |
keines |
3 |
ELPM
(1) |
Rd, Z+ |
Laden aus dem erweiterten Programmspeicher in Rd und Z hinterher
inkrementieren |
Rd ← (RAMPZ:Z), Z ← Z + 1 |
keines |
3 |
SPM
(1) |
|
In den Programmspeicher speichern |
(Z) ← R1:R0 |
keines |
- |
IN
|
Rd, A |
I/O Stelle einlesen |
Rd ← A |
keines |
1 |
OUT
|
A, Rr |
I/O Stelle ausgeben |
A ← Rr |
keines |
1 |
PUSH
(1) |
Rr |
Sichert Rr in den Stack |
STACK ← Rr |
keines |
2 |
POP
(1) |
Rd |
Holt Stack in Rd |
Rd ← STACK |
keines |
2 |