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
@#FF8888: ASR Byte (S) rechnen r0-31 1. Operand, Carry Vorzeichenbeghaftete Variable /2 teilen asr r16
@#FFFFCC: BCLR Bit Logik Konst. 0-7 SREG einzelnes Bit in SREG löschen bclr 7; Disable interrupts
@#FFFFCC: BLD Bit Logik r0-31,b0-7 r0-31,b0-7 Lade T-Flag in Register,Bit bld r0, 4
@#CCCCFF: BRBC Bit Abfrage 0-7 Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Bit in SREG = 0 brbc 1,noteq
@#CCCCFF: BRBS Bit Abfrage 0-7 Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Bit in SREG = 1 brbs 6, bitset
@#CCCCFF: BRCC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Carry = 0 brcc nocarry
@#CCCCFF: BRCS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Carry = 1 brcs carry
@#FF8888: BREAK Debug hält CPU an (zum Debuggen)
@#CCFFCC: BREQ Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn gleich (Z=1) breq equal
@#FF8888: BRGE Byte (S) Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn größer oder gleich (vorzeichenbehaftete Variable) (S=0) brge greateq
@#CCCCFF: BRHC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Half Carry = 0 brhc hclear
@#CCCCFF: BRHS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Half Carry = 1 brhs hset
@#CCCCFF: BRID Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Global Interrupts deaktiviert brid intdis
@#CCCCFF: BRIE Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Global Interrupts aktiviert brie inten
@#CCFFCC: BRLO Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn kleiner brlo loop
@#FF8888: BRLT Byte (S) Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn kleiner (Vorzeichenbehaftet) brlt less
@#FF8888: BRMI Byte (S) Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Negativ brmi negative
@#CCFFCC: BRNE Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn ungleich brne loop
@#FF8888: BRPL Byte (S) Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Positiv brpl positive
@#CCFFCC: BRSH Byte Vergleich Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn gleich oder größer brsh highsm
@#CCCCFF: BRTC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn T-Flag = 0 brtc tclear
@#CCCCFF: BRTS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn T-Flag = 1 brts tset
@#CCCCFF: BRVC Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Overflow = 0 brvc noover
@#CCCCFF: BRVS Bit Abfrage Sprungmarke (-64-+63) Springt zu Sprungmarke, wenn Overflow = 1 brvs overfl
@#CCCCFF: BSET Bit Logik 0-7 SREG einzelnes Bit in SREG setzen bset 6 ; setze T flag
@#CCCCFF: 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
@#CCCCFF: CLC Bit Logik Carry-Flag lösche Carry-Flag (=0) clc
@#CCCCFF: CLH Bit Logik HalfCarry-Flag lösche HalfCarry-Flag (=0) clh
CLI Bit Logik GIE Interrupts global deaktivieren cli
@#CCCCFF: 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
@#CCCCFF: 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
@#CCCCFF: CLV Bit Logik Overflow-Flag = 0 lösche Overflow-Flag in SREG clv
@#CCCCFF: 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
@#FF8888: DES 8Byte Encrypt Konst. 0-15 Verschlüsseln?
@#FF8888: EICALL vermutlich bei 8Bit-AVRs nicht verfügbar
@#FF8888: EIJMP vermutlich bei 8Bit-AVRs nicht verfügbar
@#FF8888: 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
@#FF8888: FMULS Bytes (S) rechnen r16-23 r16-23 r1:r0 multipliziert 2 Register (vorzeichenbehaftet) und schibt Ergebnis 1 nach Links
@#FF8888: FMULSU Bytes (S) rechnen r16-23 r16-23 r1:r0 multipliziert 2 Register (1 vorzeichenbehaftet, 1 nicht vorzeichenbehaftet) und schibt Ergebnis 1 nach Links
@#FF8888: 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
@#FF8888: 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
@#FF8888: 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
@#FF8888: MULSU Bytes (S) rechnen r0-31 r0-31 r1:r0 multipliziert 1 Byte mit Vorzeichen mit einem Byte ohne Vorzeichen, Ergebnis in r1:r0
@#FF8888: 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
@#CCCCFF: SEC Bit Logik Setze Carry-Flag sec ; setze Carry-Flag
@#CCCCFF: 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
@#CCCCFF: SEN Bit Logik setze Negativ-Flag
SER Byte Logik r16-31 1. Operand setze alle Bits im Register ser r17 ; r17 = 255
@#CCCCFF: SES Bit Logik setze Signed-Flag
@#CCCCFF: SET Bit Logik setze T-Flag
@#CCCCFF: SEV Bit Logik setze Overflow-Flag
@#CCCCFF: SEZ Bit Logik setze Zero-Flag
@#FFFFCC: SLEEP versetzt µC in Schlaf-Modus
@#FF8888: 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: 2017/11/30 08:46 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki