ADD; Rd.Rs;
Dodaj zawartość dwóch rejestrów; Rd *- Rd + Rs; Z,C.N.V.H,S;
ADC; Rd.Rs;
Dodaj zawartość dwóch rejestrów z przeniesieniem; Rd«- Rd + Rs + C; Z,C,N.V,H.S;
ADIW; RR.C63;
Dodaj bezpośrednio stalą do słowa; RRIt:RRI *- RRh:RRI + c63; Z.C,N,V.S;
SUB; Rd.Rs;
Odejmij zawartość dwóch rejestrów; Rti <- Rd - Rs; Z.C,N.V.H.S;
SUBI; Rh,c255;
Odejmij stalą od rejestru; Rh <- Rh - C255; Z.C.N.V,H,S;
SBIW; RR.C63;
Odejmij bezpośrednio stalą od słowa; RRh:RRI<-RRh:RRI-c63; Z.C,N.V,S;
SBC; Rd.Rs; Odejmij z
awartość dwóch rejestrów z przeniesieniem; Rdł-Rd-Rs-C; Z.C.N,V,H,S;
SBCI; Rh,c255;
Odejmij stalą, z przeniesieniem od rejestru; Rh <- Rh - C255 -C; Z.C.N,V,H,S;
AND; Rd.RS;
Iloczyn logiczny rejestrów; RrJ *- Rd
A
RS; Z,N.V.S;
ANDl; Rh.c255; Iloczyn log
iczny rejestru i stałej; Rh <- Rh
A
C255; Z.N.V,S;
OR; Rd,Rs;
Suma logiczna rejestrów; Rd t- Rd v Rs; Z,N,V,S;
ORI; Rh,c255;
Suma logiczna rejestru i stałej; Rh (~ Rh v C255; Z.N.V,S;
EOR; Rd.Rs;
Suma Exclusive OR rejestrów; Rd t- Rd ffi Rs; Z,N,V.S;
COM; Rd;
Uzupełnienie do jedności (negacja bitów); Rd*-SFF-Rd; Z,C,N.V.S;
NEG; Rd;
Uzupełnienie do dwóch; Rd<-S00-Rd; Z.C.N,V.H,S;
SBR; Rh,c255; Ustaw bit(y) w rejestrze;
Rh «- Rh v c2S5; Z.N.V,S;
CBR; Rh.c255; Zeruj bit(y) w rejestrze; Rh*-RhAc255; Z,N,V.S;
INC; Rd; Inkrementuj rejestr; Rd *- Rd + 1; Z,N.V.S;
DEC; Rd; Dekrementuj rejestr;
Rd ł- Rd -1; Z.N.V.S;
TST; Rd;
Sprawdź zero lub minus; Rd*-RdARd; Z,N.V.S;
CLR; Rd; Zeruj rejestr; Rd <-
Rd © Rd; Z,N,V,S;
SER; Rh; Ustaw rejestr; Rh <- SFF; -;
MUL; Rd.Rs;
Mnożenie liczb bez znaku; R1 :R0 <- Rd ■ Rs; z,c;
MULS; Rhd.Rhs;
Mnożenie liczb ze znakiem; R1:R0<-Rhd-Rhs; z.c;
MULSU; Rhd.Rhs;
Mnożenie liczby ze znakiem z liczbą bez znaku; R1:R0<-RhdRhs; z,c;
FMUL; Rd.Rs;
Mnożenie liczb ułamkowych bez znaku; R1:R0*-(Rd-Rs)<<1; Z.C
FMULS; Rd.Rs;
Mnożenie liczb ułamkowych ze znakiem; R1:R0«-(Rd-Rs)«1; Z.C
FMULSU; Rd.Rs;
Mnożenie liczby ułamkowe) ze znakiem z liczbą ułamkową be2 znaku; R1:R0*-(Rd-
Rs)<<1; Z,C
RJMP; C1024;
Skok względny; PC<-PC + c1024 + 1; -
IJMP; ;
Skok pośredni określony zawartością rejestru Z; PC«-Z; -
EIJMP; ; Rozszerzony
skok pośredni określony zawartością rejestru Z; PC(1S..0)*-Z PC(21..16)«-EIND; _
JMP; adr4M; Skok
bezpośredni; PC *- adr4M; -
RCALL; C1024;
Względne wywołanie podprogramu; (SPL) <- PC+1 SPL <- SPL -2PC«- PC + C1024 + 1;
ICALL; ";
Pośrednie wywołanie podprogramu, określone zawartością rejestru Z; (SPL) <- PC+1SPL «-SPL-
2PC«-Z;
EICALL; ;
Rozszerzone, pośrednie wywołanie podprogramu, określone zawartością rejestrów ZI EIND; (SP)
*- PC+1SPL < SPL -3PC(15...0)< ZPC(21..t6)<-EIND;
CALL; adrtM;
Wywołanie podprogramu; (SP) *- PC+1 (SP)*-SP-2 PC«- ard4M; .
RET; -;
Powrót z podprogramu; PC <- (SPL) SPL«- SPL + 2; _
RETI; -;
Powrót z przerwania; PC *- (SPL) SPL«- SPL + 2; I
CPSE; Rd.Rs;
Porównaj I przeskocz, jeśli równe; (Rd=Rs)=>PC«-PC + 2lub 3; _
CP; Rd.Rs;
Porównaj rejestry; Rd-Rs; Z.C,N.V.H.S
CPC; Rd.Rs;
Porównaj rejestry z przeniesieniem; Rd-Rs-C; Z.C.N.V.H.S
CPI; Rh.c255;
Porównaj rejestrze stalą; Rh-c255; Z.C,N.V.H.S
SBRC; Rs.b;
Przeskocz, jeśli bit w rejestrze jest wyzerowany; Rs(b)=0=>PC«-PC+2 Rs(b)=1 =>PC«-PC + t;
_
SBRS; Rs.b;
Przeskocz, jeśli bit w rejestrze jest ustawiony; Rs(b)=1 =>PC<-PC + 2Rs(b)=0=>PC^PC + 1; _
SBIC; Pi,b;
Przeskocz, jeśli bit w rejestrze we/wy jest wyzerowany; Pl(b)=0=>PC«-PC + 2 Pl(b)=t => pc<~ PC
+ 1; _
SBIS; Pl.b;
Przeskocz, jeśli bit w rejestrze we/wy jest ustawiony; Pi(b)=1 =>PC«-PC + 2 PI(b)=0=>PC«-PC +
1; .
BRBS; b.c127;
Skok względny, jeśli (laga w rejestrze SREG jest ustawiona; SREG(b)=1 = >PC«-PC +C127
+ 1 SREG(b)=0=>PC<-PC + 1;
BRBC; b.c127;
Skok względny, jeśli tlaga w rejestrze SREG jest wyzerowana; SREG(b)=0=>PC<-PC +
C127 + 1SREG(b)=1 = >PC<- PC + 1;
BREO; C127;
Skok względny, jeśli równe; Z=1 = >PC«-PC+c127 + 1Z=0=>PC«-PC + 1; -
BRNE; C127;
Skok względny, jeśli nierówne; 2=0=>PC«-PC+c127 + 1 Z=l => PC <- PC + 1; -
BRCS; C127;
Skok wzgtedny, jeśli daga przeniesienia jest ustawiona; C=1 =>PC<-PC+C127 + 1 C=0 = >
PC *- PC + 1; -
BRCC; C127;
Skok względny, jeśli flaga przeniesienia jest wyzerowana; C=0=>PC<-PC+c127 + 1 C=1 =
> PC*-PC + 1; -
BRSH; cl 27;
Skok względny, jeśli większy lub równy (dotyczy liczb bez znaku); C=0=> PC<-PC+C12? + 1
C=1 => PC «-PC + 1; -
BRLO; cl 27;
Skok względny, jeśli mniejszy (dotyczy liczb bez 2naku); C=1 =>PC«-PC+c127 + 1 C=0=>
PC «~ PC + 1; -
BRMI; C127;
Skok względny, jeśli ujemny; N=1 = >PC+-PC+c127 + 1 N=0=>PC*-PC + 1; -
BRPL; C127;
Skok względny, jeśli dodatni; N=0=>PC<-PC +C127 + 1 N=1 =>PC«-PC + 1; -
BRGE; C127;
Skok względny, jeśli większy lub równy (dotyczy liczb ze znakiem); S=0=>PC«-PC+c127 +
1S=1 => PC<~PC + 1; -
BRLT; C127;
Skok względny, jeśli mniejszy niż zero (dotyczy liczb ze znakiem); S=1 => PC <- PC +C127 +
1 S=0=> PC <-PC + 1; -
BRHS; C127;
Skok względny, jeśli (laga przeniesienia pomocniczego ustawiona; H=1 => PC*-PC+C127 + 1
H=t)=>PC<-PC + 1; -
BRHC; C127;
Skok względny, jeśli (iaga przeniesienia pomocniczego wyzerowana; H=0=>PC<~PC+C127
+ 1 H=1 =>PC<-PC + 1; -
BRTS; C127;
Skok względny, jeśli znacznik T jest ustawiony; T=1 => PC<-PC+c127 + 1 T=0=> PC <- PC +
1; -
BfiTC; C127;
Skok względny, jeśli znacznik T jest wyzerowany; T=0=> PC«~PC +C127 + 1 T=1 =>PC«-
PC + 1; -
BRVS; C127;
Skok względny, jeśli flaga przepełnienia ustawiona; V=1 => PC«-PC+c127 + 1 V=0=> PC <-
PC + 1; -
BRVC; C127; Skok wz
ględny, jeśli tlaga przepełnienia wyzerowana; V=0=> PC*~PC +C127 + 1 V=1 =>PC«-
PC + 1; -
BRIE; 5127;
Skok względny, jeśli przerwania odblokowane; 1=1 => PC«-PC+C127 + 1 l=0 => PC«-PC +• 1;
-
BR1D; C127;
Skok względny, Jeśli przerwania zablokowane; l=0=> PC<-PC+c127 + 1 1=1 =>PC<-PC + 1;
-
MOV; Rd.Rs;
Kopiuj zawartość rejestru Rs do rejestru Rd; Rd<~Rs; -
MOVW; Rd+1:Rd, Rs+1:RS;
Kopiuj zawartość stówa z rejestrów Rs+1:Rs do rejestrów Rd+1:Rd; Rd+l:Rd+-
Rs+l:Rs; ~
LDI; Rh,c255;
Ładuj rejestr bezpośrednio stalą; Rb <r- C255; -
LD; Rd,X;
Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr X; Rd«-
(X); -
LD; Rd,X+;
Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego prze2 rejestr X z
postinkrementacją; Rd«-(X) X<-X + 1; -
LD; Rd.-X;
Ładu) re|estr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr X z
predekrementacją; X«-X-1 Rd«-(X); -
LD;
Rd,Y „; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Y;
Rd*~(Y); -
LD; Rd,Y
+; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Y z
postinkrementacją.; Rd*- (Y) Y«-Y+1;
LD ; Rd,-
Y; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Y z
predekrementacja; Ył-Y-1 Rd<-(Y); -
LDD;
Rd,Y+c63; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Y
z przemieszczeniem; Rd «- (Y + C63); -
LD;
Rd.Z; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Z; Rd«-
(Z); _
LD;
Rd,Z+; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Z z
postinkrementacją; Rd <~ (Z) Z«-Z + 1; -
LD; Rd,-
Z; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Z z
predekrementacja; Z*-Z-1 Rd*-(Z); -
LDD;
Rd,Z+c63; Ładuj rejestr pośrednio daną z pamięci SRAM spod adresu wskazywanego przez rejestr Z z
przemieszczeniem; Rd <- (Z + C63); -
LDS;
Rd,adr65535; Ładuj rejestr bezpośrednio daną z pamięci SRAM spod adresu adr; Rd *- (adr65535); -
ST;
X,RS; zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr X; (X)<-Rs; -
ST;
X+.RS; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr X z
postinkrementacją; (X)*-Rsx*-x +1; -
ST; -
X,Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr X z
predekrementacja; X<-X-1(X) t-Rs; -
ST;
Y.Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Y; (Y)<-Rs; -
ST;
Y+.Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Y z
postinkrementacją; (Y)«-Rs Y«-Y+1; -
ST; -
Y,Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Y z
predekrementacja; Y«-Y-1 <Y)«-Rs; -
STD;
Y+c63.Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Y z
przemieszczeniem; (Y+c63) <~ Rs; -
ST;
Z.Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Z; (Z)«-Rs; -
ST;
Z+.RS; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Z z
postinkrementacją; (Z) *- Rs Zf-Z + 1; -
ST; -
Z.Rs; Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Z z
predekrementacja; Z<-Z-1 (Z) <- Rs; -
STD; Z+c63,Rs;
Zachowaj pośrednio rejestr w pamięci SRAM pod adres wskazywany przez rejestr Z z
przemieszczeniem; (Z+c63) <- Rs; -
STS; adr.Rs;
Zachowaj bezpośrednio rejestr w pamięci SRAM pod adres adr; (adr) <- Rs; -
LPM; _;
Ładuj bajt pamięci programu do rejestru RO; RO«-(Z); -
LPM; Rd.Z;
Ładuj bajt pamięci programu do rejestru Rd; Rdł-(Z); -
LPM; Rd.z+;
Ładuj bajt pamięci programu do rejestru Rd z postinkrementacją; Rd <- (Z) Z-t- Z + 1; -
ELPM; _;
Rozszerzone ładowanie bajtu pamięci programu do rejestru RO; R0«-(RAMPZ:Z); -
ELPM; Rd.Z;
Rozszerzone lądowanie bajtu pamięci programu do rejestru Rd; Rd <- (RAMPZ2); "
ELPM; Rd,Z+;
Rozszerzone lądowanie bajtu pamięci programu do rejestru Rd z postinkrementacją; Rd *-
(RAMPZ:Z) Z<-Z + 1; -
SPM; _;
Zapisz pamięć programu; (Z)<-R1:R0; -
IN; Rd.P; Czytaj port;
Rd«-P; -
OUT; P.Rs; Zapisz port; P<-Rs; -
PUSH; Rs;
Odłóż rejestr na stos; (SPL) <- RS SPL «- SPL -1; -
POP; Rd; Pobierz ze stosu;
SPL «- SPL + 1 Rd t- (SPL); _
SBI; Pl.b; Ustaw bit w rejestrze we/wy; Pl(b) <- 1; -
CBI; Pl.b; Zeruj bit w rejestrze we/wy;
Pl(b)«- 0; -
LSL; Rd;
Przesuń logicznie w lewo zawartość rejestru; Rd(n+1)«-Rd(n). Rd{0)*-0; Z.C.N,V.H
LSR; Rd;
Przesuń logicznie w prawo zawartość rejestru; Rd(n)«-Rd(n-t-1),Rd(7)<~0; Z,C,N.V
ROL; Rd;
Obróć w lewo przez przeniesienie; Rd(0)<-C. Rd{n+1)<-Rd{n), C «- Rd(7); Z.C,N,V.H
ROR; Rd;
Obrót w prawo przez przeniesienie; Rd(7)«-C, Rd(n)t-Rd(n+1). C«- Rd(0); Z.C.N.V
ASR; Rd;
Przesuń arytmetycznie w prawo; Rd(n)<-Rd(n+1),n=0..6; Z,C,N.V
SWAP; Rd;
Zamień pólbajty rejestru; Rd(3..0)«-Rd(7...4). Rd(7...4)«-Rd(3...0).; _
BSET; b;
Ustaw Hagę; SREG(b) <-1; SRE6(b)
BCLR; b;
Zeruj flagę; SREG(b) <- 0; SREG(b)
BST; Rs,b; Zachowaj bit rejestru w znaczniku T;
T«-Rs(b); T
BLD; Rd.b;
Ładu) znacznik T do bitu rejestru; Rd(b)«- T; -
SEC; -;
Ustaw flagę przeniesienia; C«-1; C
CLC; -; Zeruj fl
agę przeniesienia; Cł-0; C
SEN; -;
Ustaw flagę wartości ujemnej; N<-1; N
CLN; -;
Zeruj flagę wartości ujemnej; N«-0; N
SEZ; -;
Ustaw flagę zera; Z«-1; Z
CLZ; -;
Zeruj flagę zera; Z<-0; Z
SEI; -; Odblokuj przerwania; l<-t; I
CLI; -; Zablokuj przerwania;
l«-0; I
SES; -;
Ustaw flagę znaku; S<-1;
S
.
CLS; -;
Zeruj (lagę znaku; S«-0;
s
SEV; -;
Ustaw Hagę przepełnienia uzupełnienia do dwóch; V«-1;
V
CLV; -;
Zeruj (lagę przepełnienia uzupełnienia do dwóch; v«~o;
V
SET; -;
Ustaw Hagę T w rejestrze SREG; T«-1;
T
CLT; -;
Zeruj (lagę T w rejestrze SREG; T<-0;
T
SEH; -;
Ustaw Hagę przeniesienia pomocniczego; H*-1;
H
CLH; -;
Zeruj (lagę przeniesienia pomocniczego; H«-0;
H
NOP; -;
Nic nie rób;
SLEEP; -;
Przejdź w tryb uśpienia; Działanie opisano w dalszej części rozdziału
WDR; -; Zeruj rejestr watchdoga;
Działanie opisano w dalszej części rozdziału
BREAK; _; Przerwij wykonywanie programu;
Działanie opisano w dalszej części rozdziału