Transcript
05/03/2015
1
Introduction
Chapitre 1
Langage d'assemblage
Architecture générale
Mémoire
Circuits de contrôle
Registres(CP, RI, etc) UAL
Bus d’adresses
Bus de données
05/03/2015
2
Le 68000 (Motorola)� ~68000 composants (transistors) (Intel Core i5 � > 1 milliard
de transistor)
� Processeur CISC (1979)◦ Grand jeu d'instructions; opérandes dans les registres et/ou en
mémoire
◦ 14 modes d'adressage, taille d'instruction varie selon le mode
◦ Registres de données et d'adresses, séparés.
� Adresses sur 24bits → 16M octets adressables
� Données sur 16bits
� 64 broches
� ALU de 16bits
� 18 registres
� 2 modes: superviseur et utilisateur.
Le 68000: les registres
� 8 registres de données D7..D0
� 7 registres d’adresse A6..A0
� 3 registres spéciaux
◦ PC (compteur ordinal 32 bits)
◦ SR (registre d'état 16 bits, l'octet de poids faible est appelé CCR: Condition Code Register)
◦ USP (pointeur de pile utilisateur 32 bits) (A7)
◦ SSP (pointeur de pile superviseur 32 bits) (A7)1 seul registre
05/03/2015
3
Le 68000: les registres (2)
Utilisation du 68000
Sega Megadrive
Texas instr TI-92Mac 512-K
Atari ST
Calcul des règles
de pilotage A320
05/03/2015
4
Les CPUs vendues
Catégories de puce
Unités vendues (millions*)
Embarqués 4 bits 2000
Embarqués 8 bits 4700
Embarqués 16
bits
700
Embarqués 32 bits
400
DSP 600
Desktop 32/64
bits
150 *(vielle source: D. Tannenhouse (directeur de
recherche Intel) RTSS 99, 12/99.
En 2004:• 14 milliards de processeurs pour l’embarqué (microprocesseur, microcontrôleur, DSP, etc.)• 260 millions de processeurs PC.
� Moins de 2% (5%) des processeurs vendu sont pour les PC, 98% (95%) pour l’embarqué
� Prix moyen d’un processeur 6$ (2004) alors qu’un processeur PC coute 300$.
� Le marché du processeur PC est de très faible volume … mais très lucratif
Les CPU utilisées dans l’embarqué …
Famille 32 bits Unités vendues (millions*)
ARM 151
Motorola 68K 94
MIPS 57
Hitachi SuperH 33
x86 29
PowerPC 10
Intel i960 8
SPARC 3
AMD 29K 2
*source: T. R Halfhill. “Embedded market Breaks
New Ground” Microprocessor Report Jan 2000
05/03/2015
5
�Copie de données (MOVE)
�Opérations arithmétiques
(ADD, SUB, MULS, DIVS)
�Branchements inconditionnels (BRA)
�Branchements conditionnels (BEQ)
Quelques instructions (exemples Motorola 68000)
Introduction
Exemple d'adresse: 124
Exemple de constante: #124
Adresses et constantes
Introduction
05/03/2015
6
Exemple MOVE
Introduction
MOVE.L 124 , 132
Mettre dans la case numéro 132 une valeur identique à celle qui se trouve dans la case numéro 124.
Exemple MOVE
Introduction
MOVE.L 124 , 132
Copier à l'adresse 132 la valeur se trouvant à l'adresse 124
adresse @
05/03/2015
7
Exemple MOVE
Introduction
MOVE.L #124 , 132
Mettre la valeur 124 dans la case numéro 132 (ayant pour adresse 132)
Exemple ADD
Introduction
ADD.L #124 , 132
• Aller chercher la valeur se trouvant trouvant à l'@ 132• Ajouter 124 à cette valeur• Ranger le résultat à l'@ 132
05/03/2015
8
Exemple BRA
Introduction
ADD.L #1,132 ; instruction 1
BRA SUITE ; instruction 2
ADD.L #1,132 ; instruction 3
SUITE:
L'instruction 3 n'est pas exécutée
Noter la présentation duprogramme. Utiliser lestabulations pour aligner.
Exemple BEQ
Introduction
MOVE.L #2,120 ; instruction 1
SUB.L #2,120 ; instruction 2
BEQ SUITE ; instruction 3
ADD.L #1,132 ; instruction 4
SUITE:
L'instruction 4 n'est pas exécutée
BEQ: Branchement si égal 0(si la valeur précédemmentproduite vaut 0)
05/03/2015
9
Exemple BEQ
Introduction
MOVE.L #3,120 ; instruction 1
SUB.L #2,120 ; instruction 2
BEQ SUITE ; instruction 3
ADD.L #1,132 ; instruction 4
SUITE:
L'instruction 4 est exécutée
Un ";" indique uncommentaire jusqu'à lafin de la ligne
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
05/03/2015
10
Exemple de programme
Introduction
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
On définit toutes les variables dans une zone DATA
Les variables apparaissent généralement au début du programme.
Exemple de programme
Introduction
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Définition d'une variable de type entier (long) 32 bits (int)
La valeur d'initialisation est ici exprimée en décimal
05/03/2015
11
Exemple de programme
Introduction
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Définition d'une variable de type (Byte) octet (8 bits) (char)
La valeur d'initialisation est ici exprimée en hexadécimal
($)
Exemple de programme
Introduction
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Définition d'un tableau de 12 octets (char [])
05/03/2015
12
Exemple de programme
Introduction
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Les instructions suivent généralement les données dans une zone CODE
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
L'instruction MOVE permet de copier une donnée.
05/03/2015
13
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
Un MOVE permet de copier des valeurs 8, 16 ou 32 bits (Byte, Word, Long).
Un suffixe précise le cas choisi.
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
Les instructions arithmétiques (ADD, SUB, …) ont seulement deux paramètres.
05/03/2015
14
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
Un # indique qu'il s'agit d'une constante
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
Le SUB précédent a produit une valeur qui a été rangée dans le registre D1.
Si cette valeur est non nulle (BNE), on va poursuivre l'exécution à l'étiquette BCLE
05/03/2015
15
DATA
X: DC.L 5
Y: DC.B $A
TAB: DS.B 12
CODE
MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de programme
Introduction
L'instruction RTS marque la fin du programme principal.
Cette instruction permet aussi de marquer la fin d'une fonction.
DATA
X: DC.L 5
Y: DC.B $A
CODE
JSR FONCT1
RTS
FONCT1: MOVE.L X,D1
MOVE.B Y,D0
BCLE: ADD.L D0,D0
SUB.L #1,D1
BNE BCLE
RTS
Exemple de fonction
Introduction
Ce nouveau programme est équivalent au précédent.
Le programme principal commence juste après l'instruction CODE.On y appelle une fonction FONCT1
05/03/2015
16
REPRESENTATION DE L’INFORMATION
Codage des entiers et flottants
� Entiers:◦ Signe + Valeur absolue
◦ Complément à 1
◦ Complément à 2
� Flottant:
◦ Mantisse ± 1.xxxxx 2exp
0 10000110 01100100010000000000000sgn exposant mantisse 23 bits
Base 10: 1.78125 *102
05/03/2015
17
�Code ASCII (8 bits) American Standard Code for Information
Interchange
�'A' : 0100 0001
�'B' : 0100 0010
�'a' : 0110 0001
�'b' : 0110 0010
Caractères
Représentation de l'information
Un code est attribué à chaque caractère
�Code ASCII standard
bit n°7 à 0
Caractères
Représentation de l'information
�Code ASCII étendu (non standard)
"é" en ASCII français : $7B
"é" en ASCII PC : $82
"é" en ASCII Macintosh : $8E
"é" en ASCII Unix : $E9
05/03/2015
18
Caractères
Représentation de l'informationLE Code ASCII
Caractères
Représentation de l'informationUN code ASCII étendu
05/03/2015
19
Ne jamais introduire un code ASCII dans un programme
Utiliser directement le caractère
Caractères
Représentation de l'information
MOVE.B # 'A' , 120
MOVE.B # 65 , 120
GESTION DES DONNÉES
05/03/2015
20
Structuration de la mémoire
3.1 La Mémoire
Les octets peuvent être regroupés
1 octet (valeur 8 bits, octet)
2 octets (valeur 16 bits, mot)
4 octets (valeur 32 bits, mot long)
�
�
�
Accès à la mémoire
3.1 La Mémoire
MOVE.B : accès valeur 8 bits
MOVE.W : accès valeur 16 bits
MOVE.L : accès valeur 32 bits
�
�
�
05/03/2015
21
Adresse des mots
3.1 La Mémoire
L'adresse d'un mot (ou mot long) est l'adresse de l'octet qui a la plus faible valeur
Exemple:
n°0
n°1
n°2
n°3
n°4 adresse
n°5 du mot?
n°6
n°7
Quelle est l'adresse d'un mot (long) si :
3.1 La Mémoire
l'adresse du mot (long) suivant est $1010
l'adresse du mot (long) précédent est $1010
il est le dernier mot (long) d'un bloc de 16 octets commençant à l'adresse $1000
�
�
�
05/03/2015
22
Stockage des valeurs dans la mémoire
3.1 La Mémoire
Little Endian et Big Endian
�
�
Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les
voyages de Gulliver.
Le monde se divisait en deux groupes:
Ceux qui mangeaient les œufs en commençant par le gros bout (big end)
Ceux qui mangeaient les œufs en commençant par le petit bout (little end)
Stockage des valeurs dans la mémoire
3.1 La Mémoire
Little Endian et Big Endian
�
�
Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les voyages de Gulliver.
Le monde se divisait en deux groupes:
Ceux qui mangeaient les œufs en commençant par le gros bout
Ceux qui mangeaient les œufs en commençant par le petit bout
05/03/2015
23
Stockage des valeurs dans la mémoire
3.1 La Mémoire
� Sur certains processeurs (Motorola, RISC, …) on utilise le mode « big-endian ». On commence par ranger le gros bout ("big end", poids forts ) en mémoire à l'adresse la plus faible.
� Sur d'autres processeurs (Pentium, …) on utilise le mode « little-endian ». On commence par ranger le petit bout ("little-end", poids faibles) en mémoire à l'adresse la plus faible
Avantages "big-endian" "little-endian"
3.1 La Mémoire
�Le mode « big-endian » est plus logique pour l'utilisateur.
� En « little-endian » on trouve les poidsfaibles aux adresses les plus faibles Ce mode est plus logique pour le processeur.
� Exemple: $89ABCDEF
05/03/2015
24
Exercices « big-endian » (cas Motorola)
3.1 La Mémoire
� Valeur 16 bits $AB2F à l'adresse $1000
� Valeur 32 bits $FE125DA1 à l'@ $1002
� Valeur 32 bits $C3 à l'@ $1001
� Valeur 8 bits $12 à l'@$1000
Schéma (Motorola 68000)
3.2 Le processeur
Unité de calcul
8 registresde données
8 registresd'adresses
Reg SR
Registre PC
05/03/2015
25
Unité de calcul
3.2 Le processeur
Addition, Soustraction
Multiplication, Division
Négation
Et, Ou, Ou exclusif
Non
...
�
�
�
�
�
�
Registres
3.2 Le processeur
Mémoire interne du processeur
Le processeur dispose de quelques mots longs de mémoire pour ranger les résultats des calculs intermédiaires
16 mots longs 32 bits
05/03/2015
26
Registres de données (D0, D1, … , D7)
3.2 Le processeur
8 registres 32 bits
Peuvent être vus comme des registres 8, 16 ou 32 bits. Les zones modifiables sont:
bits 0..7 (opération .B)
bits 0..15 (opération .W)
bits 0..31 (opération .L)
�
�
�
�
�
Exercice registre de données
3.2 Le processeur
MOVE.L #$AABBCCDD,D3
MOVE.B #$99,D3
MOVE.W #$88,D3
Les bits 8..31ou les bits 16..31peuvent rester inchangés
Trouver lavaleur de D3
05/03/2015
27
Registres d'adresses (A0, A1,.., A7)
3.2 Le processeur
8 registres 32 bits
Ils sont toujours utilisés comme des registres 32 bits (une adresse s'exprime toujours sur 32 bits)
Les opérations de type MOVE.B sont interdites
�
�
�
Le registre compteur ordinal (PC)
3.2 Le processeur
Contient l'adresse de l'instruction courante
Ce registre est automatiquement incrémenté après l'exécution d'une instruction (exécution séquentielle)
Certaines instructions provoquent des modifications de PC (BRA)
�
�
�
05/03/2015
28
Le registre statut (SR)
3.2 Le processeur
Status Register
Décrit le mode de fonctionnement et l'état du processeur
�
�
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
kT 0 S 0 0 I2I1I0 0 0 0 X N Z V C
Octet superviseur Octet utilisateur
CCR
Octet utilisateur SR (CCR)
3.2 Le processeur
C (retenue, carry)
V (dépassement, overflow)
Z (zéro)
N (négatif)
X (extension)
�
�
�
�
�
Renseigne sur l'état du processeur après l'exécution d'une instruction arithmétique ou logique
05/03/2015
29
Exercice CCR
3.2 Le processeur
MOVE.B #$FF,D2
ADD.B #1,D2
MOVE.B #127,D2
ADD.B #1,D2
Trouver lavaleur deN, Z, V, C
Exercice CCR
3.2 Le processeur
MOVE.B #$FF,D2
ADD.B #1,D2
MOVE.B #127,D2
ADD.B #1,D2
N = 1
Z = 0
V = 0
C = 0
05/03/2015
30
Exercice CCR
3.2 Le processeur
MOVE.B #$FF,D2
ADD.B #1,D2
MOVE.B #127,D2
ADD.B #1,D2
N = 0
Z = 1
V = 0
C = 1
Exercice CCR
3.2 Le processeur
MOVE.B #$FF,D2
ADD.B #1,D2
MOVE.B #127,D2
ADD.B #1,D2
N = 0
Z = 0
V = 0
C = 0
05/03/2015
31
Exercice CCR
3.2 Le processeur
MOVE.B #$FF,D2
ADD.B #1,D2
MOVE.B #127,D2
ADD.B #1,D2
N = 1
Z = 0
V = 1
C = 0
Les instructions de branchement
3.2 Le processeur
BEQ (branchement si = 0) EQual
BNE (branchement si != 0) Not Equal
BGT (branchement si > 0) Greater Than
BGE (branchement si >=0) Greater or Equal
BLT (branchement si < 0) Less Than
BLE (branchement si <= 0) Less or Equal
�
�
�
�
�
�
05/03/2015
32
Solution exercices
3.2 Le processeur
BEQ : Z
BNE : Z
BGT : N . V . Z + N . V . Z
BGE : N . V + N . V
BLT : N . V + N . V
BLE : Z + N . V + N . V
�
�
�
�
�
�
MODES D’ADRESSAGE
05/03/2015
33
Catégories
Modes d'adressage
Adressage registre direct
Adressage registre indirect
Adressage absolu
Adressage immédiat
Adresse relatif à PC
Adressage implicite
�
�
�
�
�
�
Adressage direct registre de données
Modes d'adressage
Notation: Dn
Taille: B, W, L
Exemple: MOVE.L D2,D3
�
�
�
Transfert du contenu de D2 vers D3
05/03/2015
34
Adressage direct registre d'adresse
Modes d'adressage
Notation: An
Taille: L
Exemple: MOVE.L A2,A3
�
�
�
Ne pas utiliserles tailles B et W
Transfert du contenu de A2 vers A3.
Adressage registre indirect
Modes d'adressage
Notation: (An)
Taille: B, W, L
Exemple: MOVE.L (A1),D3
�
�
�
Copie du contenu de la mémoire à l’adresse A1 vers D3
05/03/2015
35
Adressage registre indirect
Modes d'adressage
Comment initialiser An?DATA
TAB: DS.B 10
CODE
LEA TAB,A2 ; copie de la valeur de TAB ;dans le registre d’adresse A2
;(Load Effective Address)
MOVE.B #2,(A2);placer l’octet de valeur 2 à ;l’adresse pointée par A2 et
;donc le premier octet du tableau
RTS
Adressage registre indirectavec post-incrémentation
Modes d'adressage
Notation: (An)+
Taille: B, W, L
Exemple: MOVE.L (A1)+,D3
�
�
�
Adressage indirect en utilisantla valeur de An puisincrémentation de An
de 1 si .Bde 2 si .Wde 4 si .L
05/03/2015
36
Adressage registre indirect avec pré-décrémentation
Modes d'adressage
Notation: -(An)
Taille: B, W, L
Exemple: MOVE.L -(A1),D3
�
�
�
Décrémentation de Anpuis adressage indirect enutilisant la nouvelle valeur de An
de 1 si .Bde 2 si .Wde 4 si .L
Adressage registre indirect avec déplacement
Modes d'adressage
Notation: d(An)
Taille: B, W, L
Exemple: MOVE.L 4(A1),D3
�
�
�
Adressage indirect en utilisantl'adresse (An + d) Le registre An
n'est pas modifié
05/03/2015
37
Adressage absolu long
Modes d'adressage
Notation: adresse
Taille: B, W, L
Exemple: MOVE.L 4,D3
�
�
�
L'adresse 32 bits est spécifiéeen décimal ou en hexadécimal
On évite lesadresses 16 bits(absolu court)
Écrire le contenu de la mémoire à l’adresse 4 dans le registre D3
Adressage relatif à PC
Modes d'adressage
Notation: d(PC)
Taille:
Exemple: BRA 2(PC)
�
�
�
La valeur contenue dans PCest utilisée pour calculerl'adresse effective
Ne pas utiliser cetteforme.Utiliser les étiquettes (cas BRA)
BRA suite…
suite: …
05/03/2015
38
Adressage immédiat
Modes d'adressage
Notation: #valeur
Taille: B, W, L
Exemple: MOVE.L #2,D4
�
�
�
Mettre la valeur 2 dans le registre D4
INSTRUCTIONS ET DONNÉES
05/03/2015
39
Structure d'un programme
Instructions et données
Zones de données (DATA)
Zones d'instructions (CODE)
�
�
Exemple:
DATA; définition des donnéesCODE; définition des instructions
Définition des données
Données
DC.B initialisation d'un octet ou d'une chaîne
DC.W initialisation d'un mot
DC.L initialisation d'un mot long
DS.B réservation d'un tableau d'octets
DS.W réservation d'un tableau de mots
DS.L réservation d'un tableau de mots longs
�
�
�
�
�
�
05/03/2015
40
Instruction DC (Define Constant)
Données
Permet d'effectuer des réservations de mémoire avec initialisation (octet, mot, mot-long ou chaîne)
Exemples:
DC.B 4
DC.B "AB"
DC.W 5
DC.L 8
�
�
Instruction DC (Define Constant)
Données
Permet d'effectuer des réservations de mémoire avec initialisation (octet, mot, mot-long ou chaîne)
Exemples:
DC.B 4
DC.B "AB"
DC.W 5
DC.L 8
�
�
n°0 4
n°1 'A'
n°2 'B'
n°3 0
n°4 0
n°5 5
n°6 0
n°7 0
n°8 0
n°9 8
05/03/2015
41
Instruction DS (Define Storage)
Données
Permet d'effectuer des réservations de mémoire sans initialisation (tableaux d'octets, de mots, ou de mots longs)
Exemples:
DS.B 4
DS.W 5
DS.L 6
�
�
Problème de l'accès aux données
Données
Pour accéder à une donnée il faut son adresse
Les étiquettes permettent de définir des repères dans les zones de données. Elles sont utilisables en tant qu'adresses.
�
�
Les étiquettes permettent ausside définir des repères dans les
zones d'instructions
05/03/2015
42
Liste des instructions principales
Instructions
MOVE, LEA
CMP, BEQ, BNE, BGT, BGE, BLT, BLE
BRA, JMP
ADD, SUB, MULS, DIVS, NEG
AND, OR, EOR, NOT
LSL, LSR, ASL, ASR, ROL, ROR
JSR, RTS
�
�
�
�
�
�
�
Instruction MOVE
Instructions
Syntaxe: MOVE <ea1>,<ea2>
Rôle: copier la donnée se trouvant à l'adresse spécifiée par <ea1> à l'adresse spécifiée par <ea2>
Notes <ea1>: An interdit en mode .B
Notes <ea2>: #valeur et d(PC) interdits
Exemple:
MOVE.W #3,(A2)+
�
�
�
�
�
05/03/2015
43
Instruction LEA (forme simplifiée)
Instructions
Syntaxe: LEA étiquette,An
Rôle: permet d'obtenir une adresse dans un registre d'adresse (par exemple l'adresse correspondant à une étiquette)
Exemple:
LEA X1,A3
MOVE.L (A3),D0
�
�
�
Problème de l'accès aux données (exercice 1)
Instructions
DATA
X1: DC.L 3
DC.L 4
CODE
; comment accéder au
; deuxième mot long ?
RTS
05/03/2015
44
Problème de l'accès aux données (exercice 2)
Instructions
DATA
X1: DC.W 3
DC.L 4
DC.L 5
CODE
; comment accéder au
; deuxième mot long ?
RTS
Problème de l'accès aux données (exercice 3)
Instructions
DATA
X1: DS.L 2
DC.L 4
DC.L 5
CODE
; comment accéder au
; troisième mot long ?
RTS
05/03/2015
45
Instruction CMP
Instructions
Syntaxe: CMP <ea1>,<ea2>
Rôle: calcul de <ea2> - <ea1> sans modifier <ea2>
Indicateurs: N, Z, V et C modifiés
Formes possibles:
CMP <ea1>,Dn
CMP <ea1>,An
CMP #data,<ea2>
�
�
�
�
Instruction BRA
Instructions
Syntaxe: BRA étiquette
Rôle: désigne la prochaine instruction qui sera exécutée
Indicateurs: non modifiés
Exemple:
BRA SUITE
ADD.L #1,D0
SUITE: ADD.L #1,D1
�
�
�
�
05/03/2015
46
Instruction Bxx (BEQ, BNE, BGT, BGE, BLT, BLE)
Instructions
Syntaxe: Bxx étiquette
Rôle: branchement conditionnel
Indicateurs: non modifiés
Exemple:MOVE.L #1,D1
CMP.L #1,D1
BEQ SUITE
ADD.L #1,D3
SUITE: ADD.L #1,D4
�
�
�
�
ADD nonexécuté
INSTRUCTIONS ARITHMÉTIQUES
05/03/2015
47
Liste des instructions
Instructions arithmétiques
�ADD (ADDA, ADDI, ADDQ, ADDX)Address, Immediate, Quick, X(carry)
�SUB (SUBA, SUBI, SUBQ, SUBX)
�MULS (MULU) Unsigned
�DIVS (DIVU)
�NEG (NEGX)
Addition (ADD)
Instructions arithmétiques
Syntaxe: ADD <ea1>,<ea2>
Rôle: calcul de <ea1> + <ea2> et rangement du résultat à <ea2>
Formes possibles:
ADD <ea1>,Dn
ADD Dn,<ea2>
ADD <ea1>,An
ADD #data,<ea2>
�
�
�
05/03/2015
48
Soustraction (SUB)
Instructions arithmétiques
Syntaxe: SUB <ea1>,<ea2>
Rôle: calcul de <ea2> - <ea1> et rangement du résultat à <ea2>
Formes possibles:
SUB <ea1>,Dn
SUB Dn,<ea2>
SUB <ea1>,An
SUB #data,<ea2>
�
�
�
Multiplication signée (MULS)
Instructions arithmétiques
Syntaxe: MULS <ea1>,Dn
Rôle: multiplication <ea1> (16 bits) par Dn (16 bits) et rangement du résultat dans Dn (32 bits)
Exercice: multiplier D2 par X avec X défini de la façon suivante:
DATA
X: DC.W 3
�
�
�
05/03/2015
49
Multiplication signée (MULS)
DATA
X: DC.W 3
CODE
MOVE.W #2,D2
LEA X,A1
MULS(A1), D2 ;ou MULS X, D2 résultat 6
RTS
Division signée (DIVS)
Instructions arithmétiques
Syntaxe: DIVS <ea1>,Dn
Rôle: division de Dn (32bits) par <ea1> (16 bits). Rangement du quotient dans les bits 0 à 15 de Dn. Rangement du reste dans les bits 16 à 31 de Dn
Exercice: diviser D0 par 2, mettre le quotient dans D1, mettre le reste dans D2
�
�
�
05/03/2015
50
Division signée (DIVS)DATA
X: DC.W 2
CODE
MOVE.L #7,D0 ; 7/2
LEA X,A1
DIVS(A1), D0
MOVE.W D0, D1
MOVE.L D0, 2(A1)
MOVE.W 2(A1), D2
Négation (NEG)
Instructions arithmétiques
Syntaxe: NEG <ea>
Rôle: calcul de 0 - <ea> et rangement du résultat à <ea>
Exemple: NEG D3
�
�
�
05/03/2015
51
INSTRUCTIONS LOGIQUES
Liste des instructions
Instructions logiques et décalages
AND (ANDI)
OR (ORI)
EOR (EORI)
NOT
NEG (NEGX)
LSL, LSR, ASL, ASR, ROR, ROL
(ROXL, ROXR)
�
�
�
�
�
�
05/03/2015
52
ET logique (AND)
Instructions logiques
Syntaxe: AND <ea1>,<ea2>
Rôle: calcul de <ea1> & <ea2> (bit à bit) et rangement du résultat dans <ea2>
Formes possibles:
AND <ea1>,Dn
AND Dn,<ea2>
AND #data,<ea2>
�
�
�
OU logique (OR)
Instructions logiques
Syntaxe: OR <ea1>,<ea2>
Rôle: calcul de <ea1> | <ea2> (bit à bit) et rangement du résultat dans <ea2>
Formes possibles:
OR <ea1>,Dn
OR Dn,<ea2>
OR #data,<ea2>
�
�
�
05/03/2015
53
OU exclusif (EOR)
Instructions logiques
Syntaxe: EOR <ea1>,<ea2>
Rôle: calcul de <ea1> xor <ea2> (bit à bit) et rangement du résultat dans <ea2>
Formes possibles:
EOR Dn,<ea2>
EOR #data,<ea2>
�
�
�
Inversion bit à bit (NOT)
Instructions logiques
Syntaxe: NOT <ea>
Rôle: calcul de ~<ea> et rangement du résultat à <ea>
Exemple:
NOT.L D2
�
�
�
05/03/2015
54
Exercices
Instructions logiques
Mettre à 0 les bits 8 à 31 de D2 sans changer les autres bits
Mettre le bit n°5 de D2 à 0 sans changer les autres bits
Mettre le bit n°5 de D2 à 1 sans changer les autres bits
Extraire le quotient d'une division sous forme 32 bits signée
�
�
�
�
Décalage arithmétique vers la droite (ASR)
Instructions logiques
Syntaxe: ASR <ea1>,<ea2>
Rôle: calcul de <ea2> >> <ea1> et rangement du résultat à <ea2> (on décale <ea2> de <ea1> positions vers la droite en gardant le bit de signe inchangé)
Formes possibles:
ASR Dm,Dn
ASR #data,Dn ; 1 <=data <= 8
ASR <ea> ; décalage d’1 bit
�
�
�
05/03/2015
55
Décalage arithmétique vers la gauche (ASL)
Instructions logiques
Syntaxe: ASL <ea1>,<ea2>
Rôle: calcul de <ea2> << <ea1> et rangement du résultat à <ea2> (on décale <ea2> de <ea1> positions vers la gauche en remplaçant par 0 les bits décalés)
Formes possibles:
ASL Dm,Dn
ASL #data,Dn ; 1 <=data <= 8
ASL <ea> ; décalage d’1 bit
�
�
�
Schémas ASR, ASL
Instructions de décalage
C
X
0ASL
C
XASR
05/03/2015
56
Décalages logiques (LSR et LSL)
Instructions logiques
Syntaxe: LSx <ea1>,<ea2>
Rôle: décalage de <ea2> de <ea1> positions. Les bits décalés sont remplacés par 0.
Formes possibles:
LSx Dm,Dn
LSx #data,Dn ; 1 <=data <= 8
LSx <ea>
�
�
�
Schémas LSR, LSL
Instructions de décalage
C
X
0LSL
C
XLSR
0
05/03/2015
57
Rotations (ROR et ROL)
Instructions logiques
Syntaxe: ROx <ea1>,<ea2>
Rôle: décalage de <ea2> de <ea1> positions. Les bits forts poids sont échangés avec les bits faibles poids
Formes possibles:
ROx Dm,Dn
ROx #data,Dn ; 1 <=data <= 8
ROx <ea>
�
�
�
Schémas ROR, ROL
Instructions de décalage
CROL
C
ROR
05/03/2015
58
Exercices
Instructions logiques
Extraire le quotient et le reste d'une division
�
top related