Assemblerbefehle
Übersicht über die vom Luna-Assembler (lavra) unterstützten AVR-Assemblerbefehle. Der Luna-Assembler ist im Compiler integriert. Nicht alle Befehle sind auf jedem Controller verfügbar, siehe Datasheet.
| Kürzel | Beschreibung |
|---|---|
| r | Quell-/Zielregister |
| rh | Obere Quell-/Zielregister (R16-R31) |
| rd | Doppelregister R24:25(W), R26:27(X), R28:29(Y), R30:31(Z) |
| rp | Pointerregister X,Y, Z |
| ry | Pointerregister Y, Z |
| p | Port |
| pl | Port an unterer Adresse 0 bis 31 |
| b7 | Bitnummer 0 bis 7 |
| k63 | Konstante 0 bis 63 |
| k127 | Konstante -64 bis +63 |
| k255 | Konstante 0-255 |
| k4096 | Konstante -2048 bis +2047 |
| k65535 | Konstante 0 bis 65535 |
| Gruppe | Funktion | Befehl | Flags | Clk |
|---|---|---|---|---|
| Leerbefehl | No Operation | NOP | 1 | |
| Powermanagement | Sleep | SLEEP | 1 | |
| Überwachung | Watchdog Reset | WDR | 1 | |
| Register setzen | 0 | CLR r | Z N V | 1 |
| 255 | SER rh | 1 | ||
| Konstante | LDI rh,k255 | 1 | ||
| Kopieren | Register » Register | MOV r,r | 1 | |
| SRAM » Register, direkt | LDS r,k65535 | 2 | ||
| SRAM » Register | LD r,rp | 2 | ||
| SRAM » Register mit INC | LD r,rp+ | 2 | ||
| DEC, SRAM » Register | LD r,-rp | 2 | ||
| SRAM, indiziert » Register | LDD r,ry+k63 | 2 | ||
| Port » Register | IN r,p | 1 | ||
| Stack » Register | POP r | 2 | ||
| Programmspeicher(Z) » R0 | LPM | 3 | ||
| Programmspeicher(Z) » Register | LPM r,Z | 3 | ||
| Programmspeicher(Z) mit INC » Register | LPM r,Z+ | 3 | ||
| Programmspeicher(RAMPZ:Z) | ELPM | 3 | ||
| Register » SRAM, direkt | STS k65535,r | 2 | ||
| Register » SRAM | ST rp,r | 2 | ||
| Register » SRAM mit INC | ST rp+,r | 2 | ||
| DEC, Register » SRAM | ST -rp,r | 2 | ||
| Register » SRAM, indiziert | STD ry+k63,r | 2 | ||
| Register » Port | OUT p,r | 1 | ||
| Register » Stack | PUSH r | 2 | ||
| Addition | 8 Bit, +1 | INC r | Z N V | 1 |
| 8 Bit | ADD r,r | Z C N V H | 1 | |
| 8 Bit+Carry | ADC r,r | Z C N V H | 1 | |
| 16 Bit, Konstante | ADIW rd,k63 | Z C N V S | 2 | |
| Subtraktion | 8 Bit, -1 | DEC r | Z N V | 1 |
| 8 Bit | SUB r,r | Z C N V H | 1 | |
| 8 Bit, Konstante | SUBI rh,k255 | Z C N V H | 1 | |
| 8 Bit - Carry | SBC r,r | Z C N V H | 1 | |
| 16 Bit, Konstante | SBIW rd,k63 | Z C N V S | 2 | |
| 8 Bit - Carry, Konstante | SBCI rh,k255 | Z C N V H | 1 | |
| Multiplikation | Integer ohne Vorzeichen | MUL r,r | Z C | 2 |
| Integer mit Vorzeichen | MULS r,r | Z C | 2 | |
| Integer mit/ohne Vorzeichen | MULSU r,r | Z C | 2 | |
| Fließkomma ohne Vorzeichen | FMUL r,r | Z C | 2 | |
| Fließkomma mit Vorzeichen | FMULS r,r | Z C | 2 | |
| Fließkomma mit/ohne Vorzeichen | FMUL r,r | Z C | 2 | |
| Schieben | Logisch, links | LSL r | Z C N V | 1 |
| Logisch, rechts | LSR r | Z C N V | 1 | |
| Rotieren, links über Carry | ROL r | Z C N V | 1 | |
| Rotieren, rechts über Carry | ROR r | Z C N V | 1 | |
| Arithmetisch, rechts | ASR r | Z C N V | 1 | |
| Nibbletausch | SWAP r | 1 | ||
| Binär | Und | AND r,r | Z N V | 1 |
| Und, Konstante | ANDI rh,k255 | Z N V | 1 | |
| Oder | OR r,r | Z N V | 1 | |
| Oder, Konstante | ORI rh,k255 | Z N V | 1 | |
| Exklusiv-Oder | EOR r,r | Z N V | 1 | |
| Einer-Komplement | COM r | Z C N V | 1 | |
| Zweier-Komplement | NEG r | Z C N V H | 1 | |
| Bits ändern | Register, Setzen | SBR rh,k255 | Z N V | 1 |
| Register, Rücksetzen | CBR rh,255 | Z N V | 1 | |
| Register, Kopieren nach T-Flag | BST r,b7 | T | 1 | |
| Register, Kopie von T-Flag | BLD r,b7 | 1 | ||
| Port, Setzen | SBI pl,b7 | 2 | ||
| Port, Rücksetzen | CBI pl,b7 | 2 | ||
| Statusbits | Zero-Flag | SEZ | Z | 1 |
| Carry Flag | SEC | C | 1 | |
| Negativ Flag | SEN | N | 1 | |
| Zweierkompliment Überlauf Flag | SEV | V | 1 | |
| Halbübertrag Flag | SEH | H | 1 | |
| Signed Flag | SES | S | 1 | |
| Transfer Flag | SET | T | 1 | |
| Interrupt Enable Flag | SEI | I | 1 | |
| Zero-Flag | CLZ | Z | 1 | |
| Carry Flag | CLC | C | 1 | |
| Negativ Flag | CLN | N | 1 | |
| Zweierkompliment Überlauf Flag | CLV | V | 1 | |
| Halbübertrag Flag | CLH | H | 1 | |
| Signed Flag | CLS | S | 1 | |
| Transfer Flag | CLT | T | 1 | |
| Interrupt Enable Flag | CLI | I | 1 | |
| Vergleiche | Register, Register | CP r,r | Z C N V H | 1 |
| Register, Register + Carry | CPC r,r | Z C N V H | 1 | |
| Register, Konstante | CPI rh,k255 | Z C N V H | 1 | |
| Register, ≤0 | TST r | Z N V | 1 | |
| Verzweigung | Sprung relativ | RJMP k4096 | 2 | |
| Sprung Adresse direkt | JMP k65535 | 3 | ||
| Sprung Adresse indirekt (Z) | IJMP | 2 | ||
| Sprung Adresse indirekt (EIND:Z) | EIJMP | 2 | ||
| Unterprogramm, relativ | RCALL k4096 | 3 | ||
| Unterprogramm, Adresse direkt | CALL k65535 | 4 | ||
| Unterprogramm, Adresse indirekt (Z) | ICALL | 4 | ||
| Unterprogramm, Adresse indirekt (EIND:Z) | EICALL | 4 | ||
| Return vom Unterprogramm | RET | 4 | ||
| Return vom Interrupt | RETI | I | 4 | |
| Bedingte Verzweigung | Statusbit gesetzt | BRBS b7,k127 | 1/2 | |
| Statusbit rückgesetzt | BRBC b7,k127 | 1/2 | ||
| Springe bei gleich | BREQ k127 | 1/2 | ||
| Springe bei ungleich | BRNE k127 | 1/2 | ||
| Springe bei Überlauf | BRCS k127 | 1/2 | ||
| Springe bei Carry=0 | BRCC k127 | 1/2 | ||
| Springe bei gleich oder größer | BRSH k127 | 1/2 | ||
| Springe bei kleiner | BRLO k127 | 1/2 | ||
| Springe bei negativ | BRMI k127 | 1/2 | ||
| Springe bei positiv | BRPL k127 | 1/2 | ||
| Springe bei größer oder gleich (Vorzeichen) | BRGE k127 | 1/2 | ||
| Springe bei kleiner Null (Vorzeichen) | BRLT k127 | 1/2 | ||
| Springe bei Halbübertrag | BRHS k127 | 1/2 | ||
| Springe bei HalfCarry=0 | BRHC k127 | 1/2 | ||
| Springe bei gesetztem T-Bit | BRTS k127 | 1/2 | ||
| Springe bei gelöschtem T-Bit | BRTC k127 | 1/2 | ||
| Springe bei Zweierkomplementüberlauf | BRVS k127 | 1/2 | ||
| Springe bei Zweierkomplement-Flag=0 | BRVC k127 | 1/2 | ||
| Springe bei Interrupts eingeschaltet | BRIE k127 | 1/2 | ||
| Springe bei Interrupts ausgeschaltet | BRID k127 | 1/2 | ||
| Bedingte Sprünge (überspringe Folgebefehl wenn) | Registerbit=0 | SBRC r,b7 | 1/2/3 | |
| Registerbit=1 | SBRS r,b7 | 1/2/3 | ||
| Portbit=0 | SBIC pl,b7 | 1/2/3 | ||
| Portbit=1 | SBIS pl,b7 | 1/2/3 | ||
| Vergleiche, Sprung bei gleich | CPSE r,r | 1/2/3 |