Professional Documents
Culture Documents
Mnemonic
Operands
Description
Operation
Flags
Cycles
ADD
Rd,Rr
Rd = Rd + Rr
Z,C,N,V,H,S
ADC
Rd,Rr
Rd = Rd + Rr + C
Z,C,N,V,H,S
ADIW
Rd, K
Rd+1:Rd,K
Z,C,N,V,S
SUB
Rd,Rr
Rd = Rd - Rr
Z,C,N,V,H,S
SUBI
Rd,K8
Subtract Immediate
Rd = Rd - K8
Z,C,N,V,H,S
SBC
Rd,Rr
Rd = Rd - Rr - C
Z,C,N,V,H,S
SBCI
Rd,K8
Rd = Rd - K8 - C
Z,C,N,V,H,S
AND
Rd,Rr
Logical AND
Rd = Rd Rr
Z,N,V,S
ANDI
Rd,K8
Rd = Rd K8
Z,N,V,S
OR
Rd,Rr
Logical OR
Rd = Rd V Rr
Z,N,V,S
ORI
Rd,K8
Rd = Rd V K8
Z,N,V,S
EOR
Rd,Rr
Logical Exclusive OR
Rd = Rd EOR Rr
Z,N,V,S
COM
Rd
One's Complement
Rd = $FF - Rd
Z,C,N,V,S
NEG
Rd
Two's Complement
Rd = $00 - Rd
Z,C,N,V,H,S
SBR
Rd,K8
Rd = Rd V K8
Z,C,N,V,S
CBR
Rd,K8
Rd = Rd ($FF - K8)
Z,C,N,V,S
INC
Rd
Increment Register
Rd = Rd + 1
Z,N,V,S
DEC
Rd
Decrement Register
Rd = Rd -1
Z,N,V,S
TST
Rd
Rd = Rd Rd
Z,C,N,V,S
CLR
Rd
Clear Register
Rd = 0
Z,C,N,V,S
SER
Rd
Set Register
Rd = $FF
None
SBIW
Rdl,K6
Rdh:Rdl = Rdh:Rdl - K 6
Z,C,N,V,S
MUL
Rd,Rr
Multiply Unsigned
R1:R0 = Rd * Rr
Z,C
MULS
Rd,Rr
Multiply Signed
R1:R0 = Rd * Rr
Z,C
MULSU
Rd,Rr
R1:R0 = Rd * Rr
Z,C
FMUL
Rd,Rr
Z,C
FMULS
Rd,Rr
Z,C
FMULSU
Rd,Rr
Z,C
Branch Instructions
Mnemonic Operands
Description
Operation
Flags
Cycles
RJMP
Relative Jump
PC = PC + k +1
None
IJMP
None
PC = Z
None
JMP
Jump
PC = k
None
RCALL
STACK = PC+1, PC = PC + k + 1
None
3/4*
ICALL
None
STACK = PC+1, PC = Z
None
3/4*
CALL
Call Subroutine
STACK = PC+2, PC = k
None
4/5*
RET
None
Subroutine Return
PC = STACK
None
4/5*
RETI
None
Interrupt Return
PC = STACK
4/5*
CPSE
Rd,Rr
if (Rd ==Rr) PC = PC 2 or 3
None
1/2/3
CP
Rd,Rr
Compare
Rd -Rr
Z,C,N,V,H,S
CPC
Rd,Rr
Rd - Rr - C
Z,C,N,V,H,S
CPI
Rd,K8
Rd - K
Z,C,N,V,H,S
SBRC
Rr,b
if(Rr(b)==0) PC = PC + 2 or 3
None
1/2/3
SBRS
Rr,b
if(Rr(b)==1) PC = PC + 2 or 3
None
1/2/3
SBIC
P,b
if(I/O(P,b)==0) PC = PC + 2 or 3
None
1/2/3
SBIS
P,b
if(I/O(P,b)==1) PC = PC + 2 or 3
None
1/2/3
BRBC
s,k
if(SREG(s)==0) PC = PC + k + 1
None
1/2
BRBS
s,k
if(SREG(s)==1) PC = PC + k + 1
None
1/2
BREQ
Branch if equal
if(Z==1) PC = PC + k + 1
None
1/2
BRNE
if(Z==0) PC = PC + k + 1
None
1/2
BRCS
if(C==1) PC = PC + k + 1
None
1/2
BRCC
if(C==0) PC = PC + k + 1
None
1/2
BRSH
if(C==0) PC = PC + k + 1
None
1/2
BRLO
Branch if lower
if(C==1) PC = PC + k + 1
None
1/2
BRMI
Branch if minus
if(N==1) PC = PC + k + 1
None
1/2
BRPL
Branch if plus
if(N==0) PC = PC + k + 1
None
1/2
BRGE
None
1/2
BRLT
if(S==1) PC = PC + k + 1
None
1/2
BRHS
if(H==1) PC = PC + k + 1
None
1/2
BRHC
if(H==0) PC = PC + k + 1
None
1/2
BRTS
if(T==1) PC = PC + k + 1
None
1/2
BRTC
if(T==0) PC = PC + k + 1
None
1/2
BRVS
if(V==1) PC = PC + k + 1
None
1/2
BRVC
if(V==0) PC = PC + k + 1
None
1/2
BRIE
if(I==1) PC = PC + k + 1
None
1/2
BRID
if(I==0) PC = PC + k + 1
None
1/2
Operands
Description
Operation
Flags
Cycles
MOV
Rd,Rr
Copy register
Rd = Rr
None
MOVW
Rd,Rr
None
LDI
Rd,K8
Load Immediate
Rd = K
None
LDS
Rd,k
Load Direct
Rd = (k)
None
2*
LD
Rd,X
Load Indirect
Rd = (X)
None
2*
LD
Rd,X+
Rd = (X), X=X+1
None
2*
LD
Rd,-X
X=X-1, Rd = (X)
None
2*
LD
Rd,Y
Load Indirect
Rd = (Y)
None
2*
LD
Rd,Y+
Rd = (Y), Y=Y+1
None
2*
LD
Rd,-Y
Y=Y-1, Rd = (Y)
None
2*
LDD
Rd,Y+q
Rd = (Y+q)
None
2*
LD
Rd,Z
Load Indirect
Rd = (Z)
None
2*
LD
Rd,Z+
Rd = (Z), Z=Z+1
None
2*
LD
Rd,-Z
Z=Z-1, Rd = (Z)
None
2*
LDD
Rd,Z+q
Rd = (Z+q)
None
2*
STS
k,Rr
Store Direct
(k) = Rr
None
2*
ST
X,Rr
Store Indirect
(X) = Rr
None
2*
ST
X+,Rr
None
2*
ST
-X,Rr
X=X-1, (X)=Rr
None
2*
ST
Y,Rr
Store Indirect
(Y) = Rr
None
2*
STD
Y+,Rr
None
ST
-Y,Rr
Y=Y-1, (Y) = Rr
None
ST
Y+q,Rr
(Y+q) = Rr
None
ST
Z,Rr
Store Indirect
(Z) = Rr
None
ST
Z+,Rr
None
ST
-Z,Rr
Z=Z-1, (Z) = Rr
None
STD
Z+q,Rr
(Z+q) = Rr
None
LPM
None
R0 = (Z)
None
LPM
Rd,Z
Rd = (Z)
None
LPM
Rd,Z+
Rd = (Z), Z=Z+1
None
SPM
None
(Z) = R1:R0
None
IN
Rd,P
In Port
Rd = P
None
OUT
P,Rr
Out Port
P = Rr
None
PUSH
Rr
STACK = Rr
None
POP
Rd
Rd = STACK
Bit and Bit-test Instructions
None
Mnemonic
Operands
LSL
Rd
Description
Operation
Z,C,N,V,H,S
Flags
Cycles
LSR
Rd
Z,C,N,V,S
ROL
Rd
Z,C,N,V,H,S
ROR
Rd
Z,C,N,V,S
ASR
Rd
Rd(n)=Rd(n+1), n=0,...,6
Z,C,N,V,S
SWAP
Rd
Swap nibbles
None
BSET
Set flag
SREG(s) = 1
SREG(s)
BCLR
Clear flag
SREG(s) = 0
SREG(s)
SBI
P,b
I/O(P,b) = 1
None
CBI
P,b
I/O(P,b) = 0
None
BST
Rr,b
T = Rr(b)
BLD
Rd,b
Rd(b) = T
None
SEC
None
C =1
CLC
None
C=0
SEN
None
N=1
CLN
None
N=0
SEZ
None
Z=1
CLZ
None
Z=0
SEI
None
I=1
CLI
None
I=0
SES
None
S=1
CLN
None
S=0
SEV
None
V=1
CLV
None
V=0
SET
None
Set T-flag
T=1
CLT
None
Clear T-flag
T=0
SEH
None
H=1
CLH
None
H=0
NOP
None
No operation
None
None
SLEEP
None
Sleep
None
WDR
None
Watchdog Reset
None