Benutzer-Werkzeuge

Webseiten-Werkzeuge


elektronik:avr_assembler

AVR-Assembler

Befehlsübersicht

Befehl Art Typ 1. Operand 2. Operand Ziel kurze Beschreibung Beispiel
ADC Byte rechnen r0-31 r0-31 1. Operand addiert 2 Register + Carry adc r3,r1
ADD Byte rechnen r0-31 r0-31 1. Operand addiert 2 Register ohne Carry add r1,r2
ADIW Wort rechnen r24,26,28,30 Konst. 0-63 1. Operand addiert Wort mit Konstante (0-63) adiw r25:24,1 ; addiere 1 zu r25:r24
AND Byte Logik r0-31 r0-31 1. Operand bitweise UND von 2 Registern and r2, r16
ANDI Byte Logik r16-31 Konst. 0-255 1. Operand bitweise UND mit Konstante andi r17,$0F
ASR Byte (S) rechnen r0-31 1. Operand, Carry Vorzeichenbeghaftete Variable /2 teilen asr r16
BCLR Bit Logik Konst. 0-7 SREG einzelnes Bit in SREG löschen bclr 7; Disable interrupts
BLD Bit Logik r0-31,b0-7 r0-31,b0-7 Lade T-Flag in Register,Bit bld r0, 4
BRBC Bit Abfrage 0-7 Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Bit in SREG = 0 brbc 1,noteq
BRBS Bit Abfrage 0-7 Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Bit in SREG = 1 brbs 6, bitset
BRCC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Carry = 0 brcc nocarry
BRCS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Carry = 1 brcs carry
BREAK Debug hält CPU an (zum Debuggen)
BREQ Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn gleich (Z=1) breq equal
BRGE Byte (S) Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn größer oder gleich (vorzeichenbehaftete Variable) (S=0) brge greateq
BRHC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Half Carry = 0 brhc hclear
BRHS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Half Carry = 1 brhs hset
BRID Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Global Interrupts deaktiviert brid intdis
BRIE Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Global Interrupts aktiviert brie inten
BRLO Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn kleiner brlo loop
BRLT Byte (S) Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn kleiner (Vorzeichenbehaftet) brlt less
BRMI Byte (S) Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Negativ brmi negative
BRNE Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn ungleich brne loop
BRPL Byte (S) Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Positiv brpl positive
BRSH Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn gleich oder größer brsh highsm
BRTC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn T-Flag = 0 brtc tclear
BRTS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn T-Flag = 1 brts tset
BRVC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Overflow = 0 brvc noover
BRVS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Overflow = 1 brvs overfl
BSET Bit Logik 0-7 SREG einzelnes Bit in SREG setzen bset 6 ; setze T flag
BST Bit Logik r0-31,b0-7 T-Flag Lade Bit aus Register in T-Flag bst r1,2 ; speichere bit 2 von r1 in T flag
CALL Unter-
programm-
aufruf
Sprungmarke (0-64k) Unterprogrammaufruf (lang) call check ; rufe Unterprogramm auf
CBI Bit Ausgabe r0-31,b0-7 IO-Pin Pin ausschalten cbi $12, 7 ; nulle bit 7 in Port D
CBR Byte Logik r16-31 Konst. 0-255 1. Operand Bits in Register löschen (logisches AND) cbr r18, 1 ; nulle bit 0 in r18
CLC Bit Logik Carry-Flag lösche Carry-Flag (=0) clc
CLH Bit Logik HalfCarry-Flag lösche HalfCarry-Flag (=0) clh
CLI Bit Logik GIE Interrupts global deaktivieren cli
CLN Bit Logik Negativ-Flag = 0 lösche Negativ-Flag in SREG cln
CLR Byte Logik r0-31 1. Operand leere Register (=0) clr r18
CLS Bit Logik Signed-Flag = 0 lösche Signed-Flag in SREG cls
CLT Bit Logik T-Flag = 0 lösche T-Flag in SREG clt
CLV Bit Logik Overflow-Flag = 0 lösche Overflow-Flag in SREG clv
CLZ Bit Logik Zero-Flag = 0 lösche Zero-Flag in SREG clz
COM Byte Logik r0-31 1. Operand Einer Komplement com r4
CP Byte Vergleich r0-31 r0-31 SREG Vergleich; hiernach können alle relativen Sprüng(BR*) ausgeführt werde cp r4,r19
CPC Wort Vergleich r0-31 r0-31 SREG Vergleich unter Beachtung des Carry-Bit cp r2,r0 ; vergleiche low byte;cpc r3,r1 ; vergleiche high byte;brne noteq ; springe wenn ungleich
CPI Byte Vergleich r16-31 Konst. 0-255 SREG Vergleich mit Konstante cpi r19,3 ; vergleiche r19 mit 3
CPSE Byte Vergleich r0-31 r0-31 Vergleicht 2 Register, überspringt nächsten Befehl, wenn gleic(=) cpse r4,r0 ; vergleiche r4 mit r0
DEC Byte Zählen r0-31 1. Operand -1 dec r17
DES 8Byte Encrypt Konst. 0-15 Verschlüsseln?
EICALL vermutlich bei 8Bit-AVRs nicht verfügbar
EIJMP vermutlich bei 8Bit-AVRs nicht verfügbar
ELPM vermutlich bei 8Bit-AVRs nicht verfügbar
EOR Byte Logik r0-31 r0-31 1. Operand logisches EOR eor r0,r22
FMUL Bytes rechnen r16-23 r16-23 r1:r0 multipliziert 2 Register und schibt Ergebnis 1 nach Links
FMULS Bytes (S) rechnen r16-23 r16-23 r1:r0 multipliziert 2 Register (vorzeichenbehaftet) und schibt Ergebnis 1 nach Links
FMULSU Bytes (S) rechnen r16-23 r16-23 r1:r0 multipliziert 2 Register (1 vorzeichenbehaftet, 1 nicht vorzeichenbehaftet) und schibt Ergebnis 1 nach Links
ICALL Unter-
programm-
aufruf
Z-Pointer Unterprogrammaufruf mit Z-Pointer (vermutlich bei 8Bit-AVRs nicht verfügbar) icall ; Call routine pointed to by r31:r30
IJMP Sprung Z-Pointer indirekter Sprung mit Z-Pointer (vermutlich bei 8Bit-AVRs nicht verfügbar) ijmp
IN Byte Eingabe r0-31 A0-63 1. Operand I/O (Ports, Timer, Konfig-Regsiter, etc) in Register laden in r25,$16 ; lese Port B
INC Byte Zählen r0-31 1. Operand +1 inc r17
JMP Sprung Sprungmarke (0-4M) Sprung an Sprungmarke (lang) jmp farplc
LD Byte laden r0-31 Pointer (X,Y,Z) 1. Operand lade Byte von Pointeradresse in Register ld r0,X; ld r0,X+; ld r0,-X
LDI Byte laden r16-31 Konst. 0-255 1. Operand lade Konstante in Register ldi r30,$F0
LDS Byte laden r0-31 Konst. 0-65535 1. Operand lade aus gesamtem Speicherbereich in Register
LPM Byte laden r0-31 Z-Pointer 1. Operand lade mit Z-Pointer Daten aus Programmspeicher ldi ZH, high(Table_1«1) ; Initialize Z pointer;ldi ZL, low(Table_1«1);lpm r16, Z ; Load constant from program
LSL Byte Logik r0-31 1. Operand schiebt Bits in Register um 1 nach links, Bit7 fällt in C-Flag, Bit0 wird 0 lsl r0 ; Multipliziere r0 mit 2
LSR Byte Logik r0-31 1. Operand schiebt Bits in Register um 1 nach rechts, Bit0 fällt in C-Flag, Bit7 wird 0 lsr r0 ; teile r0 durch 2
MOV Byte kopieren r0-31 r0-31 1. Operand kopiert Register mov r16,r0 ; kopiere r0 nach r16
MOVW Wort kopieren dr {0,2,…,30} dr {0,2,…,30} 1. Operand kopiert Registerpaar movw r17:16,r1:r0 ; Copy r1:r0 to r17:r16
MUL Bytes rechnen r0-31 r0-31 r1:r0 multipliziert 2 Bytes ohne Vorzeichen, Ergebnis in r1:r0 mul r5,r4 ; multipliziere ohne Vorzeichen r5 and r4
MULS Bytes (S) rechnen r0-31 r0-31 r1:r0 multipliziert 2 Bytes mit Vorzeichen, Ergebnis in r1:r0 muls r5,r4 ; multipliziere mit Vorzeichen r5 and r4
MULSU Bytes (S) rechnen r0-31 r0-31 r1:r0 multipliziert 1 Byte mit Vorzeichen mit einem Byte ohne Vorzeichen, Ergebnis in r1:r0
NEG Bytes Logik r0-31 1. Operand Zweierkompliment
NOP warte 1 Takt nop ; tue nichts
OR Bytes Logik r0-31 r0-31 1. Operand Logisches OR mit Register or r15,r16 ; bitweises OR
ORI Bytes Logik r0-31 Konst. 0-255 1. Operand Logisches OR mit Konstante or r15,$25 ; bitweises OR
OUT Bytes Ausgabe A0-63 r0-31 1. Operand Ausgabe des Registerinhalts auf IO (Ports, Timer, Konfig-Regsiter, etc) out $18,r16 ; r16 auf PORTB ausgeben
POP Bytes kopieren r0-31 Byte aus Stack in Register laden push r13 ; Save r13 on the stack;…;pop r13 ; Restore r13
PUSH Bytes kopieren r0-31 STACK Byte in Stack sichern push r13 ; Save r13 on the stack;…;pop r13 ; Restore r13
RCALL Unter-
programm-
aufruf
Sprungmarke (-2k-+2k) Unterprogrammaufruf (kurz) rcall routine
RET Unter-
programm-
aufruf
Rückkehr aus Unterprogramm (muss am Ende eines Unterprogramms stehen, welches mit ®call aufgerufen wird) ret ; zurück
RETI Unter-
programm-
aufruf
Rückkehr aus Interrupt (muss am Ende der Interrupt-Routine stehen) reti ; weiter im Programm
RJMP Sprung Sprungmarke (-2k-+2k) Sprung an Sprungmarke (kurz) rjmp woanders
ROL Byte Logik r0-31 1. Operand schiebt Bits in Register 1 nach links durch Carry (Carry in Bit0, Bit7 in Carry) rol r19
ROR Byte Logik r0-31 1. Operand schiebt Bits in Register 1 nach rechts durch Carry (Carry in Bit7, Bit0 in Carry) ror r19
SBC Byte rechnen r0-31 r0-31 1. Operand Subtraktion mit Carry sub r2,r0 ; Subtract low byte;sbc r3,r1 ; Subtract with carry high byte
SBR Byte Logik r16-31 Konst. 0-255 1. Operand Bits in Register setzen (logisches ORI) sbr r18, 1 ; setze bit 0 in r18
SBRC Bit Vergleich r0-31,b0-7 überspringe nächsten Befehl, wenn Bit in Register = sbrc r0,7 ; springe, wenn bit7 in r0 =0 ist
SBRS Bit Vergleich r0-31,b0-7 überspringe nächsten Befehl, wenn Bit in Register = sbrc r0,7 ; springe, wenn bit7 in r0 =1 ist
SEC Bit Logik Setze Carry-Flag sec ; setze Carry-Flag
SEH Bit Logik Setze HalfCarry-Flag seh ; setze HalfCarry-Flag
SBI Bit Ausgabe A0-31,b0-7 1. Operand setze Bit in I/O-Register sbi PORTB,0 ; schalte pin0 von PORTB ein
SBCI Byte rechnen r16-31 Konst. 0-255 1. Operand substrahiere Konstante mit Carry (von Register) subi r16,$23 ; substrahiere LOW-Byte; sbci r17,$4F ; Substrahiere mit Carry HIGH-Byte
SBIC Bit Vergleich A0-31,b0-7 überspringe nächsten Befehl, wenn Bit in I/O-Register = sbic $1C,1 ; überspringe nächsten Befehl, wenn EEWE = 0
SBIS Bit Vergleich A0-31,b0-7 überspringe nächsten Befehl, wenn Bit in I/O-Register = sbic PORTB,0 ; überspringe nächsten Befehl, wenn PORTB,0 = 1
SBIW Wort rechnen r24,26,28,30 Konst. 0-63 1. Operand substrahiere Konstante von Wort sbiw YH:YL,63 ; Subtrahiere 63 vom Y Pointer(r29:r28)
SEI Bit Logik GIE setze globales Interrupt-Flag sei ; Interrupts erlauben
SEN Bit Logik setze Negativ-Flag
SER Byte Logik r16-31 1. Operand setze alle Bits im Register ser r17 ; r17 = 255
SES Bit Logik setze Signed-Flag
SET Bit Logik setze T-Flag
SEV Bit Logik setze Overflow-Flag
SEZ Bit Logik setze Zero-Flag
SLEEP versetzt µC in Schlaf-Modus
SPM Byte speichern Daten in Programmspeicher schreiben
ST Byte sichern r0-31 SRAM Daten mit Pointer in SRAM speichern st X,r17; stX+,r17; st-X,r17
STS Byte sichern r16-31 Konst. 0-65535 data SPace / SRAM Register in SRAM speichern sts 64,r1 ; speichere r1 in SRAM-Adresse 64
SUB Byte rechnen r0-31 r0-31 1. Operand subtrahiere ohne Carry sub r13,r12 ; substrahiere r12 von r13
SUBI Byte rechnen r0-31 Konst. 0-255 1. Operand subtrahiere Konstante von Register subi r13,$11 ; substrahiere $11 von r13
SWAP Byte Logik r0-31 1. Operand tausche oberes und unteres Nibble vom Register swap r13
TST Byte Vergleich r0-31 Teste auf Null oder Minus tst r0 ; teste r0; breq zero ; springe, wenn r0=0
WDR Reset Watchdog Watchdog Timer zurücksetzen wdr ; reset watchdog timer
elektronik/avr_assembler.txt · Zuletzt geändert: von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki