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