58
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

Introduction - univ-brest.fr

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction - univ-brest.fr

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

Page 2: Introduction - univ-brest.fr

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

Page 3: Introduction - univ-brest.fr

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

Page 4: Introduction - univ-brest.fr

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

Page 5: Introduction - univ-brest.fr

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

Page 6: Introduction - univ-brest.fr

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 @

Page 7: Introduction - univ-brest.fr

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

Page 8: Introduction - univ-brest.fr

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)

Page 9: Introduction - univ-brest.fr

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

Page 10: Introduction - univ-brest.fr

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

Page 11: Introduction - univ-brest.fr

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 [])

Page 12: Introduction - univ-brest.fr

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.

Page 13: Introduction - univ-brest.fr

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.

Page 14: Introduction - univ-brest.fr

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

Page 15: Introduction - univ-brest.fr

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

Page 16: Introduction - univ-brest.fr

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

Page 17: Introduction - univ-brest.fr

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

Page 18: Introduction - univ-brest.fr

05/03/2015

18

Caractères

Représentation de l'informationLE Code ASCII

Caractères

Représentation de l'informationUN code ASCII étendu

Page 19: Introduction - univ-brest.fr

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

Page 20: Introduction - univ-brest.fr

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

Page 21: Introduction - univ-brest.fr

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

Page 22: Introduction - univ-brest.fr

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

Page 23: Introduction - univ-brest.fr

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

Page 24: Introduction - univ-brest.fr

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

Page 25: Introduction - univ-brest.fr

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

Page 26: Introduction - univ-brest.fr

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

Page 27: Introduction - univ-brest.fr

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)

Page 28: Introduction - univ-brest.fr

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

Page 29: Introduction - univ-brest.fr

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

Page 30: Introduction - univ-brest.fr

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

Page 31: Introduction - univ-brest.fr

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

Page 32: Introduction - univ-brest.fr

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

Page 33: Introduction - univ-brest.fr

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

Page 34: Introduction - univ-brest.fr

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

Page 35: Introduction - univ-brest.fr

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

Page 36: Introduction - univ-brest.fr

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é

Page 37: Introduction - univ-brest.fr

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: …

Page 38: Introduction - univ-brest.fr

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

Page 39: Introduction - univ-brest.fr

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

Page 40: Introduction - univ-brest.fr

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

Page 41: Introduction - univ-brest.fr

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

Page 42: Introduction - univ-brest.fr

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)+

Page 43: Introduction - univ-brest.fr

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

Page 44: Introduction - univ-brest.fr

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

Page 45: Introduction - univ-brest.fr

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

Page 46: Introduction - univ-brest.fr

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

Page 47: Introduction - univ-brest.fr

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>

Page 48: Introduction - univ-brest.fr

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

Page 49: Introduction - univ-brest.fr

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

Page 50: Introduction - univ-brest.fr

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

Page 51: Introduction - univ-brest.fr

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)

Page 52: Introduction - univ-brest.fr

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>

Page 53: Introduction - univ-brest.fr

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

Page 54: Introduction - univ-brest.fr

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

Page 55: Introduction - univ-brest.fr

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

Page 56: Introduction - univ-brest.fr

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

Page 57: Introduction - univ-brest.fr

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

Page 58: Introduction - univ-brest.fr

05/03/2015

58

Exercices

Instructions logiques

Extraire le quotient et le reste d'une division