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 OperationNOP 1
Powermanagement SleepSLEEP 1
Überwachung Watchdog ResetWDR 1
Register setzen 0CLR rZ N V 1
255SER rh 1
KonstanteLDI rh,k255 1
Kopieren Register » RegisterMOV r,r 1
SRAM » Register, direktLDS r,k65535 2
SRAM » RegisterLD r,rp 2
SRAM » Register mit INCLD r,rp+ 2
DEC, SRAM » RegisterLD r,-rp 2
SRAM, indiziert » RegisterLDD r,ry+k63 2
Port » RegisterIN r,p 1
Stack » RegisterPOP r 2
Programmspeicher(Z) » R0LPM 3
Programmspeicher(Z) » RegisterLPM r,Z 3
Programmspeicher(Z) mit INC » RegisterLPM r,Z+ 3
Programmspeicher(RAMPZ:Z)ELPM 3
Register » SRAM, direktSTS k65535,r 2
Register » SRAMST rp,r 2
Register » SRAM mit INCST rp+,r 2
DEC, Register » SRAMST -rp,r 2
Register » SRAM, indiziertSTD ry+k63,r 2
Register » PortOUT p,r 1
Register » StackPUSH r 2
Addition 8 Bit, +1INC rZ N V 1
8 BitADD r,rZ C N V H 1
8 Bit+CarryADC r,rZ C N V H 1
16 Bit, KonstanteADIW rd,k63Z C N V S 2
Subtraktion 8 Bit, -1DEC rZ N V 1
8 BitSUB r,rZ C N V H 1
8 Bit, KonstanteSUBI rh,k255Z C N V H 1
8 Bit - CarrySBC r,rZ C N V H 1
16 Bit, KonstanteSBIW rd,k63Z C N V S 2
8 Bit - Carry, KonstanteSBCI rh,k255Z C N V H 1
Multiplikation Integer ohne VorzeichenMUL r,rZ C 2
Integer mit VorzeichenMULS r,rZ C 2
Integer mit/ohne VorzeichenMULSU r,rZ C 2
Fließkomma ohne VorzeichenFMUL r,rZ C 2
Fließkomma mit VorzeichenFMULS r,rZ C 2
Fließkomma mit/ohne VorzeichenFMUL r,rZ C 2
Schieben Logisch, linksLSL rZ C N V 1
Logisch, rechtsLSR rZ C N V 1
Rotieren, links über CarryROL rZ C N V 1
Rotieren, rechts über CarryROR rZ C N V 1
Arithmetisch, rechtsASR rZ C N V 1
NibbletauschSWAP r 1
Binär UndAND r,rZ N V 1
Und, KonstanteANDI rh,k255Z N V 1
OderOR r,rZ N V 1
Oder, KonstanteORI rh,k255Z N V 1
Exklusiv-OderEOR r,rZ N V 1
Einer-KomplementCOM rZ C N V 1
Zweier-KomplementNEG rZ C N V H 1
Bits ändern Register, SetzenSBR rh,k255Z N V 1
Register, RücksetzenCBR rh,255Z N V 1
Register, Kopieren nach T-FlagBST r,b7T 1
Register, Kopie von T-FlagBLD r,b7 1
Port, SetzenSBI pl,b7 2
Port, RücksetzenCBI pl,b7 2
Statusbits Zero-FlagSEZZ 1
Carry FlagSECC 1
Negativ FlagSENN 1
Zweierkompliment Überlauf FlagSEVV 1
Halbübertrag FlagSEHH 1
Signed FlagSESS 1
Transfer FlagSETT 1
Interrupt Enable FlagSEII 1
Zero-FlagCLZZ 1
Carry FlagCLCC 1
Negativ FlagCLNN 1
Zweierkompliment Überlauf FlagCLVV 1
Halbübertrag FlagCLHH 1
Signed FlagCLSS 1
Transfer FlagCLTT 1
Interrupt Enable FlagCLII 1
Vergleiche Register, RegisterCP r,rZ C N V H 1
Register, Register + CarryCPC r,rZ C N V H 1
Register, KonstanteCPI rh,k255Z C N V H 1
Register, ≤0TST rZ N V 1
Verzweigung Sprung relativRJMP k4096 2
Sprung Adresse direktJMP k65535 3
Sprung Adresse indirekt (Z)IJMP 2
Sprung Adresse indirekt (EIND:Z)EIJMP 2
Unterprogramm, relativRCALL k4096 3
Unterprogramm, Adresse direktCALL k65535 4
Unterprogramm, Adresse indirekt (Z)ICALL 4
Unterprogramm, Adresse indirekt (EIND:Z)EICALL 4
Return vom UnterprogrammRET 4
Return vom InterruptRETII 4
Bedingte Verzweigung Statusbit gesetztBRBS b7,k127 1/2
Statusbit rückgesetztBRBC b7,k127 1/2
Springe bei gleichBREQ k127 1/2
Springe bei ungleichBRNE k127 1/2
Springe bei ÜberlaufBRCS k127 1/2
Springe bei Carry=0BRCC k127 1/2
Springe bei gleich oder größerBRSH k127 1/2
Springe bei kleinerBRLO k127 1/2
Springe bei negativBRMI k127 1/2
Springe bei positivBRPL 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übertragBRHS k127 1/2
Springe bei HalfCarry=0BRHC k127 1/2
Springe bei gesetztem T-BitBRTS k127 1/2
Springe bei gelöschtem T-BitBRTC k127 1/2
Springe bei ZweierkomplementüberlaufBRVS k127 1/2
Springe bei Zweierkomplement-Flag=0BRVC k127 1/2
Springe bei Interrupts eingeschaltetBRIE k127 1/2
Springe bei Interrupts ausgeschaltetBRID k127 1/2
Bedingte Sprünge
(überspringe Folgebefehl wenn)
Registerbit=0SBRC r,b7 1/2/3
Registerbit=1SBRS r,b7 1/2/3
Portbit=0SBIC pl,b7 1/2/3
Portbit=1SBIS pl,b7 1/2/3
Vergleiche, Sprung bei gleichCPSE r,r 1/2/3