| ADC | Addition mit Übertrag |
| ADD | Addition ohne Übertrag |
| SBC | Subtraktion mit Übertrag |
| SUB | Subtraktion ohne Übertrag |
| SBCI | Subtraktion von Konstante mit Übertrag |
| SUBI | Subtraktion von Konstante ohne Übertrag |
| ADIW | Addition von Konstante zu Word |
| SBIW | Subtraktion von Konstante von Word |
| MUL | vorzeichenlose Multiplikation |
| MULS | Multiplikation mit Vorzeichen |
| MULSU | gemischte Multiplikation |
| FMUL | vorzeichenlose Festkomma-Multiplikation |
| FMULS | Festkomma-Multiplikation mit Vorzeichen |
| FMULSU | gemischte Festkomma-Multiplikation |
| | |
| AND | Logisches UND |
| ANDI | Logisches UND mit Konstante |
| OR | Logisches ODER |
| ORI | Logisches ODER mit Konstante |
| EOR | Logisches Exklusiv-ODER |
| COM | Einerkomplement |
| NEG | Zweierkomplement |
| | |
| CP | Vergleiche |
| CPC | Vergleiche mit Übertrag |
| CPI | Vergleiche mit Konstante |
| TST | Test auf Null oder Minus |
| | |
| DEC | Dekrementieren |
| INC | Inkrementieren |
| CLR | Register löschen |
| SER | Register auf FFh setzen |
| MOV | Kopiere Register |
| MOVW | Kopiere Registerpaar |
| | |
| LDI | Lade Konstante |
| LDS | Lade aus Datenspeicher |
| LD | Lade indirekt aus Datenspeicher |
| LDD | Lade indirekt mit Offset aus Datenspeicher |
| STS | Speichere in Datenspeicher |
| ST | Speichere indirekt in Datenspeicher |
| STD | Speichere indirekt mit Offset in Datenspeicher |
| | |
| LPM | Lade aus Programmspeicher |
| ELPM | Erweitertes Laden aus Programmspeicher |
| SPM | Schreibe in Programmspeicher |
| | |
| IN | Lese I/O-Adresse |
| OUT | Schreibe auf I/O-Adresse |
| PUSH | Lege Register auf Stack |
| POP | Hole Register vom Stack |
| JMP | Sprung |
| RJMP | Relativer Sprung |
| IJMP | Indirekter Sprung |
| EIJMP | Erweiterter indirekter Sprung |
| | |
| CALL | Unterprogrammaufruf |
| RCALL | Relativer Unterprogrammaufruf |
| ICALL | Indirekter Unterprogrammaufruf |
| EICALL | Erweiterter indirekter Unterprogrammaufruf |
| RET | Rückkehr aus Unterprogramm |
| RETI | Rückkehr aus Interrupt-Routine |
| | |
| CPSE | Vergleich, überspringe wenn gleich |
| SBRC | Überspringe, wenn Register-Bit gelöscht |
| SBRS | Überspringe, wenn Register-Bit gesetzt |
| SBRC | Überspringe, wenn I/O-Bit gelöscht |
| SBRS | Überspringe, wenn I/O-Bit gesetzt |
| | |
| BRBS | Springe, wenn Flag in SREG gesetzt |
| BRBC | Springe, wenn Flag in SREG gelöscht |
| BREQ | Springe, wenn gleich |
| BRNE | Springe, wenn ungleich |
| BRCS | Springe, wenn Übertrag |
| BRCC | Springe, wenn kein Übertrag |
| BRLO | Springe, wenn kleiner |
| BRSH | Springe, wenn größer oder gleich |
| BRMI | Springe, wenn negativ |
| BRPL | Springe, wenn positiv |
| BRLT | Springe, wenn kleiner, mit Vorzeichen |
| BRGE | Springe, wenn größer oder gleich, mit Vorzeichen |
| BRHS | Springe, wenn H=1 |
| BRHC | Springe, wenn H=0 |
| BRTS | Springe, wenn T=1 |
| BRTC | Springe, wenn T=0 |
| BRVS | Springe, wenn Überlauf |
| BRVC | Springe, wenn kein Überlauf |
| BRIE | Springe, wenn Interrupts freigegeben |
| BRID | Springe, wenn Interrupts gesperrt |
| LSL | Logisches Linksschieben |
| LSR | Logisches Rechtsschieben |
| ASR | Arithmetisches Rechtsschieben |
| ROL | Linksrotation |
| ROR | Rechtsrotation |
| SWAP | Halbbytes vertauschen |
| | |
| BLD | Bit laden aus T-Flag |
| BST | Bit speichern in T-Flag |
| CBR | Bit löschen in Register |
| SBR | Bit setzen in Register |
| CBI | Bit löschen in I/O-Register |
| SBI | Bit setzen in I/O-Register |
| BCLR | Flag in SREG löschen |
| BSET | Flag in SREG setzen |
| CLC | Carry-Flag löschen |
| SEC | Carry-Flag setzen |
| CLN | Negative-Flag löschen |
| SEN | Negative-Flag setzen |
| CLZ | Zero-Flag löschen |
| SEZ | Zero-Flag setzen |
| CLI | Interrupts sperren |
| SEI | Interrupts freigeben |
| CLS | Sign-Flag löschen |
| SES | Sign-Flag setzen |
| CLV | Zweierkomplements-Überlauf-Flag V löschen |
| SEV | Zweierkomplements-Überlauf-Flag V setzen |
| CLT | T-Flag löschen |
| SET | T-Flag setzen |
| CLH | Half-Carry-Flag löschen |
| SEH | Half-Carry-Flag setzen |
| NOP | keine Operation |
| SLEEP | Ruhezustand |
| WDR | Watchdog zurücksetzen |
| Beschreibung: | Addiert zwei Register mit Übertrag und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd + Rr + C | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle ADD, SBC | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Addiert zwei Register ohne Übertrag und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd + Rr | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle ADC, SUB, ADIW | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Addiert die direkten Daten K zum Registerpaar Rd+1:Rd. | ||||||||||
| | |||||||||||
| Funktion: | Rd+1:Rd := Rd+1:Rd + K | ||||||||||
| | |||||||||||
| Format: | d Î {24,26,28,30}, 0£K£63 | ||||||||||
| | |||||||||||
| Zyklen: | 2 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle ADD, SBIW | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logische UND-Verknüpfung zwischen Rd und Rr aus und schreibt das Ergebnis ins Register Rd. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Ù Rr | ||||||||
| | |||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle ANDI, OR, EOR, TST | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logische UND-Verknüpfung zwischen Rd und direkten Daten K aus und schreibt das Ergebnis ins Register Rd. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Ù K | ||||||||
| | |||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle AND, ORI, CBR | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt arithmetisches Rechts- Schieben des Registers Rd durch. Bit 0 wandert ins Carry-Flag und Bit 7 bleibt unverändert. | ||||||||||
| | |||||||||||
| Funktion: | C := Rd[0] | ||||||||||
| Rd[0...6] := Rd[1...7] | |||||||||||
| | |||||||||||
| Format: | 0£d£31 | ||||||||||
| | |||||||||||
| Zyklen: | 1 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle LSR, LSL, ROR | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Löscht das angegebene Bit im Status-Register. | |||||||||||||||||
| | ||||||||||||||||||
| Funktion: | SREG[s] := 0 | |||||||||||||||||
| | ||||||||||||||||||
| Format: | 0£s£7 | |||||||||||||||||
| s Î {C,Z,N,V,S,H,T,I} falls SREG-Flags definiert | ||||||||||||||||||
| | ||||||||||||||||||
| Bemerkungen: | Für die einzelnen Flags stehen auch vordefinierte Befehle bereit: | |||||||||||||||||
| ||||||||||||||||||
| | ||||||||||||||||||
| Zyklen: | 1 | |||||||||||||||||
| | ||||||||||||||||||
| Flags: | SREG[s] := 0 | |||||||||||||||||
| | ||||||||||||||||||
| Siehe auch: | Die Befehle BSET, CBI, SBI | |||||||||||||||||
| Befehlsreferenz |
| Beschreibung: | Kopiert das T-Flag im Status-Register SREG ins Bit b des Registers Rd. |
| | |
| Funktion: | Rd[b] := T |
| | |
| Format: | 0£d£31 |
| 0£b£7 | |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BST, MOV |
| Befehlsreferenz |
| Beschreibung: | Führt einen Sprung relativ zum aktuellen PC aus, wenn das angegebene Bit b im Statusregister SREG gelöscht ist. Der Assembler berechnet aus der angegebenen Zieladresse automatisch die erforderliche Sprungdistanz k. | ||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Funktion: | IF SREG[s]=0 THEN | ||||||||||||||||||||||||||||||
| PC := PC + k + 1 | |||||||||||||||||||||||||||||||
| ELSE | |||||||||||||||||||||||||||||||
| PC := PC + 1 | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Format: | 0£s£7 | ||||||||||||||||||||||||||||||
| s Î {C,Z,N,V,S,H,T,I} falls SREG-Flags definiert | |||||||||||||||||||||||||||||||
| -64£k£+63 | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Bemerkungen: | Für die einzelnen Flags stehen auch vordefinierte Befehle bereit: | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Zyklen: | 1 wenn Bedingung nicht erfüllt | ||||||||||||||||||||||||||||||
| 2 wenn Bedingung erfüllt | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Flags: | kein Einfluß | ||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Siehe auch: | Die Befehle BRBS, RJMP, CPSE, SBRC, SBRS, SBIC, SBIS | ||||||||||||||||||||||||||||||
| Befehlsreferenz |
| Beschreibung: | Führt einen Sprung relativ zum aktuellen PC aus, wenn das angegebene Bit b im Statusregister SREG gesetzt ist. Der Assembler berechnet aus der angegebenen Zieladresse automatisch die erforderliche Sprungdistanz k. | ||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Funktion: | IF SREG[s]=1 THEN | ||||||||||||||||||||||||||||||
| PC := PC + k + 1 | |||||||||||||||||||||||||||||||
| ELSE | |||||||||||||||||||||||||||||||
| PC := PC + 1 | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Format: | 0£s£7 | ||||||||||||||||||||||||||||||
| s Î {C,Z,N,V,S,H,T,I} falls SREG-Flags definiert | |||||||||||||||||||||||||||||||
| -64£k£+63 | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Bemerkungen: | Für die einzelnen Flags stehen auch vordefinierte Befehle bereit: | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Zyklen: | 1 wenn Bedingung nicht erfüllt | ||||||||||||||||||||||||||||||
| 2 wenn Bedingung erfüllt | |||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Flags: | kein Einfluß | ||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||
| Siehe auch: | Die Befehle BRBC, RJMP, CPSE, SBRC, SBRS, SBIC, SBIS | ||||||||||||||||||||||||||||||
| Befehlsreferenz |
| Beschreibung: | Setzt das angegebene Bit im Status-Register. | ||||||||||||||||
| | |||||||||||||||||
| Funktion: | SREG[s] := 1 | ||||||||||||||||
| | |||||||||||||||||
| Format: | 0£s£7 | ||||||||||||||||
| s Î {C,Z,N,V,S,H,T,I} falls SREG-Flags definiert | |||||||||||||||||
| | |||||||||||||||||
| Bemerkungen: | Für die einzelnen Flags stehen auch vordefinierte Befehle bereit: | ||||||||||||||||
| |||||||||||||||||
| | |||||||||||||||||
| Zyklen: | 1 | ||||||||||||||||
| | |||||||||||||||||
| Flags: | SREG[s] := 1 | ||||||||||||||||
| | |||||||||||||||||
| Siehe auch: | Die Befehle BCLR, SBI, CBI | ||||||||||||||||
| Befehlsreferenz |
| Beschreibung: | Kopiert das Bit b des Registers Rr ins T-Flag im Status-Register SREG. |
| | |
| Funktion: | T := Rr[b] |
| | |
| Format: | 0£d£31 |
| 0£b£7 | |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BLD, MOV |
| Befehlsreferenz |
| Beschreibung: | Ruft das Unterprogramm an der absoluten Adresse k auf. Die Rücksprungadresse wird auf dem Stack gesichert. | ||||||||
| | |||||||||
| Funktion: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Format: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Zyklen: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Flags: | kein Einfluß | ||||||||
| | |||||||||
| Siehe auch: | Die Befehle RET, RCALL, ICALL, EICALL, JMP | ||||||||
| Befehlsreferenz |
| Beschreibung: | Löscht das angegebene Bit b im I/O-Register A. |
| | |
| Funktion: | I/O[A][b] := 0 |
| | |
| Format: | 0£A£31, 0£b£7 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle SBI, IN, OUT, BCLR, BSET |
| Befehlsreferenz |
| Beschreibung: | Löscht die durch die Bit-Maske K angegebenen Bits im Register Rd. Achtung, K gibt nicht die Bit-Nummer, sondern eine Bit-Maske an! | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Ù (FFh-K) | ||||||||
| | |||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle ANDI, SBR, ORI | ||||||||
| Befehlsreferenz |
| Beschreibung: | Löscht das Register Rd, indem das Register mit sich selbst logisch EXKLUSIV-ODER verknüpft wird. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Å Rd = 0 | ||||||||
| | |||||||||
| Format: | 0£d£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle SER, EOR | ||||||||
| Befehlsreferenz |
| Beschreibung: | Bildet das Einerkomplement des Registers Rd. | ||||||||||
| | |||||||||||
| Funktion: | Rd := FFh - Rd | ||||||||||
| | |||||||||||
| Format: | 0£d£31 | ||||||||||
| | |||||||||||
| Zyklen: | 1 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle NEG, SUBI | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Vergleicht die Register Rd und Rr, d.h. führt eine Subtraktion durch. Keines der Register wird verändert, lediglich die Flags im Statusregister werden angepaßt, so daß die bedingten Sprungbefehle verwendet werden können. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd - Rr | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle CPC, CPI, SUB | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Vergleicht das Register Rd und die Konstante K, d.h. führt eine Subtraktion durch. Das Register wird nicht verändert, lediglich die Flags im Statusregister werden angepaßt, so daß die bedingten Sprungbefehle verwendet werden können. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd - K | ||||||||||||
| | |||||||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle CP, CPC, SUBI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Vergleicht die Register Rd und Rr unter Berücksichtiigung des Carry-Flags, d.h. führt eine Subtraktion mit Übertrag durch. Keines der Register wird verändert, lediglich die Flags im Statusregister werden angepaßt, so daß die bedingten Sprungbefehle verwendet werden können. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd - Rr - C | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle CP, CPI, SBCI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Vergleicht die Register Rd und Rr und überspringt die nachfolgende Anweisung, wenn Rd=Rr. |
| | |
| Funktion: | IF Rd=Rr THEN |
| PC := PC + 2 (1-Wort-Anweisung folgt) | |
| PC := PC + 3 (2-Wort-Anweisung folgt) | |
| ELSE | |
| PC := PC + 1 | |
| | |
| Format: | 0£d£31, 0£r£31 |
| | |
| Zyklen: | 1 wenn Bedingung nicht erfüllt |
| 2/3 wenn Bedingung erfüllt | |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BRBS, BRBC, CP, SBRC, SBRS, SBIC, SBIS |
| Befehlsreferenz |
| Beschreibung: | Vermindert das Register Rd um 1. Das Carry-Flag wird nicht verändert, auch nicht, wenn Rd vorher 0 war. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd - 1 | ||||||||
| | |||||||||
| Format: | 0£d£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Der Befehl INC | ||||||||
| Befehlsreferenz |
| Beschreibung: | Indirekter Unterprogrammaufruf - ruft das Unterprogramm an der absoluten Adresse, die durch das Z-Register sowie das EIND-Register gegeben ist, auf. Die Rücksprungadresse wird auf dem Stack gesichert. |
| | |
| Funktion: | (SP) := PC + 1 |
| SP := SP - 3 | |
| PC[15...0] := Z | |
| PC[21...16] := EIND | |
| | |
| Zyklen: | 4 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle RET, CALL, ICALL, EIJMP, IJMP |
| Befehlsreferenz |
| Beschreibung: | Indirekter Sprung - setzt die Programmausführung an der absoluten Adresse, die durch das Z-Register sowie das EIND-Register gegeben ist, fort. | |
| | ||
| Funktion: | PC[15...0] := Z | |
| PC[21...16] := EIND | ||
| | ||
| Zyklen: | 2 | |
| | ||
| Flags: | kein Einfluß | |
| | ||
| Siehe auch: | Die Befehle IJMP, EICALL, ICALL, JMP | |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd aus der durch das Z- und das RAMPZ-Register angegebenen Programmspeicher-Adresse. Hierbei entscheidet Z[0] darüber, ob das High- oder das Low-Byte des Speicherwortes adressiert wird. Wird Rd nicht angegeben, so wird R0 angenommen. Wird das Pluszeichen angeben, so wird nach dem Ladevorgang die Kombination aus RAMPZ- und Z- Register inkrementiert. | ||||||||
| Nicht alle Parameter-Kombinationen sind bei jedem Prozessor zulässig. | |||||||||
| | |||||||||
| Funktion: |
| ||||||||
| | |||||||||
| Format: |
| ||||||||
| Folgende Kombinationen sind undefiniert: | |||||||||
| LPM R30,Z+ | |||||||||
| LPM R31,Z+ | |||||||||
| | |||||||||
| Zyklen: | 3 | ||||||||
| | |||||||||
| Flags: | kein Einfluß | ||||||||
| | |||||||||
| Siehe auch: | Die Befehle LPM, SPM, LD | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logische EXKLUSIV-ODER-Verknüpfung zwischen Rd und Rr aus und schreibt das Ergebnis ins Register Rd. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Å Rr | ||||||||
| | |||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle OR, AND, CLR | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation zweier vorzeichenloser Festkomma-Zahlen in den Registern Rd und Rr durch. Rd und Rr enthalten Zahlen im Festkomma-Format 1.7, d.h. das Komma sitzt implizit zwischen Bit 7 und Bit 6. Die beiden Register werden multipliziert und das Ergebnis einmal links geschoben, so daß das Format 1.15 vorliegt (d.h. wieder 1.7 im High-Byte des Ergebnisses). | ||||||
| | |||||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||||
| | |||||||
| Format: | 16£d£23, 16£r£23 | ||||||
| Rd und Rr enthalten vorzeichenlose Zahlen im 1.7-Format (d.h. 80h=10000000b entspricht +1,0) | |||||||
| | |||||||
| Zyklen: | 2 | ||||||
| | |||||||
| Flags: |
| ||||||
| | |||||||
| Siehe auch: | Die Befehle FMULS, FMULSU, MUL | ||||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation zweier vorzeichenbehafteter Festkomma-Zahlen in den Registern Rd und Rr durch. Rd und Rr enthalten Zahlen im Festkomma-Format 1.7, d.h. das Komma sitzt implizit zwischen Bit 7 und Bit 6. Die beiden Register werden multipliziert und das Ergebnis einmal links geschoben, so daß das Format 1.15 vorliegt (d.h. wieder 1.7 im High-Byte des Ergebnisses). | ||||||
| | |||||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||||
| | |||||||
| Format: | 16£d£23, 16£r£23 | ||||||
| Rd und Rr enthalten vorzeichenbehaftete Zahlen im 1.7-Format (d.h. 80h=10000000b entspricht -1,0; 7Fh=01111111b entspricht +0,9921875) | |||||||
| | |||||||
| Zyklen: | 2 | ||||||
| | |||||||
| Flags: |
| ||||||
| | |||||||
| Siehe auch: | Die Befehle FMUL, FMULSU, MULS | ||||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation einer vorzeichenbehafteten Festkomma-Zahl im Register Rd und einer vorzeichenlosen Festkomma-Zahl im Register Rr durch. Rd und Rr enthalten Zahlen im Festkomma-Format 1.7, d.h. das Komma sitzt implizit zwischen Bit 7 und Bit 6. Die beiden Register werden multipliziert und das Ergebnis einmal links geschoben, so daß das vorzeichenbehaftete Format 1.15 vorliegt (d.h. wieder 1.7 im High-Byte des Ergebnisses). | ||||||
| | |||||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||||
| | |||||||
| Format: | 16£d£23, 16£r£23 | ||||||
| Rd enthält vorzeichenbehaftete Zahl im 1.7-Format (d.h. 80h=10000000b entspricht -1,0; 7Fh=01111111b entspricht +0,9921875) | |||||||
| Rr enthält vorzeichenlose Zahl im 1.7-Format (d.h. 80h=10000000b entspricht +1,0; FFh=11111111b entspricht +1,9921875) | |||||||
| | |||||||
| Zyklen: | 2 | ||||||
| | |||||||
| Flags: |
| ||||||
| | |||||||
| Siehe auch: | Die Befehle FMUL, FMULS, MULSU | ||||||
| Befehlsreferenz |
| Beschreibung: | Indirekter Unterprogrammaufruf - ruft das Unterprogramm an der absoluten Adresse, die durch das Z-Register gegeben ist, auf. Die Rücksprungadresse wird auf dem Stack gesichert. Bei Prozessoren mit mehr als 64kWorten Programmspeicher können nur die unteren 64kWorte erreicht werden. |
| | |
| Funktion: | (SP) := PC + 1 |
| SP := SP - 2 (-3, wenn PC>16 Bit) | |
| PC[15...0] := Z | |
| PC[21...16] := 0 (wenn PC>16 Bit) | |
| | |
| Zyklen: | 3 (4, wenn PC>16 Bit) |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle RET, EICALL, CALL, IJMP, EIJMP |
| Befehlsreferenz |
| Beschreibung: | Indirekter Sprung - setzt die Programmausführung an der absoluten Adresse, die durch das Z-Register gegeben ist, fort. Bei Prozessoren mit mehr als 64kWorten Programmspeicher können nur die unteren 64kWorte erreicht werden. | |
| | ||
| Funktion: | PC[15...0] := Z | |
| PC[21...16] := 0 (wenn PC>16 Bit) | ||
| | ||
| Zyklen: | 2 | |
| | ||
| Flags: | kein Einfluß | |
| | ||
| Siehe auch: | Die Befehle EIJMP, JMP, ICALL, EICALL | |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der angegebenen I/O-Adresse A. |
| | |
| Funktion: | Rd := I/O[A] |
| | |
| Format: | 0£d£31, 0£A£63 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle OUT, CBI, SBI |
| Befehlsreferenz |
| Beschreibung: | Erhöht das Register Rd um 1. Das Carry-Flag wird nicht verändert, auch nicht, wenn Rd vorher 255 war. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd + 1 | ||||||||
| | |||||||||
| Format: | 0£d£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Der Befehl DEC | ||||||||
| Befehlsreferenz |
| Beschreibung: | Setzt die Programmausführung an der absoluten Adresse k fort. |
| | |
| Funktion: | PC := k |
| | |
| Format: | 0£k<4M |
| | |
| Zyklen: | 3 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle RJMP, IJMP, EIJMP, CALL |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der durch das angegebene Zeigerregister festgelegten Adresse und inkrementiert bzw. dekrementiert ggf. das Zeigerregister. | |||||||||
| | ||||||||||
| Format: |
| |||||||||
| | ||||||||||
| Siehe auch: | Die Befehle LDD, ST, LDS, LDI, IN, MOV, LPM | |||||||||
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet. | |
| | |
| Funktion: | Rd := (X) (bzw. := (RAMPX:X)) |
| Rd := (Y) (bzw. := (RAMPY:Y)) | |
| Rd := (Z) (bzw. := (RAMPZ:Z)) | |
| | |
| Format: | 0£d£31 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle LD, LDD, LDS, ST, IN |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse und inkrementiert danach das Zeigerregister X, Y oder Z. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. Beim Inkrementieren wird hier das RAMP-Register entsprechend mitverändert. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet und inkrementiert. | |
| | |
| Funktion: | Rd := (X) (bzw. := (RAMPX:X)) |
| X := X + 1 (bzw. RAMPX:X := RAMPX:X + 1) | |
| | |
| Rd := (Y) (bzw. := (RAMPY:Y)) | |
| Y := Y + 1 (bzw. RAMPY:Y := RAMPY:Y + 1) | |
| | |
| Rd := (Z) (bzw. := (RAMPZ:Z)) | |
| Z := Z + 1 (bzw. RAMPZ:Z := RAMPZ:Z + 1) | |
| | |
| Format: | 0£d£31 |
| Folgende Kombinationen sind undefiniert: | |
| LD R26,X+ | |
| LD R27,X+ | |
| LD R28,Y+ | |
| LD R29,Y+ | |
| LD R30,Z+ | |
| LD R31,Z+ | |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle LD, LDD, LDS, ST, IN |
| Befehlsreferenz |
| Beschreibung: | Dekrementiert das Zeigerregister X, Y oder Z und lädt danach das Register Rd von der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. Beim Dekrementieren wird hier das RAMP-Register entsprechend mitverändert. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet und dekrementiert. | |
| | |
| Funktion: | X := X - 1 (bzw. RAMPX:X := RAMPX:X - 1) |
| Rd := (X) (bzw. := (RAMPX:X)) | |
| | |
| Y := Y - 1 (bzw. RAMPY:Y := RAMPY:Y - 1) | |
| Rd := (Y) (bzw. := (RAMPY:Y)) | |
| | |
| Z := Z - 1 (bzw. RAMPZ:Z := RAMPZ:Z - 1) | |
| Rd := (Z) (bzw. := (RAMPZ:Z)) | |
| | |
| Format: | 0£d£31 |
| Folgende Kombinationen sind undefiniert: | |
| LD R26,-X | |
| LD R27,-X | |
| LD R28,-Y | |
| LD R29,-Y | |
| LD R30,-Z | |
| LD R31,-Z | |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle LD, LDD, LDS, ST, IN |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der durch das Register Y (bzw. Z) plus dem Offset q gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. | |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. | ||
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet. | ||
| | ||
| Funktion: | Rd := (Y+q) (bzw. := (RAMPY:Y+q)) | |
| Rd := (Z+q) (bzw. := (RAMPZ:Z+q)) | ||
| | ||
| Format: | 0£d£31, 0£q£63, | |
| | ||
| Zyklen: | 2 | |
| | ||
| Flags: | kein Einfluß | |
| | ||
| Siehe auch: | Die Befehle LD, STD, ST, IN | |
| Befehlsreferenz |
| Beschreibung: | Lädt die Konstante K ins Register Rd. |
| | |
| Funktion: | Rd := K |
| | |
| Format: | 16£d£31, 0£K£255 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle MOV, LD, CLR, SER |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd von der Daten-Adresse k. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPD-Register bestimmt. | |
| | |
| Funktion: | Rd := (k) (bzw. := (RAMPD:k)) |
| | |
| Format: | 0£d£31, 0£k£65535 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle LD, LDD, STS, ST, IN |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd aus der durch das Z-Register angegebenen Programmspeicher-Adresse. Hierbei entscheidet Z[0] darüber, ob das High- oder das Low-Byte des Speicherwortes adressiert wird. Wird Rd nicht angegeben, so wird R0 angenommen. Wird das Pluszeichen angeben, so wird nach dem Ladevorgang die Kombination aus RAMPZ- und Z- Register inkrementiert. | ||||||||
| Der Befehl spricht immer die unteren 64kBytes des Programmspeichers an | |||||||||
| Nicht alle Parameter-Kombinationen sind bei jedem Prozessor zulässig. | |||||||||
| | |||||||||
| Funktion: |
| ||||||||
| | |||||||||
| Format: |
| ||||||||
| Folgende Kombinationen sind undefiniert: | |||||||||
| LPM R30,Z+ | |||||||||
| LPM R31,Z+ | |||||||||
| | |||||||||
| Zyklen: | 3 | ||||||||
| | |||||||||
| Flags: | kein Einfluß | ||||||||
| | |||||||||
| Siehe auch: | Die Befehle ELPM, SPM, LD | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logisches Links- Schieben des Registers Rd durch. Bit 7 wandert ins Carry-Flag und eine 0 in Bit 0. | ||||||||||||
| | |||||||||||||
| Funktion: | C := Rd[7] | ||||||||||||
| Rd[7...1] := Rd[6...0] | |||||||||||||
| Rd[0] := 0 | |||||||||||||
| | |||||||||||||
| Format: | 0£d£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle LSR, ROL | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logisches Rechts- Schieben des Registers Rd durch. Bit 0 wandert ins Carry-Flag und eine 0 in Bit 7. | ||||||||||
| | |||||||||||
| Funktion: | C := Rd[0] | ||||||||||
| Rd[0...6] := Rd[1...7] | |||||||||||
| Rd[7] := 0 | |||||||||||
| | |||||||||||
| Format: | 0£d£31 | ||||||||||
| | |||||||||||
| Zyklen: | 1 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle ASR, LSL, ROR | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Lädt das Zielregister Rd aus dem Quellregister Rr. |
| | |
| Funktion: | Rd := Rr |
| | |
| Format: | 0£d£31, 0£r£31 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle MOVW, LD, ST |
| Befehlsreferenz |
| Beschreibung: | Lädt das Zielregisterpaar Rd+1:Rd aus dem Quellregisterpaar Rr+1:Rr. |
| | |
| Funktion: | Rd := Rr |
| Rd+1 := Rr+1 | |
| | |
| Format: | d Î {0,2,4,...,30}, r Î {0,2,4,...,30} |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle MOV, LD |
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation zweier vorzeichenloser Zahlen in den Registern Rd und Rr durch. | ||||
| | |||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||
| | |||||
| Format: | 0£d£31, 0£r£31 | ||||
| Rd und Rr enthalten vorzeichenlose ganze Zahlen (d.h. im Bereich 0...255) | |||||
| | |||||
| Zyklen: | 2 | ||||
| | |||||
| Flags: |
| ||||
| | |||||
| Siehe auch: | Die Befehle MULS, MULSU, FMUL | ||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation zweier vorzeichenbehafteter Zahlen in den Registern Rd und Rr durch. | ||||
| | |||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||
| | |||||
| Format: | 0£d£31, 0£r£31 | ||||
| Rd und Rr enthalten vorzeichenbehaftete ganze Zahlen (d.h. im Bereich -128...+127) | |||||
| | |||||
| Zyklen: | 2 | ||||
| | |||||
| Flags: |
| ||||
| | |||||
| Siehe auch: | Die Befehle MUL, MULSU, FMULS | ||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Multiplikation der vorzeichenbehafteten Zahl im Register Rd und der vorzeichenlosen Zahl im Register Rr durch. | ||||
| | |||||
| Funktion: | R1:R0 := Rd ´ Rr | ||||
| | |||||
| Format: | 0£d£31, 0£r£31 | ||||
| Rd enthält vorzeichenbehaftete ganze Zahl (d.h. im Bereich -128...+127) | |||||
| Rr enthält vorzeichenlose ganze Zahl (d.h. im Bereich 0...+255) | |||||
| | |||||
| Zyklen: | 2 | ||||
| | |||||
| Flags: |
| ||||
| | |||||
| Siehe auch: | Die Befehle MUL, MULS, FMULSU | ||||
| Befehlsreferenz |
| Beschreibung: | Bildet das Zweierkomplement des Registers Rd (enthält Rd 80h, so bleibt Rd unverändert). | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := 0 - Rd | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle COM, SUBI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Tut einen Zyklus lang nichts. |
| | |
| Funktion: | - |
| | |
| Format: | NOP |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Befehlsreferenz |
| Beschreibung: | Führt logische ODER-Verknüpfung zwischen Rd und Rr aus und schreibt das Ergebnis ins Register Rd. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Ú Rr | ||||||||
| | |||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle ORI, AND, EOR | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt logische ODER-Verknüpfung zwischen Rd und direkten Daten K aus und schreibt das Ergebnis ins Register Rd. Mit anderen Worten: Setzt die durch die Bit-Maske K gegbenen Bits im Register Rd. | ||||||||
| | |||||||||
| Funktion: | Rd := Rd Ú K | ||||||||
| | |||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Die Befehle ANDI, OR, CBR | ||||||||
| Befehlsreferenz |
| Beschreibung: | Schreibt das Register Rd auf die angegebene I/O-Adresse A. |
| | |
| Funktion: | I/O[A] := Rd |
| | |
| Format: | 0£d£31, 0£A£63 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle IN, CBI, SBI |
| Befehlsreferenz |
| Beschreibung: | Lädt das Register Rd vom Stack. Der Stackpointer wird vor dem Lesevorgang inkrementiert. |
| | |
| Funktion: | SP := SP + 1 |
| Rd := (SP) | |
| | |
| Format: | 0£d£31 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle PUSH, CALL, RET |
| Befehlsreferenz |
| Beschreibung: | Legt das Register Rd auf den Stack. Der Stackpointer wird nach dem Schreibvorgang dekrementiert. | |
| | ||
| Funktion: | (SP) := Rd | |
| SP := SP - 1 | ||
| | ||
| Format: | 0£d£31 | |
| | ||
| Zyklen: | 2 | |
| | ||
| Flags: | kein Einfluß | |
| | ||
| Siehe auch: | Die Befehle POP, CALL | |
| Befehlsreferenz |
| Beschreibung: | Ruft ein Unterprogramm mit einem Sprung relativ zum aktuellen PC auf. Der Assembler berechnet aus der angegebenen Adresse automatisch den nötigen Offset k. | ||||||||
| Bei Prozessoren mit nicht mehr als 8kByte Programmspeicher kann mit RCALL der gesamte Adreßraum erreicht werden. | |||||||||
| | |||||||||
| Funktion: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Format: | -2k£k<2k | ||||||||
| | |||||||||
| Zyklen: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Flags: | kein Einfluß | ||||||||
| | |||||||||
| Siehe auch: | Die Befehle RET, CALL, ICALL, EICALL, RJMP | ||||||||
| Befehlsreferenz |
| Beschreibung: | Rückkehr aus einem Unterprogramm. Die Rücksprungadresse wird vom Stack geholt. | ||||||
| | |||||||
| Funktion: | Prozessoren mit | ||||||
| |||||||
| | |||||||
| Format: | RET | ||||||
| | |||||||
| Zyklen: | Prozessoren mit | ||||||
| |||||||
| | |||||||
| Flags: | kein Einfluß | ||||||
| | |||||||
| Siehe auch: | Die Befehle RETI, CALL, RCALL, ICALL, EICALL, POP | ||||||
| Befehlsreferenz |
| Beschreibung: | Rückkehr aus einer Interrupt-Routine. Die Rücksprungadresse wird vom Stack geholt und das Interrupt-Enable-Flag I gesetzt. | ||||||||
| | |||||||||
| Funktion: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Format: | RET | ||||||||
| | |||||||||
| Zyklen: | Prozessoren mit | ||||||||
| |||||||||
| | |||||||||
| Flags: | I := 1 | ||||||||
| | |||||||||
| Siehe auch: | Die Befehle RET, CALL, RCALL, ICALL, EICALL, POP | ||||||||
| Befehlsreferenz |
| Beschreibung: | Führt einen Sprung relativ zum aktuellen PC aus. Der Assembler berechnet aus der angegebenen Adresse automatisch den nötigen Offset k. |
| Bei Prozessoren mit nicht mehr als 8kByte Programmspeicher kann mit RJMP der gesamte Adreßraum erreicht werden. | |
| | |
| Funktion: | PC := PC + k + 1 |
| | |
| Format: | -2k£k<2k |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle RCALL, JMP, BRBC, BRBS, JMP |
| Befehlsreferenz |
| Beschreibung: | Führt eine Links-Rotation des Registers Rd durch das Carry-Flag C durch. Bit 7 wandert ins Carry-Flag und der Inhalt des Carry-Flags in Bit 0. | ||||||||||||
| | |||||||||||||
| Funktion: | tmp := C | ||||||||||||
| C := Rd[7] | |||||||||||||
| Rd[7...1] := Rd[6...0] | |||||||||||||
| Rd[0] := tmp | |||||||||||||
| | |||||||||||||
| Format: | 0£d£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle ROR, LSL | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Führt eine Rechts-Rotation des Registers Rd durch das Carry-Flag C durch. Bit 0 wandert ins Carry-Flag und der Inhalt des Carry-Flags in Bit 7. | ||||||||||
| | |||||||||||
| Funktion: | tmp := C | ||||||||||
| C := Rd[0] | |||||||||||
| Rd[0...6] := Rd[1...7] | |||||||||||
| Rd[7] := tmp | |||||||||||
| | |||||||||||
| Format: | 0£d£31 | ||||||||||
| | |||||||||||
| Zyklen: | 1 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle ROL, LSR, ASR | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Subtrahiert zwei Register mit Übertrag und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd - Rr - C | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle SUB, ADC, SBCI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Subtrahiert Konstante K mit Übertrag vom Register Rd und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd - K - C | ||||||||||||
| | |||||||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle SBC, SUBI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Setzt das angegebene Bit b im I/O-Register A. |
| | |
| Funktion: | I/O[A][b] := 1 |
| | |
| Format: | 0£A£31, 0£b£7 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle CBI, IN, OUT, BSET, BCLR |
| Befehlsreferenz |
| Beschreibung: | Prüft Bit b der I/O-Adresse A und überspringt die nachfolgende Anweisung, wenn das Bit gelöscht ist. |
| | |
| Funktion: | IF I/O[A][b]=0 THEN |
| PC := PC + 2 (1-Wort-Anweisung folgt) | |
| PC := PC + 3 (2-Wort-Anweisung folgt) | |
| ELSE | |
| PC := PC + 1 | |
| | |
| Format: | 0£A£31, 0£b£7 |
| | |
| Zyklen: | 1 wenn Bedingung nicht erfüllt |
| 2/3 wenn Bedingung erfüllt | |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BRBS, BRBC, SBRC, SBRS, SBIS, CPSE |
| Befehlsreferenz |
| Beschreibung: | Prüft Bit b der I/O-Adresse A und überspringt die nachfolgende Anweisung, wenn das Bit gesetzt ist. |
| | |
| Funktion: | IF I/O[A][b]=1 THEN |
| PC := PC + 2 (1-Wort-Anweisung folgt) | |
| PC := PC + 3 (2-Wort-Anweisung folgt) | |
| ELSE | |
| PC := PC + 1 | |
| | |
| Format: | 0£A£31, 0£b£7 |
| | |
| Zyklen: | 1 wenn Bedingung nicht erfüllt |
| 2/3 wenn Bedingung erfüllt | |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BRBS, BRBC, SBRC, SBRS, SBIC, CPSE |
| Befehlsreferenz |
| Beschreibung: | Subtrahiert die direkten Daten K vom Registerpaar Rd+1:Rd. | ||||||||||
| | |||||||||||
| Funktion: | Rd+1:Rd := Rd+1:Rd - K | ||||||||||
| | |||||||||||
| Format: | d Î {24,26,28,30}, 0£K£63 | ||||||||||
| | |||||||||||
| Zyklen: | 2 | ||||||||||
| | |||||||||||
| Flags: |
| ||||||||||
| | |||||||||||
| Siehe auch: | Die Befehle SUBI, ADIW | ||||||||||
| Befehlsreferenz |
| Beschreibung: | Prüft Bit b des Registers Rr und überspringt die nachfolgende Anweisung, wenn das Bit gelöscht ist. |
| | |
| Funktion: | IF Rr[b]=0 THEN |
| PC := PC + 2 (1-Wort-Anweisung folgt) | |
| PC := PC + 3 (2-Wort-Anweisung folgt) | |
| ELSE | |
| PC := PC + 1 | |
| | |
| Format: | 0£r£31, 0£b£7 |
| | |
| Zyklen: | 1 wenn Bedingung nicht erfüllt |
| 2/3 wenn Bedingung erfüllt | |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BRBS, BRBC, SBRS, SBIC, SBIS, CPSE |
| Befehlsreferenz |
| Beschreibung: | Prüft Bit b des Registers Rr und überspringt die nachfolgende Anweisung, wenn das Bit gesetzt ist. |
| | |
| Funktion: | IF Rr[b]=1 THEN |
| PC := PC + 2 (1-Wort-Anweisung folgt) | |
| PC := PC + 3 (2-Wort-Anweisung folgt) | |
| ELSE | |
| PC := PC + 1 | |
| | |
| Format: | 0£r£31, 0£b£7 |
| | |
| Zyklen: | 1 wenn Bedingung nicht erfüllt |
| 2/3 wenn Bedingung erfüllt | |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle BRBS, BRBC, SBRC, SBIC, SBIS, CPSE |
| Befehlsreferenz |
| Beschreibung: | Setzt alle Bits im Register Rd, d.h. lädt die Konstante FFh ins Register Rd. |
| | |
| Funktion: | Rd := 0FFh |
| | |
| Format: | 16£d£31 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle LDI, CLR |
| Befehlsreferenz |
| Beschreibung: | Versetzt den Prozessor in den Ruhezustand bzw. Sleep-Mode. |
| | |
| Funktion: | siehe Datenblatt des jeweiligen Prozessors |
| | |
| Format: | SLEEP |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Befehlsreferenz |
| Beschreibung: | Dient zum Löschen und Beschreiben des Programmspeichers sowie dem Setzen der Bootloader-Bits. Details zur Funktionsweise finden sich im Datenblatt des jeweiligen Prozessors. |
| | |
| Funktion: | Siehe Datenblatt |
| | |
| Format: | SPM |
| | |
| Zyklen: | abhängig von der ausgeführten Operation |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle ELPM, LPM |
| Befehlsreferenz |
| Beschreibung: | Speichert das Register Rr an der durch das angegebene Zeigerregister festgelegten Adresse und inkrementiert bzw. dekrementiert ggf. das Zeigerregister. | |||||||||
| | ||||||||||
| Format: |
| |||||||||
| | ||||||||||
| Siehe auch: | Die Befehle STD, LD, STS, OUT, MOV, SPM | |||||||||
| Befehlsreferenz |
| Beschreibung: | Speichert das Register Rr an der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet. | |
| | |
| Funktion: | (X) := Rr (bzw. (RAMPX:X) := Rr) |
| (Y) := Rr (bzw. (RAMPY:Y) := Rr) | |
| (Z) := Rr (bzw. (RAMPZ:Z) := Rr) | |
| | |
| Format: | 0£r£31 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle ST, STD, STS, LD, OUT |
| Befehlsreferenz |
| Beschreibung: | Speichert das Register Rr an der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse und inkrementiert danach das Zeigerregister X, Y oder Z. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. Beim Inkrementieren wird hier das RAMP-Register entsprechend mitverändert. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet und inkrementiert. | |
| | |
| Funktion: | (X) := Rr (bzw. (RAMPX:X) := Rr) |
| X := X + 1 (bzw. RAMPX:X := RAMPX:X + 1) | |
| | |
| (Y) := Rr (bzw. (RAMPY:Y) := Rr) | |
| Y := Y + 1 (bzw. RAMPY:Y := RAMPY:Y + 1) | |
| | |
| (Z) := Rr (bzw. (RAMPZ:Z) := Rr) | |
| Z := Z + 1 (bzw. RAMPZ:Z := RAMPZ:Z + 1) | |
| | |
| Format: | 0£r£31 |
| Folgende Kombinationen sind undefiniert: | |
| ST X+,R26 | |
| ST X+,R27 | |
| ST Y+,R28 | |
| ST Y+,R29 | |
| ST Z+,R30 | |
| ST Z+,R31 | |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle ST, STD, STS, LD, OUT |
| Befehlsreferenz |
| Beschreibung: | Dekrementiert das Zeigerregister X, Y oder Z und speichert danach das Register Rr an der durch das Register X (bzw. Y oder Z) gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. Beim Dekrementieren wird hier das RAMP-Register entsprechend mitverändert. | |
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet und dekrementiert. | |
| | |
| Funktion: | X := X - 1 (bzw. RAMPX:X := RAMPX:X - 1) |
| (X) := Rr (bzw. (RAMPX:X) := Rr) | |
| | |
| Y := Y - 1 (bzw. RAMPY:Y := RAMPY:Y - 1) | |
| (Y) := Rr (bzw. (RAMPY:Y) := Rr) | |
| | |
| Z := Z - 1 (bzw. RAMPZ:Z := RAMPZ:Z - 1) | |
| (Z) := Rr (bzw. (RAMPZ:Z) := Rr) | |
| | |
| Format: | 0£r£31 |
| Folgende Kombinationen sind undefiniert: | |
| ST -X,R26 | |
| ST -X,R27 | |
| ST -Y,R28 | |
| ST -Y,R29 | |
| ST -Z,R30 | |
| ST -Z,R31 | |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle ST, STD, STS, LD, OUT |
| Befehlsreferenz |
| Beschreibung: | Speichert das Register Rr von der durch das Register Y (bzw. Z) plus dem Offset q gegebenen Daten-Adresse. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. | |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPX, RAMPY bzw. RAMPZ-Register bestimmt. | ||
| Hat der Prozessor nicht mehr als 256 Bytes Daten-Adreßraum, so wird nur das untere Byte des Zeigerregisters X, Y oder Z ausgewertet. | ||
| | ||
| Funktion: | (Y+q) := Rr (bzw. (RAMPY:Y+q) := Rr) | |
| (Z+q) := Rr (bzw. (RAMPZ:Z+q) := Rr) | ||
| | ||
| Format: | 0£r£31, 0£q£63, | |
| | ||
| Zyklen: | 2 | |
| | ||
| Flags: | kein Einfluß | |
| | ||
| Siehe auch: | Die Befehle ST, LDD, LD, OUT | |
| Befehlsreferenz |
| Beschreibung: | Speichert das Register Rr an der Daten-Adresse k. Der Daten-Adreßraum setzt sich aus den Registern, dem I/O-Adreßraum sowie dem internen und externen SRAM zusammen. |
| Hat der verwendete Prozessor mehr als 64k Adreßraum, so wird das angesprochene 64k-Segment durch das RAMPD-Register bestimmt. | |
| | |
| Funktion: | (k) :=Rr (bzw. (RAMPD:k) :=Rr) |
| | |
| Format: | 0£r£31, 0£k£65535 |
| | |
| Zyklen: | 2 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Die Befehle ST, STD, LDS, LD, OUT |
| Befehlsreferenz |
| Beschreibung: | Subtrahiert zwei Register und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd - Rr | ||||||||||||
| | |||||||||||||
| Format: | 0£d£31, 0£r£31 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle SBC, ADD, SUBI | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Subtrahiert Konstante K vom Register Rd und schreibt das Ergebnis ins Register Rd. | ||||||||||||
| | |||||||||||||
| Funktion: | Rd := Rd - K | ||||||||||||
| | |||||||||||||
| Format: | 16£d£31, 0£K£255 | ||||||||||||
| | |||||||||||||
| Zyklen: | 1 | ||||||||||||
| | |||||||||||||
| Flags: |
| ||||||||||||
| | |||||||||||||
| Siehe auch: | Die Befehle SUB, SBCI, SBIW | ||||||||||||
| Befehlsreferenz |
| Beschreibung: | Vertauscht das obere und das untere Halbbyte (Nibble) im Register Rd. |
| | |
| Funktion: | Rd[7...4] « Rd[3...0] |
| | |
| Format: | 0£d£31 |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Der Befehl MOV |
| Befehlsreferenz |
| Beschreibung: | Aktualisiert die Status-Flags in Bezug auf den Inhalt des Registers Rd, d.h. testet, ob der Inhalt Null oder negativ ist. | ||||||||
| Tatsächlich wird das Register Rd mit sich selbst UND-verknüpft. | |||||||||
| | |||||||||
| Funktion: | Rd := Rd Ù Rd | ||||||||
| | |||||||||
| Format: | 0£d£31 | ||||||||
| | |||||||||
| Zyklen: | 1 | ||||||||
| | |||||||||
| Flags: |
| ||||||||
| | |||||||||
| Siehe auch: | Der Befehl AND | ||||||||
| Befehlsreferenz |
| Beschreibung: | Setzt den Watchdog-Timer zurück. Dieser Befehl muß in bestimmten Zeitabständen (siehe Prozessordatenblatt) aufgerufen werden. |
| | |
| Funktion: | Watchdog-Timer Reset |
| | |
| Format: | WDR |
| | |
| Zyklen: | 1 |
| | |
| Flags: | kein Einfluß |
| | |
| Siehe auch: | Der Befehl SLEEP |
| Befehlsreferenz |