Motivazioni
Registro di stato
SREG
R=0
Il flag azzerato
Flag set by instruction
Il flag posto a 1
Flag not affected by instruction
Registri e operandi
Rd
Rr
Constant data
X, Y, Z
13
14
Indirizzamento (1)
Indirizzamento (2)
16
Indirizzamento (3)
Indirizzamento immediato
Indirizzamento diretto
Indirizzamento indiretto
17
Indirizzamento immediato
Loperando immediatamente
disponibile come costante numerica
contenuta in un campo dellistruzione
Nellistruzione assembly appare un
valore costante
ANDI R16,122
LDI R23,0xAA
Indirizzamento diretto
MOV R1,
R1 R15
STS 31456,
31456 R3
Indirizzamento indiretto
LD R10, X
LD R10, -X
Diretto,
singolo registro
0
15
6 5
OP
Rd
d
L'operando contenuto
nel registro Rd.
Il risultato viene
posto in Rd
31
REGISTER FILE
22
Diretto-diretto,
due registri Rd e Rr
15
10 9
OP
5 4
Rr
Rd
d
r
Il risultato viene
posto in Rd
I due operandi sono
contenuti nei registri Rd e Rr.
31
REGISTER FILE
23
Diretto-diretto,
registro Rd/r e porta A
15
11 10
OP
6 5
Rr/d
0
A
r/d
Il risultato viene
posto in Rd o A
I due operandi sono
contenuti nel
registro Rr/d e la
porta A di I/O.
31
63
REGISTER FILE I/O REGISTERS
24
Diretto-immediato,
registro Rd e costante K
0
15 12 11 8 7
OP
KH
4 3
Rd'
KL
Un operando costante,
l'altro contenuto in Rd
Il risultato viene
posto in Rd
31
REGISTER FILE
25
Diretto-diretto,
registro Rd/r e memoria
15
5 4
OP
Rr/d
k
31
16
0x0000
r/d
Il risultato viene
posto in Rd o (k)
I due operandi sono
contenuti nel
registro Rr/d e la
locazione di
memoria k.
31
RAMEND
REGISTER FILE DATA SPACE
26
Indiretto-diretto,
puntatore e registro Rr/d
15
5 4
OP
0x0000
Rr/d
X (Y o Z)
r/d
Il risultato viene
posto in Rd o (X)
I due operandi sono
contenuti nel
registro Rr/d e la
31
RAMEND
locazione puntata REGISTER FILE DATA SPACE
da X (o Y, o Z)
27
28
29
30
31
32
33
34
Operazioni aritmetiche
Operazioni di controllo
Operandi
Descrizione
Effetto
Flag
MOV
Rd, Rr
Copy Register
RdRr
None
MOVW
Rd, Rr
Copy Register
Pair
[Rd+1:Rd][Rr+1:Rr]
None
LDI
Rd', K
Load Immediate
RdK
None
Codice Operandi
Descrizione
Effetto
Flag
LDS
Rd, k
Rd(k)
None
LD
Rd, X|Y|Z
Load Indirect
Rd(X)
None
LD
Rd, X+|Y+|
Z+
Rd(X),
XX+1
None
LD
Rd, -X|-Y|-Z
XX-1,
Rd(X)
None
LDD
Rd,Y+q|Z+q
None
2
38
Operandi
Descrizione
Effetto
Flag
STS
k, Rr
Store Direct to
data space
(k)Rr
None
ST
X|Y|Z, Rr
Store Indirect
(X)Rr
None
ST
X+|Y+|Z+,
Rr
(X)Rr,
XX+1
None
ST
-X|-Y|-Z, Rr
XX-1,
(X)Rr
None
STD
Y+q|Z+q,
Rr
(Y+q)Rr
None
Codice
Operandi
Descrizione
Effetto
Flag
IN
Rd, A
In From I/O
Location
RdI/O(A)
None
OUT
A, Rr
Out To I/O
Location
I/O(A)Rr
None
1
39
Operandi
Descrizione
Effetto
Flag
PUSH
Rr
Push Register on
Stack
STACKRr,
SPSP-1
None
POP
Rd
SPSP+1,
RdSTACK
None
Codice
Operandi
Descrizione
Effetto
Flag
Load Program
Memory
R0(Z)
None
LPM
LPM
Rd, Z
Load Program
Memory
Rd(Z)
None
LPM
Rd, Z+
Load Program
Rd(Z),
Memory and Post- ZZ+1
Increment
None
Store Program
Memory
(Z)[R1:R0]
None
Store Program
Memory
(Z)[R1:R0],
ZZ+2
None
SPM
SPM
Z+
40
Operandi
Descrizione
Effetto
Flag
XCH
Z,Rd
Exchange RAM
location
TempRd,
Rd(Z),
(Z)Temp
None
LAS
Z,Rd
None
LAC
Z,Rd
TempRd,
Rd(Z),
(Z)TempRd
None
LAT
Z,Rd
TempRd,
Rd(Z),
(Z)TempRd
None
41
Aritmetiche (1)
Codice
Operandi
Descrizione
Effetto
Flag
ADD
Rd, Rr
RdRd+Rr
Z,C,N,V,S, 1
H
ADC
Rd, Rr
RdRd+Rr+C
Z,C,N,V,S, 1
H
ADIW
Rd1, K
Add Immediate to
Word
[Rd+1:Rd]
[Rd+1:Rd]+K
Z,C,N,V,S
42
Aritmetiche (2)
Codice
Operandi
Descrizione
Effetto
Flag
SUB
Rd, Rr
Subtract without
Carry
RdRd-Rr
Z,C,N,V,S, 1
H
SBC
Rd, Rr
Subtract with
Carry
RdRd-Rr-C
Z,C,N,V,S, 1
H
SBIW
Rd1, K
Subtract
Immediate from
Word
[Rd+1:Rd]
[Rd+1:Rd]-K
Z,C,N,V,S
SUBI
Rdb, K
Subtract
Immediate
RdRd-K
Z,C,N,V,S, 1
H
SBCI
Rdb, K
Subtract
Immediate with
Carry
RdRd-K-C
Z,C,N,V,S, 1
H
43
Aritmetiche (3)
Codice
Operandi
Descrizione
Effetto
Flag
NEG
Rd
Twos
Complement
Rd0-Rd
Z,C,N,V,S, 1
H
INC
Rd
Increment
RdRd+1
Z,N,V,S
DEC
Rd
Decrement
RdRd-1
Z,N,V,S
Codice
Operandi
Descrizione
Effetto
Flag
CLR
Rd
Clear Register
Rd0
Z,N,V,S
SER
Rd
Set Register
Rd0xFF
None
TST
Rd
RdRd&Rd
Z,N,V,S
CP
Rd, Rr
Compare
Rd-Rr
Z,C,N,V,S, 1
H
CPC
Rd, Rr
Compare with
Carry
Rd-Rr-C
Z,C,N,V,S, 1
H
CPI
Rdb, K
Compare with
Immediate
Rd-K
Z,C,N,V,S, 1
H
44
Aritmetiche (4)
Codice
Operandi
Descrizione
Effetto
Flag
MUL
Rd, Rr
Multiply unsigned
R1:R0Rd*Rr Z,C
(UU)
MULS
Rd, Rr
Multiply signed
R1:R0Rd*Rr Z,C
(SS)
MULSU
Rd, Rr
Multiply signed
with unsigned
R1:R0Rd*Rr Z,C
(SU)
FMUL
Rd, Rr
Fractional multiply
unsigned
R1:R0Rd*Rr Z,C
<<1 (UU)
FMULS
Rd, Rr
Fractional multiply
signed
R1:R0Rd*Rr Z,C
<<1 (SS)
FMULSU
Rd, Rr
Fractional multiply
signed with
unsigned
R1:R0Rd*Rr Z,C
<<1 (SU)
Logiche
Codice
Operandi
Descrizione
Effetto
Flag
AND
Rd, Rr
Logical AND
RdRdRr
Z,N,V,S
ANDI
Rd', K
d' > 15
RdRdK
Z,N,V,S
CBR
Rd', K
d' > 15
Clear Bit(s) in
Register
Rd
Rd(0xFF-K)
Z,N,V,S
OR
Rd, Rr
Logical OR
RdRdRr
Z,N,V,S
ORI
Rd', K
d' > 15
Logical OR with
Immediate
RdRdK
Z,N,V,S
SBR
Rd', K
d' > 15
Set Bit(s) in
Register
RdRdK
Z,N,V,S
EOR
Rd
Exclusive OR
RdRdRr
Z,N,V,S
COM
Rd
Ones
Complement
Rd0xFF-Rd
Z,C,N,V,S
46
Operandi
Descrizione Effetto
Flag
LSL
Rd
Logical
Shift Left
CRd(7), n=6..0
Rd(n+1)Rd(n),
Rd(0)0
Z,C,N,V,H
LSR
Rd
Logical
Shift Right
CRd(0), n=0..6
Rd(n)Rd(n+1),
Rd(7)0
Z,C,N,V
ASR
Rd
Arithmetic
Shift Right
CRd(0), n=0..6
Rd(n)Rd(n+1),
Rd(7)Rd(7)
Z,C,N,V
47
Operandi
Descrizione
Effetto
Flag
ROL
Rd
Rotate Left
Through Carry
CRd(7), n=6..0
Rd(n+1)Rd(n),
Rd(0)Coldold
Z,C,N,V,H
ROR
Rd
Rotate Right
Through Carry
CRd(0), n=0..6
Rd(n)Rd(n+1),
Rd(7)Cold
Z,C,N,V
SWAP
Rd
Swap Nibbles
Rd(3..0)(7..4)
None
48
Operandi
Descrizione
Effetto
Flag
BSET
Flag Set
SREG(s)1
SREG(s)
Set flag
Flag Clear
SREG(s)0
SREG(s)
Clear flag
SE1
BCLR
CL
SBI
Aa , b
I/O(A, b)1
None
CBI
Aa , b
I/O(A, b)0
None
BST
Rr, b
TRr(b)
BLD
Rd, b
Rd(b)T
None
Descrizione
Effetto
Flag
RJMP
Relative Jump
PCPC+k+1
None
IJMP
Indirect Jump
PCZ
None
EIJMP
Indirect Jump
PCZ
None
Indirect Jump
PCZ
None
JMP
50
Descrizione
Effetto
Flag
RCALL k
Relative Call
Subroutine
PUSH PCH
PUSH PCL
None
PCPC+k+1
ICALL
Indirect Call
PUSH PCH,
PUSH PCL,
PCZ
None
RET
Subroutine
Return
RETI
Interrupt Return
Operandi
Descrizione
Effetto
Flag
CPSE
Rd, Rr
Compare, Skip if
Equal
if (Rd=Rr)
PCPC+2 or 31
None
12
SBRC
Rr, b
Skip if Bit in
Register Cleared
if (Rr(b)=0)
PCPC+2 or 31
None
12
SBRS
Rr, b
Skip if Bit in
Register Set
if (Rr(b)=1)
PCPC+2 or 31
None
12
SBIC
A, b
if (I/O(A,b)=0)
PCPC+2 or 31
None
22
SBIS
A, b
If (I/O(A,b)=1)
PCPC+2 or 31
None
22
Codice
Operandi
Descrizione
Effetto
Flag
BRBS
s, k
Branch if Status
Flag Set
if (SREG(s)=1)
PCPC+k+1
None
11
BRBC
s, k
Branch if Status
Flag Cleared
if (SREG(s)=0)
PCPC+k+1
None
11
BRXX2
Branch if
if (XX)
None
11
Condition XX is
PCPC+k+1
True
La condizione
XX corrisponde a uno dei possibili valori logici di un flag, secondo
1
Tempo di esecuzione in assenza di salto. Se c salto occorrono 2 T.
la tabellina nel lucido seguente.
53
C=0
Z=1
Z=0
N=1
N=0
CC, SH
EQ
NE
MI
PL
Carry
Cleared
Same or
Higher
Equal Not
Equal
Minus
Plus
S=0
H=1
H=0
T=1
T=0
LT
HS
HC
TS
TC
Half
carry
Set
Half
carry
cleared
T flag
Set
T flag
Cleared
54
V=0
I=1
I=0
VC
IE
ID
Overflow
Cleared
Interrupt Interrupt
enabled disabled
55
Operandi
Descrizione
Effetto
Flag
BREAK
Break
(see specific
description)
None
NOP
No
operation
(see specific
description)
None
SLEEP
Sleep
(see specific
description)
None
WDR
Watchdog
Reset
(see specific
description)
None
56