background image

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 

RS; Z,N.V.S;  

ANDl; Rh.c255; Iloczyn log

iczny rejestru i stałej; Rh <- Rh 

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; - 

background image

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; - 

background image

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; 

SEV; -; 

Ustaw Hagę przepełnienia uzupełnienia do dwóch; V«-1; 

CLV; -; 

Zeruj (lagę przepełnienia uzupełnienia do dwóch; v«~o; 

SET; -; 

Ustaw Hagę T w rejestrze SREG; T«-1; 

CLT; -; 

Zeruj (lagę T w rejestrze SREG; T<-0; 

SEH; -; 

Ustaw Hagę przeniesienia pomocniczego; H*-1; 

CLH; -; 

Zeruj (lagę przeniesienia pomocniczego; H«-0; 

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