Vous êtes sur la page 1sur 7

Classification des instructions de l’Atmega328P :

• Instructions arithmétiques :
Addition : ADD, ADC, ADIW, INC
Soustraction : SUB, SUBI, SBC, SBCI, SBIW, DEC

Multiplication : MUL, MULS, MULSU, FMUL, FMULS, FMULSU

ADD : additionne les contenus de deux GPRs

Syntaxe :

ADD Rd,Rr ; RdRd+Rr , 0 ≤ 𝑟, 𝑑 ≤ 31

Code machine : 0000 11rd dddd rrrr

Exemple :

ADD R0,R1

ADC : Additionne les contenus de deux GPRs plus la retenue ( C )

Syntaxe :

ADC Rd,Rr ; RdRd+Rr+C

Code machine : 0001 11rd dddd rrrr

Exemple :

ADC R2,R3

INC : Incrémente le contenu d’un GPR par 1

Syntaxe :

INC Rd

Code machine :
1001 010d dddd 0011

Exemple :

INC R10

14
ADIW :Additionne une constante à un registre 16 bits

Syntaxe :

ADIW Rd : Rd-1 , K

Code machine : 1001 0110 kkdd kkkk

La constante K est sur 6 bits : 0 ≤ 𝐾 ≤ 63

dd donne 4 possibilités pour le choix du registre 16 bits à utiliser:

00 R25 : R24
01 R27 : R26

10 R29 : R28

11 R31 : R30

Exemple :

ADIW R25 :R24 , 5

SUB : soustraction entre deux GPRs

Syntaxe :

SUB Rd,Rr ; RdRd-Rr

Code machine : 0001 10rd dddd rrrr

Exemple :

SUB R0,R1

SUBI : soustrait une constante d’un GPR

Syntaxe :

SUBI Rd , K ; RdRd-K 16≤d≤ 31

Code machine : 0101 kkkk dddd kkkk

Exemple :

SUBI R16,5

SBC : Soustraction entre deux GPRs moins la retenue ( C )

15
SBCI :Soustrait une constante d’un GPR

Syntaxe :

SBCI Rd,K ; RdRd-K , 16≤ 𝑑 ≤ 31

Code machine :
0100 kkkk dddd kkkk

Exemple :

SBCI R18 , 20

DEC : Décrémenter un GPR par 1

Syntaxe :

DEC Rd, RdRd-1

Code machine 1001 010d dddd 1010

Exemple :

DEC R2,

SBIW :Soustraire une constante d’un registre de 16 bits

Syntaxe :

SBIW Rd : Rd-1 , K

Code machine :
1001 0111 kkdd kkkk
Exemple :

SBIW R25 :R24, 20

MUL : Multiplication non signée (les opérandes sont des entiers non signés)

Syntaxe :

MUL Rd,Rr , le résultat est toujours dans R1 : R0

Code machine : 1001 11rd dddd rrrr


Exemple :

MUL R16,R17

16
MULS : Multiplication signée (les opérandes sont des entiers signés)

Syntaxe :

MULS Rd,Rr ; le résultat est toujours dans R1 : R0

Exemple :

MULS R16,R17

MULSU: Multiplication signé-non signé (un opérande signé et un opérande non signés)

Syntaxe :

MULS Rd,Rr ; le résultat est toujours dans R1 : R0

Exemple :

MULSU R16,R17

On dispose des mèmes instructions précédentes pour les nombres fractionnaires :

FMUL, FMULS, FMULSU : le résultat est toujours dans R1 : R0 et les registres adressés sont
R16 à R23.

• Instructions logiques : permettent de réaliser des opérations logiques bit à bit (bitwise)
AND : et logique entre deux GPRs
Syntaxe :
AND Rd,Rr ; RdRd and Rr
Code machine :
0010 00rd dddd rrrr
Exemple :

AND R0,R1

ANDI : et logique entre un GPR et une constante


Syntaxe :
ANDi Rd,K ; RdRd and K
Code machine :
0111 kkkk dddd kkkk

Exemple :

ANDI R0,$20

OR : ou logique entre deux GPRs


Syntaxe :
OR Rd,Rr ; RdRd OR Rr

17
Code machine : 0010 10rd dddd rrrr

Exemple :

OR R0,R1

ORI : ou logique entre un GPR et une constante

Syntaxe :
ORI Rd,K ; RdRd OR K

Code machine :
0110 kkkk dddd kkkk

Exemple :

ORI R0,R1

EOR : ou exclusif entre deux GPRs

Syntaxe :

EOR Rd,Rr

Code machine : 0010 01rd dddd rrrr


Exemple :

EOR R10,R15

EORI : ou exclusif entre un GPR et une constante

Syntaxe :

EORI Rd,K

Exemple :

EORI R10,0 x15

COM : Complément à 1 d’un GPR

Syntaxe :

COM Rd

Code machine : 1001 010d dddd 0000

Exemple :

COM R12

18
NEG :complément à 2 d’un GPR

Syntaxe :

NEG Rd

Code machine :
1001 010d dddd 0001

Exemple :

NEG R20

Instructions de manipulation de bits :

SBR, CBR, SER, CLR, TST

SBR : mettre un bit dans un GPR à 1 (même que ORI)

Code machine 0110 kkkk dddd kkkk

CBR : mettre à 0 un bit dans un GPR

SER : charger un GPR par $FF

Code machine 1110 1111 dddd 1111


CLR : mettre à 0 un GPR

Code machine 0010 01dd dddd dddd

TST : test un GPR si nul ou négatif

Code machine : 0010 00dd dddd dddd

• Comparaison :
✓ la comparaison modifie seulement le registre SREG
✓ la comparaison est effectuée pour se préparer à un branchement (saut)
✓ le branchement dépendra des états des flags du registre SREG
✓ une comparaison sans branchement est sans utilité

CP : comparaison entre deux GPRs

Syntaxe :

CP Rd,Rr ; opération Rd-Rr pas de résultat de soustraction mais les flags sont affectés

19
Code machine :
0001 01rd dddd rrrr
Exemple :

CP R16,R17

CPC : comparaison entre deux GPRs moins la retenue ( C )

Syntaxe :

CPC Rd,Rr ; opération Rd-Rr-C pas de résultat de soustraction mais les flags sont affectés

Code machine :
0000 01rd dddd rrrr
Exemple :

CPC R16,R17

CPI : comparaison entre GPR et une constante

Syntaxe :

CPI Rd,K ; opération Rd-K pas de résultat de soustraction mais les flags sont affectés

Code machine :
0011 kkkk dddd kkkk
Exemple :

CPI R16,40

CPSE : comparer et sauter si égal.

Syntaxe :

CPSE

Code machine :
0001 00rd dddd rrrr

Instructions de transfert de données :

LDI, LDS, LD, ST, STS, MOV

20

Vous aimerez peut-être aussi