Vous êtes sur la page 1sur 42

Cours Architecture des Organisation de ce cours

Ordinateurs • Cours, TD, TP


– 7 séances de cours
1ère Année – 10 séances de TD/TP

• Évaluation :
– 2 examens de contrôle continu
– 1 examen final

• Dates :
IUT de Nice - Côte d’Azur – Cours le mardi de 8h à 10h

• Intervenants :
Département Informatique – Erol Acundeger
– Gaëtan Rey
– Hénoc Soude
– Joanna Moulierac

Joanna Moulierac
joanna.moulierac@inria.fr

Objectif du cours Plan


• Introduction
– Différentes vues d ’un ordinateur
• De quoi est composé un ordinateur : – Évolution et performance des machines
microprocesseur, des mémoires, disque dur …? • Représentation de l’information
• Quels sont les modèles sous-jacents au • Algèbre de Boole
• Circuits séquentiels/Automates
fonctionnement d’une machine ? • Architecture type Von Neumann
• Comment s’exécutent des programmes sur un – Structure d’interconnexion : bus
ordinateur ? – La mémoire
– l’unité centrale
• Quel est le lien entre le logiciel et le matériel ? • Couche d’assemblage
• Comment se fait l’interface avec l’extérieur ? – Langage
(fonctionnement des divers périphériques) – Modes d’adressage
– Procédures
Décomposition matérielle d’un
Ordinateur
ordinateur
• Définitions : • Un ordinateur est constitué de plusieurs parties :
 Machine capable d’effectuer automatiquement des opérations – Souris, écran, clavier, unité centrale, lecteur de
arithmétiques et logiques (à des fins scientifiques, administratives, disquettes ...
comptables…) à partir de programmes définissant la séquence de
ces opérations. • A l’intérieur de l’unité centrale
– une carte mère
 Un ordinateur est un ensemble de circuits électroniques permettant – une carte vidéo
de manipuler des données sous forme binaire, ou bits. – des disques ....
• Sur la carte mère
• But d’un ordinateur : définir et exécuter des séquences de – un microprocesseur
calculs
– de la mémoire (ROM, RAM) ...
• Dans le microprocesseur,
– la puce

Le processeur Terminologie
Processeur CPU, Central Processing Unit
• Le processeur a été inventé par Intel (avec le modèle
4004) en 1971. Il est chargé de traiter les informations et RISC Reduced Instructions set computer
d'exécuter les instructions. Il communique avec le reste MIPS Millions d’instructions par seconde
de l'ordinateur via le langage binaire. Kilo 210 = 1024 ~1000
Mega 220 = 1048576 ~1 000 000
• Le processeur est rythmé par une horloge (quartz) Giga 230 = 1073741824 ~1 000 000 000
cadencée plus ou moins rapidement (on parle alors de Tera 240 = 1099511627776 ~1 000 000 000 000
fréquence).
Bit Binary digit
octet 1 octet = 8 bits
• A chaque impulsion d'horloge, le processeur lit CPI Cycles par instruction
l'instruction stockée généralement dans un registre
d'instruction et exécute l'instruction.
Fabrication des processeurs Bout de silicium dopé
Un Wafer
Wafer : Galette de plusieurs processeurs (1 processeur = quelques mm2)
• Les processeurs sont gravés sur des plaques appelées Wafers. Plus finement : Millions de transistors
Finesse de gravure différentes selon les séries de processeurs
(mesurée en µm ou nm). Dopage :
Action d'introduire dans la masse d'un semiconducteur des atomes d'une impureté
choisie, en vue de lui donner - localement ou globalement, selon l'étape considérée -
• Les processeurs actuels sont gravés en 0.09µ et 0.065µ. une conductivité de valeur déterminée.

• Diminuer la finesse de gravure permet de produire plus de


processeurs à la fois sur un Wafer
– Diminution du coût de fabrication
– Diminution de la consommation du processeur et donc de la quantité de
chaleur produite
– Abaisser la consommation d'énergie et monter plus haut en fréquence.

 Plus la gravure est fine, plus la fréquence d'horloge (exprimée en


mégahertz) s'accroît et plus la consommation électrique diminue

Composition des processeurs (4)

1 - Emplacement destiné à accueillir le microprocesseur.


2 - Barrettes de RAM (Random Access Memory).
3 - Cartes (carte son, modem 56k, carte PCI/Firewire,…) : ports PCI (Peripheral
Component Interconnect)
4 - Port AGP (Accelerated Graphic Port).
5 - Contient le BIOS (Basic Input/Output System) ; le BIOS vérifie que tous les
composants nécessaires au démarrage de l'ordinateur sont présents.
6 - alimentation du BIOS.
7 - Alimentation de la carte mère; ports IDE (primaire et secondaire) : connecteurs
des disques durs et des périphériques ATAPI ; Connecteur du lecteur disquette.
8 - Ports externes du PC.
Evolution et générations des Exemple de la famille des
machines microprocesseurs Intel
4004
Génération Dates Technologie Opérations/s
Premiers calculateurs
1 1946-57 Tubes à vide 40k électroniques. Ex : ENIAC

2 1958-64 Transistors 200K Première série commerciale


d’ordinateurs
3 1965-71 SSI-MSI 1M Circuits intégrés : permettent
de placer beaucoup de Pentium Pentium II
transistors sur une même puce
4 1972-77 LSI 10M
Miniaturisation, Montée en
5 1978- VLSI 100M puissance et réduction
des coûts.
Intégration de millions de
transistors sur une même
Pentium III Pentium 4
puce.

Plan
• Introduction
– Différentes vues d ’un ordinateur
• historique
– Évolution et performance des machines
• Représentation de l’information
• Algèbre de Boole
• Circuits séquentiels/Automates
• Architecture type Von Neumann
– Structure d’interconnexion : bus
– La mémoire
– l’unité centrale
• Couche d’assemblage
– Langage
– Modes d’adressage
– Procédures
Représentation d’un nombre en base Représentation d'un nombre en
b base b
• Représentation utilisée par les humains : Base 10 ou
décimale N = an bn + an-1 bn-1 + ..... + a1 b1+ a0 b0
– 10 caractères utilisés de 0 à 9
• Représentation utilisée par les ordinateurs : Base 2 ou
binaire, base hexadécimale Poids fort Poids faible
ai bi Rang de ai
• Pour un représentation un nombre en base b, on utilise b
ai base
caratères : Poids de ai = 0 ou 1 => bit
– Base 2 : 0,1
• Exemple : Base 2
– Base 8 : de 0 à 7
1010 = 1.23 + 0.22 + 1.21 + 0.20
– Base 16 : de 0 à 9 et de A à F
1010 = 10102

Indique la base

Exemples Passage de la base 10 à la base 2


• division successives du nombre par 2 pour la partie entière
• (354)10 = 3*102 + 5*101 + 4*100
20 2
Bit poids faible 0 10 2
0 5 2
(01100110)2 = 102 1 2 2 2010 = 101002
0 1 2
27 26 25 24 23 22 21 20 1 0
0 1 1 0 0 1 1 0 Bit poids fort

0*27 + 1*26 + 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20


= 1*26 + 1*25 + 1*22 + 1*21
= 64 + 32 + 4 + 2 = 102
Base 10 Base 2 Base 8 Base 16
(décimal) (binaire) (octale) (Hexadécimale)
0
1
0
1
0
1
0
1 Représentation des nombres
2 10 2 2
3 11 3 3
4 100 4 4 • Ordinateurs travaillent sur un nombre fixe de bits
5 101 5 5
• La notion d'octet
6 110 6 6
7 111 7 7 – un octet = 8 bits
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B 7 6 5 4 3 2 1 0
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
• La notion de mot
16 10000 20 10 – un mot = 8, 16, 32 64 bits
17 10001 21 11 – Intel 80386 et 80486 -> 32 bits
18 10010 22 12
– Pentium 4 -> 128 bits
19 10011 23 13
20 10100 24 14

Les nombres flottants Les nombres négatifs


Table des codes Ascii (7 bits
Tables de vérité
Norme ISO 646)
American Standard Code for Information Interchange
Entrées Sortie • 3 entrées => 23 = 8 combinaisons
A B C S possibles
0 0 0 0 • Ecriture dans l’ordre des entiers
0 0 1 1
naturels
• Fonction logique :
0 1 0 1
Quand la fonction vaut-elle 1 ?
0 1 1 1
1 0 0 0 S = A.B .C + A.B.C + A.B.C + A.B .C
1 0 1 1 S = A.B .C + A.B + A.B .C
1 1 0 0
1 1 1 0

‘G’ est codé 47h soit 0100 01112

Conventions d’écriture Tables de vérité


ET OU XOR (OU EXCLUSIF)
X Y X.Y X Y X+Y X Y X⊕Y
Opérations à 2 opérandes : 0 0 0 0 0 0 0 0 0
0 1 0 0 1 1 0 1 1
X ET Y = X .Y 1 0 0 1 0 1 1 0 1

X OU Y = X + Y 1 1 1 1 1 1 1 1 0

NOR (NON OU) NAND (NON AND)


NON
X Y X+Y X Y X.Y
X X
0 0 1 0 0 1
Opérations à 1 opérande : 0 1
0 1 0 0 1 1
NON ( X ) = X = ¬X = / X
1 0
1 0 0 1 0 1
1 1 0 1 1 0
Simplification des fonctions
Lois de composition
logiques
• Trois techniques de simplification : • Absorption : X.(X+Y) = X X+(X.Y) = X
– Le raisonnement comme précédemment • Commutativité : X.Y = Y.X
X+Y = Y+X
– L’algèbre de Boole : Algèbre des variables binaires et • Associativité : X.(Y.Z) = (X.Y).Z
booléennes. X+(Y+Z) =(X+Y)+Z
• Distributivité : X.(Y+Z) = X.Y+X.Z
– La méthode graphique par les tableaux de Karnaugh. X+(Y.Z) =(X+Y).(X+Z)
• Identité : 1.X = X 0+X = X
• Nullité : 0.X = 0 1+X = 1
• Idempotence X.X = X X+X = X
• Inversion X./X = 0 X+/X = 1

Lois de Morgan Tableau de Karnaugh (1)

X + Y ⇔ X .Y
BUT : Obtenir l’expression logique la plus simple d’une fonction S
• Un tableau de Karnaugh est un tableau de vérité dans lequel les
différentes possibilités des entrées sont classées en code GRAY.

X .Y ⇔ X + Y Ceci correspond à :
– 0 puis 1 dans le cas d'une variable,
– 00, 01, 11, 10 pour 2 variables.
• On peut remarquer qu'en passant d'une case à une case adjacente,
Exemple d’application des lois de Morgan : une seule variable a changé.
• Regrouper ces deux cases adjacentes correspond donc à la
( A.B + A.D).( B + C ) = A.B + A.D + B + C simplification par cette variable.
• On simplifie l'équation d'une fonction en faisant des regroupements
= A.B. A.D + B.C sous forme d'une, deux ou quatre lignes ou colonnes. Le passage
de la dernière ligne à la première est également un cas adjacent
= ( A + B ).( A + D ) + B.C (idem pour les colonnes).
Tableau de Karnaugh (2) Tableau de Karnaugh
• Principe : Simplification par adjacence • Tableau à deux variables
d’entrées B 0 1

A
A.B.C + A.B. C = A.B(C + C ) = A.B S = A.B+A.B 0 0 1
S=B 1 0 1
• En choisissant un code de Gray* pour coder les entrées on
retrouve les adjacences sur des cases côte à côte.

* Code de Gray : distance de 1 entre deux mots de code consécutifs

Tableau de Karnaugh Tableau de Karnaugh


• Tableau à deux variables • Tableau à deux variables
d’entrées B 0 1 d’entrées B 0 1

A A
S = A.B+A.B 0 0 1 S = A.B+A.B 0 0 1
S=B 1 0 1 S=B 1 0 1

• Tableau à trois variables d’entrées • Tableau à trois variables d’entrées


C 0 0 1 1 C 0 0 1 1
B 0 1 1 0 B 0 1 1 0

S = B + A.C
A A
0 1 1 0 1 1
1 1 1 1 1 1 1 1
Tableau de Karnaugh Plan
• Tableau à quatre variables d’entrées • Introduction
D 0 0 1 1 • Représentation de l’information
C 0 1 1 0 • Algèbre de Boole
S = C.A+D.C.B AB
1. Tables de vérité
00 1 1 1
2. Axiomes de l’algèbre de boole et lois de Morgan
01 1 1 3. Tableau de Karnaugh
11 4. Opération sur les chaînes de bits
10 1 • Circuits séquentiels
• Etats non utilisés : états qui existent en théorie mais qui en • Architecture type Von Neumann
pratique ne peuvent jamais apparaître pour des raisons – Structure d’interconnexion : bus
physiques ou mécaniques. – La mémoire
D 0 0 1 1 – l’unité centrale
C 0 1 1 0 • Couche d’assemblage
AB
S = A.D+B.C 00 1 1 – Langage
– Modes d’adressage
01 1 - - -
– Procédures
11 1 1
10

Opérations sur les chaînes de bits Opérations sur les chaînes de bits
• Complément bit à bit NON(x) : • Addition : X Y S R
– NON(011100101) = 100011010 – 0+0 = 00 0 0 0 0
– 0+1 = 01
0 1 1 0
• OU(X,Y) et ET(X,Y) logiques bit à bit sur les éléments de – 1+1 = 10, ou autrement dit, 1+1 = 0 et report = 1
1 0 1 0
la chaîne : Exemple :
0 1 0 2 1 1 0 1
– X = 10100110
+3
– Y = 01100010 + 0 1 1
– X+Y = 11100110 1 0 1 =5
– X.Y = 00100010
• Décalage à droite : 0 0 1 0 2
– DECD(1101) = 0110 + 1 1 1 0 + 14
• Décalage à gauche 1 0 0 0 0 = 16
– DECG (1101) = 1010
Report = 1
Plan Circuits logiques de base
I. Introduction
II. Représentation de l’information
• Circuits standards :
III. Algèbre de Boole
IV. Circuits logiques – Matérialisent les opérateurs de bases
1) Circuits combinatoires – 2, 3, 4 ou même d’avantage d’entrées
2) Circuits séquentiels
V. Architecture type Von Neumann – Fonctionnent sur des signaux électriques
VI. Couche d’assemblage – Egalement appelés Portes logiques
A A
A.B A+B A A
B B

ET/ AND OU/ OR NOT

A
A A A⊕B
A.B A+B B
B B
XOR
Non ET/ NAND Non OU/ NOR

Circuits combinatoires Exemple de circuit logique (1)


f
Entrée Sortie Sortie = f(Entrée)

Circuit combinatoire =>


un ensemble fini d ’entrée E
un ensemble fini de sortie S
Un circuit combinatoire
réalise sur ses sorties une fonction de ses entrées, et
fait son calcul en un temps connu borné

Exemple : Circuit à 2 entrées E1 et E2 :


E1 /E2 0 1
E1
E2 = S 0 1 0

1 0 1
Exemple de circuit logique (1) Exemples de circuits logiques (2)

A A

B B
C C
D S D S
E E
F F
1 1

( A + B ).( A + C )
S = A.B + C.D.E + F S = ( A.B ).(C.D.E ).F

Xi Y i Ri Ri+ Si

Demi-additionneur binaire 0 0 0
1
0 0
Additionneur complet
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
X Y S R
X 1 0 1 1 0
S 0 0 0 0
Y 1 1 0 1 0
0 1 1 0 p r e m ie r d e u x iè m e
1 1 1 1 1 d e m i- a d d it io n n e u r d e m i- a d d it io n n e u r

1 0 1 0 An
R An
Sn
1 1 0 1 Sn
Bn
Rn
Rn
R (n-1)

Bn

Circuit logique à deux entrées (X et Y) et deux sorties (S et R). R(n-1)

S y m b o le e t lo g ig r a m m e d e l' a d d it io n n e u r c o m p le t
Circuits logiques Exemple de circuits
• Sorties 3 états : 0 ou 1 (Si E =1) ou ouvert (Si E =0) combinatoires
• Le signal E est le signal de validation de la sortie S • Codeurs décodeurs n vers 2n:
– Commander un organe différent parmi 2n au moyen de n bits.
A S S = A.E – Les lignes Csi permettent de valider le circuit. Ici pour que le
E circuit fonctionne ces lignes doivent être à vrai cad à 100.
– Ces lignes permettent des montage plus complexes à
plusieurs décodeurs.
• Les sorties des circuits logiques nommés mémoires C
Y0
B Y0 = C.B.A Y0 = C.B.A .CS0.CS1.CS2
sont toutes de type 3 états Y1
A Décodeur Y1 = C.B.A
• Par l’intermédiaire de circuits nommés BUS le 3/8 …
CS0
Microprocesseur peut accéder aux contenus de Y7 = C.B.A
CS1
chaque circuit mémoire. Y7
CS2

Exemple de circuits
Circuits séquentiels
combinatoires
• Multiplexeur 4 voies • Le comportement d’un circuit combinatoire ne dépend
que de ses variables d’entrées.
• Le circuit séquentiel fait intervenir en plus l’état interne
e3 B 0 1
du système pour déterminer les sorties
e2
S A • Dans un circuit séquentiel, la sortie dépend des entrées
e1
Multiplexeur 0 e0 e2 et de l’état interne.
e0
4 voies 1 e1 e3
• La logique séquentielle permet de réaliser des circuits
B A dont le comportement est variable avec le temps. L'état
d'un système constitue une mémoire du passé.
S=e0.B.A+e1.B.A+e2.B.A+e3.B.A
Circuits séquentiels Circuits séquentiels
Circuit séquentiel =>
• Un système séquentiel peut être synchrone ou un ensemble fini d’entrées E
asynchrone selon qu’il est commandée ou pas par un un ensemble fini d’états Q
signal d’horloge. un état initial Q0 parmi les états Q
• Un système séquentiel est asynchrone si à partir de un ensemble fini de sorties S
l’instant ou on applique un vecteur d’entrée, son une fonction de transitions ft : Q0 x E  Q
évolution est incontrôlable de l’extérieur. une fonction de sortie fs : Q0 x E  S
• Il est synchrone si son évolution est contrôlable de
l’extérieur par un signal d’horloge. Exemples de circuits séquentiels :
Bascule SR
Fonction de décalage
Fonction de comptage...

Deux types de Bascules


Bascule
Synchrones/Asynchrones
• Les bascules sont les circuits séquentiels élémentaires • Les bascules synchrones : asservies à des impulsions
permettant de mémoriser une information binaire (bit) d’horloge et donc insensibles aux bruits entre deux tops
sur leur sortie. Une bascule est capable de se souvenir
d’un état précédent. • Les bascules asynchrones, non asservies à une horloge
• Elles constituent le point mémoire élémentaire. et prenant en compte leurs entrées à tout moment.
• Elles peuvent être synchrones ou asynchrones. Données
• La bascule fondamentale est la bascule SR (bascule Entrées sorties
Bascule
Set-Reset) Asynchrone
Synchrone
Horloge
Données
Entrées sorties
Bascule
Asynchrone
Asynchrone
Bascule SR Bascule SR
• La bascule SR est le dispositif de mémorisation Qt S R Qt+1
Les combinaisons telles que
élémentaire. Cette bascule est asynchrone. 0 0 0 0 S=1 et R=1 ne sont pas définies.
• Toutes les bascules, y compris les bascules
0 0 1 0
synchrones, ne sont en fait que des évolutions de cette Elles correspondent à un
bascule. 0 1 0 1
enclenchement simultané de S
• La bascule SR est un dispositif à deux entrées S et R et 0 1 1 X et R.
une sortie Q présentant la propriété suivante :
1 0 0 1
– lorsque S et R sont à 0, Q conserve sa valeur (Etat mémoire)
– une apparition (même fugitive) de S entraîne durablement Q=1 1 0 1 0
– une apparition (même fugitive) de R entraîne durablement Q=0 1 0 1 1

1 1 1 X

Bascule SR Plan
• Introduction
• Représentation de l’information
• 2 entrées : Set et Reset
• Algèbre de Boole
• 1 variable en sortie qui prend 2 valeurs Q et Q 1. Tables de vérité
• La sortie d’une bascule dépend de ses entrées et de son état interne 2. Axiomes de l’algèbre de boole et lois de Morgan
(la valeur antérieure de la sortie Qt). 3. Tableau de Karnaugh
4. Opération sur les chaînes de bits
R S Qt Qt+1 • Circuits séquentiels
0 0 X X • Architecture type Von Neumann
0 1 X 1 – Structure d’interconnexion : bus
1 0 X 0 – La mémoire
1 1 Interdit Interdit – l’unité centrale
• Couche d’assemblage
– Langage
Les valeurs indéterminées sont affectées à 0. – Modes d’adressage
La bascule est dite à déclenchement prioritaire. – Procédures
Architecture de Von Newman Architecture de Von Newman
• Pour traiter une information, le microprocesseur seul ne L’architecture de von Neumann décompose l’ordinateur en 4 parties
suffit pas. Il faut l’insérer au sein d’un système de distinctes
traitement de l’information. 1. L’unité de contrôle ou unité de commande, chargée du
séquençage des opérations ;
2. L’unité de traitement : son rôle est d’effectuer les opérations de
base ;
3. La mémoire qui contient à la fois les données et le programme qui
indique à l’unité de contrôle quels calculs faire sur ces données. La
mémoire se divise entre mémoire volatile (programmes et données
en cours de fonctionnement) et mémoire permanente (programmes
et données de base de la machine).
4. Les dispositifs d’entrée-sortie, qui permettent de communiquer
avec le monde extérieur.

Architecture de Von Newmann Les bus


Un bus est un ensemble de fils qui assure la transmission du même
type d’information et qui assure la communication entre les divers
composants.

bus de données : bidirectionnel qui assure le transfert des


informations entre le microprocesseur et son environnement, et
inversement. Son nombre de lignes est égal à la capacité de
traitement du microprocesseur.
bus d'adresses: unidirectionnel qui permet la sélection des
informations à traiter dans un espace mémoire (ou espace
adressable) qui peut avoir 2n emplacements, avec n = nombre de
conducteurs du bus d'adresses.
bus de commande : constitué par quelques conducteurs qui assurent
la synchronisation des flux d'informations sur les bus des données
et des adresses.
L’unité de commande (1) L'unité de commande (2)
L’unité de commande séquence le déroulement des instructions. Elle
effectue la recherche en mémoire de l'instruction, le décodage,
l'exécution et la préparation de l'instruction suivante. • Phase de recherche de l’instruction
Compteur ordinal ou Compteur programme (IP) : contient l‘@ de la – programme en mémoire centrale
prochaine instruction à exécuter. Au chargement du programme, – lancement du programme Compteur Ordinal  @ 1ère
instruction (OS)
contient l’@de la 1ère instruction. Il est modifié : – le séquenceur va générer les microcommandes pour placer
– soit par incrémentation automatique dans le cas où les adresses des l’instruction dans le Registre d’Instruction
instructions se suivent. – microcommande pour incrémenter le compteur ordinal
– soit par chargement de l'adresse de branchement dans le cas de sauts Compteur Ordinal @ prochaine instruction
programmés.
Registre d'instruction et décodeur d'instruction : chacune des • Phase de traitement de l’instruction
instructions à exécuter est rangée dans le registre instruction puis – Le décodeur analyse la zone opération de l’instruction
est décodée par le décodeur d’instruction. – Le séquenceur exécute les microcommandes correspondantes
Séquenceur : organise l’exécution des instructions au rythme d’une – Exemple : addition
horloge. Il élabore les signaux de synchronisation internes ou MOV AL,[0200]
externes (bus des commandes) du microprocesseur ADD AL,[0300]
MOV [0400],AL

L’unité de commande (3) Unité de traitement


Microcommandes
• UAL : circuit complexe qui assure les fonctions logiques
(AND,OR,CMP…) ou arithmétiques (ADD,SUB,INC…)

Registre d’état + Compteur ordinal


Séquenceur • Registre d’état : Indicateur (généralement composé de 8
bits) dont l’état dépend du résultat de la dernière
opération effectuée. Indicateurs d’état ou flags.
Décodeur

Instruction
Code opération Zone adresse • Les accumulateurs : registres de travail qui servent à
Registre d’instruction
stocker les opérandes et les résultats à la fin de
l’opération.
L’unité arithmétique et logique (1) L’unité arithmétique et logique (2)
• Composée de circuits logiques • UAL et registre d’état
• Réalise des opérations – Exemple: Overflow, Zéro, Carry
– arithmétiques: + - * ~% CMP AL, 0
– logiques ~ + . comparaison décalage Si AL = 0
Instruction de
• Les opérations à effectuer et les opérandes lui sont comparaison } alors ZF=1
sinon ZF=0
indiquées par l’Unité de commande. en assembleur 8086 finsi

Accumulateur

– Flag ZF du registre d’état


Opérande1 Opérande2
Commande
(Opération
à réaliser) Résultat • NB: Une UAL fait un nombre limité d’opérations 
fonctions manquantes à programmer

Registre d’état (1) Registre d’état (2)


• Les instructions de branchement conditionnels utilisent • SF : Sign Flag. Positionné à 1 si le bit de poids fort du résultat d'une
les indicateurs : bits spéciaux positionnés par l'UAL addition ou soustraction est 1; sinon SF=0. Utile pour la
manipulation des entiers relatifs, le bit de poids fort donne le signe
après certaines opérations. du résultat.

• ZF : Zero Flag. mis à 1 lorsque le résultat de la dernière • OF : Overflow Flag (Indicateur de débordement).
opération est zéro. Sinon, ZF est positionné à 0. OF=1 si le résultat d'une addition ou soustraction donne un nombre
qui n'est pas codable en relatif dans l'accumulateur (par exemple si
l'addition de 2 nombres positifs donne un codage négatif).
• CF : Carry Flag. Indicateur de report (retenue). Il est
positionné par les instructions ADD, SUB et CMP
Exemple : CMP = SUB, mais ne stocke pas le résultat de la
(entiers naturels). soustraction (positionner les indicateurs)
– CF = 1 s'il y a une retenue – CMP AX, 5 : ZF = 1 si AX contient 5, et ZF = 0 si AX ≠ 5.
Les accumulateurs Architecture de Von Newman
AX

4 accumulateurs 16 bits
– AX : Accumulateur utilisé pour AH AL
les opérations arithmétiques.
BH BL
– BX : Base pour les adressages
– CX : Compteur pour le comptage CH CL
– DX : Data pour les données
DH DL

• Registres accessibles sous forme de 2 info 8 bits


– AX se décompose en AH (poids fort) et AL (poids faible de
AX)…

La mémoire La mémoire
• Une mémoire peut être représentée comme une armoire • Stocke des informations utilisées par le processeur
de rangement constituée de différents tiroirs. • Juxtaposition de cellules (la plus petite quantité de
mémoire adressable).
• Chaque tiroir représente alors une case mémoire qui
• Chaque cellule est numérotée (adresse)
peut contenir un seul élément : des données.
• Généralement les mémoires sont adressables par octets
• Une adresse identifie la case mémoire et chaque • Taille d'une cellule
donnée est accessible grâce à son adresse. – octet : 8 bits (byte)
Adresse Case mémoire – word : 16 bits, Double word : 32 bits, Quad word 64
5=101 00000000 bits : en fonction de machines (16 ou 32 bits)
4=100 00000000 • Notation :
3=011 00000000 – Si M désigne une cellule mémoire
2=010 11101110 – [M] représente son contenu
1=001 10001110
0=000 00001000
Opérations effectuées sur les
Organisation d’une mémoire
mémoires
• Mémoire de 96 bits : • Lecture (adresse) : lit l’emplacement donné par adresse
– Organisation en cellules élémentaires (8bits), 12 bits ou 16 bits : et ne modifie pas l’emplacement mémoire.
AdressesAdresses
0:0 0
0:1 1 • Écriture (valeur, adresse) : met à l’emplacement adresse
0:2 2
0:3 3 la valeur placée en paramètre
0:4 4
0:5 5
1:0 6
1:1 7
1:2 8
1:3 9
1:4 10
1:5 11

8 bits 12 bits 16 bits

Exemple d’accès mémoire Caractéristiques des mémoires


• Capacité : nombre total de bits que contient la mémoire. S’exprime souvent en
``Ajouter 5 au contenu de la case mémoire d'adresse 180'' : octet.
• Format des données : nombre de bits que l’on peut mémoriser par case
1. Le processeur lit et décode l'instruction; mémoire.
2. le processeur demande à la mémoire la contenu de • Volatilité
– laps de temps durant lequel elle maintient les informations
l'emplacement 180; – Alimentation des mémoires : l'information stockée est volatile si elle risque
3. la valeur lue est rangée dans l'accumulateur; d'être altérée par un défaut d'alimentation électrique et non volatile dans le
cas contraire.
4. l'unité de traitement (UAL) ajoute 5 au contenu de – mémoire de travail de l'ordinateur, mémoire sur support magnétique
l'accumulateur; • Temps d'accès
– temps pour accéder à l'information une fois que l’instruction a été lancée.
5. le contenu de l'accumulateur est écrit en mémoire à – de l'ordre de la ns pour les mémoires actuelles et de la ms pour les
l'adresse 180. supports magnétiques
• Type d'accès
– accès direct à l'information, accès aux mots-mémoire par leur adresse.
C'est l'unité de commande qui déclenche chacune de ces – accès séquentiel
actions dans l'ordre. L'addition est effectuée par l'UAL. • Temps de cycle : intervalle minimum entre 2 demandes successives de
lecture/écriture.
• Débit : nombre maximum d’informations lues ou écrites par seconde
Hiérarchie des mémoires Hiérarchie des mémoires
• Machine idéale
– taille mémoire illimitée
– temps d'attente nul

• Problème de coût => Hiérarchie de mémoires

• Le processeur va chercher dans les différentes


mémoires
Registres : situés au niveau du processeur, stockage des opérandes et des résultats
Mémoire cache : mémoire rapide destinée à accélérer l’accès de la mémoire
principale.
Mémoire principale : contient les programmes (instructions et données)
• L’optimisation est faite par le gestionnaire de mémoire
Mémoire d’appui : mémoire intermédiaire entre mémoire principale et mémoire de
masse, mémoire de cache.
Mémoire de masse : stockage permanent, sauvegarde. Disques durs, CDROM, DVD

Caractéristique des mémoires La mémoire virtuelle


• mémoire vive: RAM
• Utilisation de la mémoire secondaire «comme si» c’était
de la mémoire centrale
– Mémoire volatile
• Disponible à partir des 80386 et 68030
– Cycle de lecture/écriture (@ bus d'adresse, V bus de donnée, CS,
• La gestion se fait au niveau du système d’exploitation
R/W)
• Système de gestion de mémoire virtuelle très
– Mémoire vive statique  SRAM sophistiqué
– Mémoire vive dynamique  DRAM
– Mémoire vive dynamique Synchrone  SDRAM – Pagination :
• mono dimensionnelle
• mappage de l’espace d’adressage sur la mémoire physique.
• mémoire morte: ROM, PROM, EPROM, EEPROM • Les zones mémoires lues sur la mémoire secondaire sont les pages
– A lecture seule,
– Conserve l'information – Segmentation :
• possibilité d’avoir plusieurs espaces d’adressage virtuels
– ROM : information stockée de manière définitive, • chaque espace est indépendant : les segments
– PROM : Programmable par l'utilisateur • les segments sont de taille variable (limités à 64k)
• Sur les 80X86 la segmentation à été utilisée pour résoudre le problème des
– EPROM -EEPROM : Programmable + effacement par UV ou adresses sur 20 bits
électriquement
Traduction adresse virtuelle –
La pagination
adresse physique
• Séparation entre espace d’adressage et emplacement
mémoire
• Une page est une zone de mémoire de taille fixe (4k)
• Déplacement des pages de la mémoire secondaire vers
la mémoire centrale -> Pagination
• La Pagination
– se fait au fur et à mesure des besoins
– Pb du défaut de page
– La pagination est transparente à l’utilisateur
• Réalisation de la pagination
– à la charge du système d’exploitation

Mémoires rapides : registres


BUS DE DONNEES
Microprocesseur
Registre de données
Bus interne de données

• Mémoire locale et privée du processeur


R0 Rn
A
R D
C • Information temporaire
C
E ’
G I SP PC
U
M • Capacité limitée (1 à 128 bits)
Registre auxiliaire Registre d’instruction I N U
S L
Code Op. Adresse D A
T E T
UAL R X E
E U
Décodeur R
Registre d’état

Bus interne d’adresses


Signaux internes
de commande
BLOC LOGIQUE DE COMMANDE

Registre d’adresses
Horloge Bus de
commande
BUS D’ADRESSES
Registres Registres
• Registres de travail :
– AX : Accumulateur utilisé pour les opérations arithmétiques.
– BX : Base pour les adressages
– CX : Compteur pour le comptage
– DX : Data pour les données
• Registres d'offset :
– SI : Source Index utilisé lors d'opérations sur chaînes de caractères, associé à DS.
– DI : Destination Index utilisé lors d'opérations sur les chaînes de caractères, associé
à DS. si utilisé comme index et à ES lors de manipulation de chaînes.
– IP : Instruction Pointer associé à CS, il indique la prochaine instruction à exécuter, et
ne peut être modifié.
– BP : Base Pointer associé à SS pour accéder aux données de la pile lors d'appels
d'un sous-programme.
– SP : Stack Pointer associé à SS, il indique l'adresse du dernier élément de la pile.
• Registres de segment :
– CS : Code Segment il contient l'adresse du segment de la mémoire de programme
– DS : Data Segment il contient l'adresse du segment de mémoire de données
– SS : Stack Segment il contient l'adresse du segment de mémoire de la pile
– ES : Extra Segment segment supplémentaire pour adresser des données.

Organisation de la mémoire
Mémoire segmentée
centrale

Les instructions manipulent des • Nécessaire d'implanter dans un microprocesseur


adresses réduites, qui désignent des – espace pour le système
objets à l’intérieur d’un segment. – espace pour l'utilisateur
Dans le cas du 8086, on a plusieurs – espace pour les entrées /sorties
segments qui servent à stocker le
code du programme, ses données • Taille suffisante pour ranger les programmes
statiques, les données de la pile, etc.

• Séparation entre les différents espaces (utilisateur,


système)
Modèle d’organisation de la
Machine à 1 et 2 niveaux d’adressages
mémoire
• Modèle mémoire linéaire (1 niveau d’adressage)
• Exemple
DATA SEGMENT
– valable pour OS qui nécessitent une vitesse performante A DW 5
– protection moindre B DW -1
DATA ENDS
– limité dans le cas des applications de plus de 4Go de mémoire
CODE SEGMENT
MOV AX,A
• Modèle de mémoire segmentée (2 niveaux d’adressage) MOV AX,B
– utilise les registres de segment et quatre niveaux de protection CODE ENDS

– les OS peuvent se protéger des applications


– le processeur gère la mémoire et vérifie les protections

Le
Lecode
coden’est
n’estpas
paslié
liéààl’adresse
l’adresse Le
Lecode
codeest
estlié
liéààl’adresse
l’adresse
d’implantation
d’implantation des donnéesdans
des données danslala d’implantation
d’implantationdesdesdonnées
données
mémoire physique
mémoire physique dans
danslalamémoire
mémoirephysique
physique

La pile La pile
• Le registre SS (Stack Segment) = registre segment qui
• Structure de « rangement » de données
– zone mémoire spécialisée contient l'adresse du segment de pile courant (16 bits de
– mémorise les adresses d’appel et retour de sous programmes poids fort de l'adresse). Il est initialisé au début du
– fonctionnement LIFO (Last In, First Out) programme et reste fixé par la suite.
• Le registre SP (Stack Pointer) pointe sur le dernier bloc
• Comment y accéder : occupé de la pile
– adresse du dernier élément posé : SS:SP
– empiler : PUSH Reg Push Pop
– dépiler : POP Reg SP
Pointeur adresses hautes
de sommet de la mémoire
Espace
• La pile augmente vers les adresses faibles Réservé Espace
Pour la pile SP
– PUSH : SP  SP- 2, POP : SP  SP+ 2 occupé
par la
BP BP pile
Pointeur adresses basses
de base de la mémoire
Pile : exemple d’utilisation (1) Pile : exemple d’utilisation (2)
• PUSH registre • La pile est souvent utilisée pour sauvegarder temporairement le
contenu des registres :
– empile le contenu du registre sur la pile.
;AX et BX contiennent des données a conserver
• POP registre PUSH AX
– retire la valeur en haut de la pile et la place dans le registres spécifié.
PUSH BX
MOV BX, 10 ; on met la valeur 10 dans BX
• Exemple : transfert de AX vers BX en passant par la pile. ADD AX, BX ; AX  AX+BX
POP BX ; récupère l'ancien BX
PUSH AX ; on met AX sur la pile (SPSP-2) POP AX ; et l'ancien AX
POP BX ; met la valeur dépilée dans BX (SPSP+2)
• La pile peut conserver plusieurs valeurs : la valeur dépilée par POP
est la dernière valeur empilée : pile LIFO (Last In First Out, Premier
• Note : équivalent à MOV AX,BX Entré Dernier Sorti).

Pile : registres SP Instructions arithmétiques et


logiques
• Opérations entre une donnée et un accumulateur. Le
16 bits
résultat peut être placé dans l'accumulateur. La donnée
peut être une constante ou une valeur contenue dans un
emplacement mémoire.

Emplacement
Adresses libre Exemples :
Croissantes • addition : AX  AX + donnée;
SP-2
SP • soustraction : AX  AX - donnée;
• incrémentation de AX : AX  AX + 1;
PUSH POP
BP
• décrémentation : AX  AX - 1;
• décalages à gauche et à droite;
Les branchements L’UC: Instructions
• Le registre IP du processeur conserve l'adresse de la • Une instruction
prochaine instruction à exécuter. Le processeur effectue – Opération élémentaire
les actions suivantes pour chaque instruction : – Information sur :
– lire et décoder l'instruction à l'adresse IP; • ce que l’instruction fait (add, sub, mov ..)
– IP IP + taille de l'instruction; • sur quelles données (AL, AX, 10h ...)
– exécuter l'instruction.
Exécution Séquentielle du code • les instructions sont spécifiques à un microprocesseur
– 680XX, 80X86, SPARC ...
– Exemple
• Pour modifier le déroulement normal d'un programme, • Pentium 220 instructions.
on peut exécuter un branchement. • Techno MMX +57 instructions
– JMP étiquette
– Modification de la valeur de IP et branchement de IP à l’adresse
indiquée par étiquette

Instructions Instructions
• Codage d’une instruction • Les instructions et leurs opérandes (paramètres) sont
stockés en mémoire principale
– La taille totale d'une instruction (nombre de bits nécessaires
Zone Opération Opérande pour la représenter en mémoire) dépend du type d'instruction et
aussi du type d'opérande.

– Zone Opération • Chaque instruction est toujours codée sur un nombre


• Code Opération -> Codage unique entier d'octets, afin de faciliter son décodage par le
• jeu d’instruction limité processeur. Une instruction est composée de deux
champs :
– Opérande – le code opération, qui indique au processeur quelle instruction
• adresse(s) de la donnée réaliser;
• Adressage implicite  utilisation d’un accumulateur – le champ opérande qui contient la donnée, ou la référence à une
• Exemple : B0 01  MOV AL , 01 donnée en mémoire (son adresse).
Plan Définitions
• Introduction
– Différentes vues d ’un ordinateur
Langage Haut Compilation
– Évolution et performance des machines
niveau Langage évolué
• Représentation de l’information (for, if, then, write, etc…)  langage machine
• Algèbre de Boole
• Circuits séquentiels/Automates
• Architecture type Von Neumann
Assemblage Langage
• Couche d’assemblage assembleur
Langage bas niveau
– Modes d’adressage langage machine (MOV, CMP, JMP, etc…)
– Langage
– Procédures
Langage machine
(0010 0011 1100 etc…)

Définitions Exemple de programme


• Langage machine : ordres (en binaire) compréhensible Programme en langage machine implanté à l’adresse mémoire
par un processeur donné. 0100H
• Exécutable : suite d’instruction en langage machine A1 01 10 03 06 01 12 A3 01 14
• Assembleur : mnémoniques associées au langage Ce programme additionne le contenu de deux cases mémoire
machine (JMP,MOV,CMP…) et range le résultat dans une troisième

Adresse Contenu MP Langage Symbolique Explication


Exemple.asm Exemple.obj Exemple.exe 0100 A1 01 10 MOV AX, [0110] ;Charger AX avec le
contenu de 0110.
0103 03 06 01 12 ADD AX, [0112] ;Ajouter le contenu de
0112 à AX (résultat dans AX).
Assemblage : MASM Exemple.asm
0107 A3 01 14 MOV [0114],AX ;Ranger AX en 0114.
Edition de liens : LINK Exemple.obj
Caractéristiques du 8086
Processeurs 80x86
• Micro-processeurs 80x86 équipent les PC et Bus de données : 16 bits
compatibles Bus d’adresse : 20 bits
Registres : 16 bits

– Premiers PC (début 80) = 8086, micro-processeur 16 bits 4 accumulateurs 16 bits


– Puis 80286, 80386, 80486, Pentium…
– Augmentation de la fréquence d’horloge, de la largeur des bus Accumulateur (AX)
d’adresses et de données Base (BX)
Counter (CX)
– Ajout de nouvelles instructions et de registres Accumulateur auxiliaire (DX)

• Compatibilité ascendante Registres accessibles sous forme de 2 info 8 bits

AX se décompose en AH (poids fort) et AL (poids faible de AX)…


– Un programme écrit dans le langage machine du 286 peut
s’exécuter sur un 386 (l’inverse est faux)

Caractéristiques du 8086 Segmentation de la mémoire

4 accumulateurs 16 bits Largeur du bus d’adresse = 20 bits


Possibilité d’adressage mémoire = 220 = 1 Mo
AX, BX, CX ,DX
Le pointeur d’instruction fait 16 bits
Registres d’index : Possibilité d’adresser 216 = 64 Ko (ce qui ne couvre pas la mémoire)

Pointeur d’instruction (IP) On utilise deux registres pour indiquer une adresse au processeur
Index source ou destination(SI, DI) Chaque segment débute à l'endroit spécifié par un registre spécial
Pointeur de Pile ou de base (SP, BP) nommé registre segment.
Le déplacement permet de trouver une information à l'intérieur du
3+1 registres segment : segment.
CS:IP : lecture du code d’une instruction (CS registre segment et IP
Segment de code (CS) : contient le prog en cours d’exécution déplacement)
Segment data (DS) : contient les données du programme DS : accès aux données (MOV AX,[1045] = lecture du mot mémoire
Segment stack (SS) : contient des données particulières d’adresse DS:1045H)
Extra Segment (ES)
Segmentation de la mémoire Jeu d’instruction (1)

Registres de déplacement = sélectionner une information dans un Instruction d’affectation : MOV


segment. (Transfert CPU Mémoire)

Dans le segment de code CS : le compteur de programme IP joue ce Instructions arithmétiques : INC (incrémentation)
rôle. CS:IP permet d'accéder à une information dans le segment de (Opération Acc / Donnée) : DEC (décrementation)
code. : ADD (addition)
: SUB (soustraction)
Dans les segments de DS : les deux index SI ou DI jouent ce rôle. Le
: CMP (soustraction sans
déplacement peut être aussi une constante. DS:SI ou DS:DI
permettent d'accéder à une information dans le segment de sauvegarde)
données. : NEG

Dans le segment de pile SS le registre SP (stack pointer) et BP (base Instructions logiques : NOT, OR, XOR
pointer) jouent ce rôle. SS:SP ou SS:BP permettent d'accéder à une : AND, TEST (= AND sans
information dans le segment de pile. sauvegarde)
: SHL (SHR), SAL (SAR)
: ROL (ROR), RCL (RCR)

Jeu d’instruction (2) Branchements

Le processeur exécute une instruction en mémoire puis passe à celle


Branchement : JMP qui suit en mémoire : séquentiel
Branchements conditionnels : JE/ JZ (JNE/ JNZ) : Jump if
zero Besoin de faire répéter au processeur une suite d’instructions
Besoin de déclencher une action qui dépend d’un test
: JO (JNO) : Jump if overflow
: JS (JNS) : Jump if sign
Utilisation d’une instruction de branchement ou saut
Comparaison de valeurs
On indique au processeur l’adresse de la prochaine instruction
CMP AX, BX suivi d ’un test :
On distingue deux catégories de branchements
(entiers naturels) (complément à 2)
AX > BX ? JA ( >= JAE) JG (JGE) le saut est toujours effectué (sauts inconditionnels)
AX < BX ? JB (JBE) JL (JLE) il est effectué seulement si une condition est vérifiée (sauts
conditionnels).
Rappel sur le registre IP Sauts inconditionnels

• Le registre IP du processeur conserve l'adresse de la • Principale instruction de saut inconditionnel = JMP


prochaine instruction à exécuter
• Le processeur effectue les actions suivantes pour • L'opérande de JMP est un déplacement, c'est à dire une
chaque instruction : valeur qui va être ajoutée à IP. L'action effectuée par
– lire et décoder l'instruction à l'adresse IP; JMP est :
– IP IP + taille de l'instruction;
– exécuter l'instruction. – IP = IP + déplacement

• Pour modifier le déroulement normal d'un programme • Le déplacement est un entier relatif sur codée 8 bits. La
– l'exécution de l'instruction doit modifier la valeur de IP
valeur du déplacement est :
– c'est ce que font les instructions de branchement.

– déplacement = adr. instruction visée - adr. instruction suivante

Sauts inconditionnels : exemple Sauts conditionnels : exemples

Exemple : le programme suivant écrit indéfiniment la valeur 0 à l'adresse JE Jump if Equal (ou JZ) JA Jump if Above
0140H. saut si ZF = 1; saut si CF=0 et ZF=0;

La première instruction est implantée à l'adresse 100H. JNE Jump if Not Equal (ou JNZ) JBE Jump if Below or Equal
saut si ZF = 0; saut si CF=1 ou ZF=1.
Adresse Contenu MP Langage Symbolique Explication
JG Jump if Greater JB Jump if Below
0100 B8 00 00 MOV AX, 0 met AX a zéro saut si ZF = 0 et SF = OF; saut si CF=1.
0103 A3 01 40 MOV [140], AX écrit à
l'adresse 140 JLE Jump if Lower or Equal JO (JNO) Jump if Overflow
0106 EB FC JMP 0103 branche en 103 saut si ZF=1 ou SF = OF; saut si OF=1…
0107 xxx -> instruction jamais exécutée
JS (JNS) Jump if Sign
Le déplacement est ici égal à FCH, c'est à dire -4 (=103H-107H). saut si SF=1;
Décalage et rotations Décalage

SHL registre, 1 (Shift Left)


Décalage vers la gauche ou vers la droite les bits de l'accumulateur.
Décale les bits du registre d'une position vers la gauche. Le bit de
opérations utilisées pour décoder bit à bit des données gauche est transféré dans l'indicateur CF. Les bits introduits à droite sont
ou pour diviser ou multiplier rapidement par une puissance de 2. à zéro.

En effet : décaler AX de n bits vers la gauche revient à le multiplier par 2n


De même, un décalage vers la droite revient à diviser par 2n.
SHR registre, 1 (Shift Right)
Ces opérations peuvent opérer sur les registres AX ou BX (16 bits) ou
sur les registres de 8 bits AH, AL, BH et BL. Comme SHL mais vers la droite. Le bit de droite est transféré dans CF. SHL
et SHR peuvent être utilisé pour multiplier/diviser des entiers naturels (et
SHL, SHR, ROL, ROR, RCL, RCR… non des relatifs car le bit de signe est perdu)

Rotations Décalage et rotations

ROL registre, 1 (Rotate Left) RCL registre, 1 (Rotate Carry Left)

Rotation vers la gauche : le bit de poids fort passe à droite, et est aussi Rotation vers la gauche en passant par l'indicateur CF. CF prend la place
copié dans CF. Les autres bits sont décalés d'une position. du bit de poids faible; le bit de poids fort part dans CF.

ROR registre, 1 (Rotate Right) RCR registre, 1 (Rotate Carry Right)

Comme ROL, mais à droite. Comme RCL, mais vers la droite.

RCL et RCR sont utiles pour lire bit à bit le contenu d'un registre7.
Opérations logiques Opérations logiques

OR destination, source (OU : 1 ou 0 =1 ; 1 ou 1 = 1…)


3 opérateurs logiques : ET, OU et OU exclusif.
OR est souvent utilisé pour forcer certains bits à 1. Par exemple après
jamais propagation de retenue lors de ces opérations (chaque bit du OR AX, FF00, l'octet de poids fort de AX vaut FF, tandis que l'octet
résultat est calculé indépendamment des autres) de poids faible est inchangé.

Opérations sont de la forme : OR destination, source AND destination, source (ET : 1 et 1 = 1 …)

destination : registre ou emplacement mémoire (adresse) où doit être AND est souvent utilisé pour forcer certains bits à 0. Après AND AX,
placé le résultat. FF00, l'octet de poids faible de AX vaut 00, tandis que l'octet de
source : constante (adressage immédiat), registre (adressage poids fort est inchangé.
implicite), ou adresse (adressage direct).
XOR destination, source (OU EXCLUSIF : 1 xor 1 = 0…)
OR AX, FF00 ; AX <- AX ou FFOO
OR AX, BX ; AX <- AX ou BX XOR est souvent utilisé pour inverser certains bits. Après XOR AX,
OR AX, [1492] ; AX <- AX ou [1492] FFFF, tous les bits de AX sont inversés

Modes d’adressage Modes d’Adressage


• Permet la manipulation des différents structures de
données • Les opérandes peuvent être dans :
– des registres
• Permet l’accès des données en mémoire. – une zone mémoire: on utilise alors l’adresse effective qui peut être
une combinaison de 3 éléments
– Des variables par leur valeur • la base
– Accès aux données via des pointeurs • le Déplacement
• l’Index
– Des éléments de tableaux
• Cela donne des adressages
– Accès aux éléments de structures – IMPLICITE
• Ces données sont les opérandes pour des instructions – IMMEDIAT
– DIRECT
– Arithmétique … – INDIRECT
– Déplacement … – BASE
– INDEXE
Adressage implicite ou par registre Adressage immédiat
– Pas d’accès mémoire pour les opérandes – Adressage dans lequel la valeur de l’opérande figure
directement dans l’instruction sans avoir besoin de faire
un nouvel accès mémoire.
– L'instruction contient seulement le code opération, sur 1 ou 2
octets.
Code Registre Valeur

– L'instruction porte sur des registres ou spécifie une opération


sans opérande
– Exemple :
– Exemple : INC AX
MOV AL, 10 ; Met la valeur 10 dans AL
ADD AX, 5 ; Additionne 5 à la valeur contenue dans AL

Adressage direct Adressage indirect


• Un des opérandes est l’emplacement mémoire dont L’adresse de la variable est contenue dans un
l’adresse figure dans l’instruction. Une fois l’instruction registre de base ou d’index : 2 accès mémoires.
lue, il faut aller faire un accès mémoire pour obtenir – Exemple :
l’opérande désiré.
MOV BX, offset VAR
MOV AX,[BX] ; Met dans AX la valeur contenue dans
l’emplacement mémoire dont l’adresse est spécifiée dans
l’emplacement mémoire d’adresse BX.
– Exemple : instruction Registre Registre
instruction @opérande Mémoire
@opérande
Mémoire
MOV AX,[150]; Met la valeur contenue opérande
opérande
dans l’emplacement d’adresse 150 dans AX opérande

• NB : Le type de la donnée doit être accordé avec le registre utilisé


Adressage basé Adressage indexé
– On utilise un registre d’index SI ou DI plus un déplacement
• Similaire à l’adressage indirect par registre sauf qu’un
– L’adressage est noté par des crochets
déplacement est ajouté à la base.
– Utile pour le parcours de tableaux
adresse effective = adresse base + déplacement
instruction @mémoire

instruction Registre Déplacement Mémoire


Mémoire @T
Registre


i
@base opérande Registre d’index
– Exemple : Déplacement T[i]
– Exemple : MOV BX, OFFSET DVAR MOV SI,2
MOV AX,[BX+4] MOV AX, T[SI]
ADD AX,[BP+4]

Code opération : assembleur


Modes d’adressage : résumé
• Par registre ou implicite Symbole Code Op. Octets

– Add AX,BX MOV AX, valeur B8 3 AX ← valeur

• Immédiat MOV AX, [ adr ] A1 3 AX ← contenu de l'adresse adr.

– Add AX,valeur MOV [ adr ], AX A3 3 range AX à l'adresse adr.


ADD AX, valeur 05 3 AX ← AX + valeur
• Direct
– Add AX,[adresse] ADD AX, [ adr ] 03 06 4 AX ← AX + contenu de adr.
SUB AX, valeur 2D 3 AX ← AX - valeur
• Indirect
– Mov BX,adresse SUB AX, [ adr ] 2B 06 4 AX ← AX - contenu de adr.

– Add AX,[BX] SHR AX, 1 D1 E8 2 décale AX à droite.

• Indexé
– Add,[adresse+index] On utilise des programmes spéciaux, appelés assembleurs,
pour traduire automatiquement le langage symbolique en code
machine.
Variables
Structure du programme
PILE SEGMENT STACK
DW 256 DUP(?)
Base EQU 0
DB : Variable 8 bits PILE ENDS
DW : Variable 16 bits
EQU : Constante DATA SEGMENT

DATA ENDS
BYTE : Taille d'une variable mémoire 8 bits
WORD : Taille d'une variable mémoire 16 bits CODE SEGMENT
Etiquette : adresse d’une méthode/ branchement ASSUME CS:CODE, DS:DATA, SS:PILE

main:
MOV AX, DATA
MOV DS,AX

MOV AX,PILE
MOV SS,AX
MOV SP,Base

CODE ENDS
END main

Structure du programme Structure du programme


PILE SEGMENT STACK PILE SEGMENT STACK
DW 256 DUP(?) DW 256 DUP(?)
Base EQU 0 Déclaration du segment de pile Base EQU 0
PILE ENDS PILE ENDS

DATA SEGMENT DATA SEGMENT

DATA ENDS DATA ENDS Déclaration du segment de données


CODE SEGMENT CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILE ASSUME CS:CODE, DS:DATA, SS:PILE

main: main:
MOV AX, DATA MOV AX, DATA
MOV DS,AX MOV DS,AX

MOV AX,PILE MOV AX,PILE


MOV SS,AX MOV SS,AX
MOV SP,Base MOV SP,Base

CODE ENDS CODE ENDS


END main END main
Structure du programme Structure du programme
PILE SEGMENT STACK PILE SEGMENT STACK
DW 256 DUP(?) DW 256 DUP(?)
Base EQU 0 Base EQU 0
PILE ENDS PILE ENDS

DATA SEGMENT DATA SEGMENT

DATA ENDS DATA ENDS


CODE SEGMENT
CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:PILE
ASSUME CS:CODE, DS:DATA, SS:PILE
main: Etiquette du programme principal
main: MOV AX, DATA
MOV AX, DATA MOV DS,AX
MOV DS,AX Déclaration du segment de code
Avec initialisation des registres de MOV AX,PILE
MOV AX,PILE MOV SS,AX
MOV SS,AX segment MOV SP,Base
MOV SP,Base
CODE ENDS
CODE ENDS END main Indication de l’étiquette où commence
END main le programme principal

Initialisation de variables Mon premier programme


Assume CS:CODE,DS:DATA Assume CS:Code,DS:Data
Data SEGMENT
DATA SEGMENT N1 DW 25H
N1 DW 25H N1 est un mot initialisé à 25H N2 DW 4
N3 DW ?
N2 DW 4 N2 est un mot initialisé à 4 Data ENDS
N3 DW ? N3 est un mot non initialisé Code SEGMENT
main PROC
TAB1 DW 2,3,4,3,2,5,4 TAB1 est un tableau de mots MOV AX,Data Initialisation du segment de
initialisé avec MOV DS,AX données
TAB1[0]=2,TAB2[1]=3… MOV AX,N1
MOV CX,N2
TAB2 DW 2 DUP(?) TAB2 est un tableau de mots non MOV DX,0
initialisés boucle: ADD DX,AX LOOP : boucle équivalent à
LOOP boucle
Chaine est une chaîne de DEC CX, JNZ boucle
Chaine DB ‘Hello’ MOV N3,DX
caractère main ENDP
DATA ENDS Code ENDS
END main
Appels systèmes DOS Procédures (1)
• Affichage de caractère • Déclaration d’une procédure :
MOV DL,’A’ Procedure PROC [NEAR/FAR]
MOV AH,02
INT 21H Procedure ENDP
• Saisie de caractère – NEAR : procédure et programme principal sont dans le même
segment de code
MOV AH,01
INT 21H ; résultat dans AL sous forme de car – FAR : ils sont dans 2 segments différents
ASCII
• Affichage chaîne de caractère • Appel de la procédure dans le programme
Chaine DB ’Hello$’ ; définie dans le segment de CALL Procedure ; IP va pointer sur l’adresse mémoire
données
MOV AH,09H
correspondant à Procédure
MOV DX,Offset Chaine
INT 21H

Procédures (2) Passage de paramètres


Comment l’unité de traitement arrive-t-elle à retourner au programme • 2 méthodes de passage de paramètres :
principal à la fin de la procédure ? – par registre
– par la pile
• Au moment de l’appel de la fonction, l’adresse de l’instruction
suivante est sauvegardée dans la pile :
– CALL = sauvegarde de IP • Passage de paramètres par registre :
– les paramètres d’entrée de la procédure sont mis dans des
registres avant l’appel de la procédure
• A la fin de la procédure, l ’Unité de Traitement récupère les valeurs
sauvegardées pour retourner au programme principal – les paramètres de sortie sont aussi rangés dans des registres
– RET = dépilement de IP
– avantage = rapidité, simplicité de gestion
• Si la procédure est de type FAR, CS est aussi sauvegardé sur la – inconvénients = peu de registres
pile lors du CALL, RET dépile IP puis CS
Passage par registre
Passage par la pile (1)

;programme principal • Les paramètres d’entrée sont empilés avant l’appel de la procédure
;Procédure
... • Les paramètres de sortie sont dépilés par le programme principal
– avantage = « portabilité »
Moyenne :
Mov AX, N1 – inconvénients = récupération des paramètres plus « lourde »
Mov BX, N2 Add AX, BX
SHR AX, 1 ;Procédure
Call Near Moyenne RET
Moyenne PROC NEAR
Mov Res, AX ;programme PUSH BP
... Mov BP, SP
... PUSH N1 Mov AX, [BP+4]
PUSH N2 Add AX, [BP+6]
Call Near Moyenne SHR AX, 1
POP Res Mov [BP+ 6], AX
... POP BP
Ret 2
PROC ENDP

Passage par la pile (2) Passage par la pile (3)


PUSH N1 Évolution de la pile
PUSH N2
Call Moyenne ; empilement de IP, @retour
POP AX ;on récupère N1 dans AX
-2

BP,SP 0 ancien BP
Moyenne PROC
PUSH BP +2
@Retour
MOV BP,SP
MOV AX,[BP+4] ;on accède à N2 +4 N2
Add AX,[BP+6] ;on accède à N1 A quoi sert BP ?
SHR AX, 1 ;on divise par 2 +6 N1
MOV [BP+6], AX ;on met AX dans N2
BP = référence de la pile au début de la procédure
POP BP ;restauration de BP à la fin de la procédure
permet d’avoir une référence fixe pour récupérer les
RET 2 ;on dépile IP+1 paramètre (N2)
paramètres
PROC ENDP
ici : [BP+ 4] pour N2 et [BP+ 6] pour N1
Passage par la pile (4) Procédure propre

Sauvegarde du résultat et nettoyage de la pile • Sauvegarder les registres dans la procédure de façon à
ne pas les modifier pour le programme principal.
– Exemple :
Moyenne PROC NEAR
PUSH BP
Mov BP, SP
PUSH AX ; Sauvegarde de AX
Mov AX, [BP+4]
Add AX, [BP+6]
SHR AX, 1
Mov [BP+ 6], AX
POP AX ; Restauration de AX
POP BP
Ret 2
PROC ENDP

Rappels : Registres de segment Rappels : Registres de travail

Nom Taille Fonction Nom Taille Fonction


Cs (Code Segment) 16 bits Mémorise le segment où se trouve le code en Ax (Accumulateur) 16 bits On l'utilise généralement pour des opérations
cours d'exécution (ne peut pas être modifié par arithmétiques, telles que MUL (multiplication)
le programme) ou DIV (division). Ax peut se diviser en deux
sous-registres de 8 bits. Ah représente les 8
Ds (Data Segment) 16 bits Mémorise le segment où se trouve les premiers bits, et Al les 8 derniers.
données du programme.
Bx (Base) 16 bits Bx est utilisé lors de l'accès à une zone
Ss (Stack Segment)16 bits Mémorise le segment où se trouve la pile de mémoire sous forme de tableau, il
données du programme représente l'indice de ce tableau. Par exemple,
on écrira Mov Dx, Es:[Bx]. Bx peut se diviser en deux
Es (Extra Segment) 16 bits Ce segment peut être utilisé pour faire ce que sous-registres de 8 bits. Bh représente les 8
l'on veut. Par exemple, il peut pointer sur la premiers bits, et Bl les 8 derniers.
mémoire écran.
Rappels : Registres de travail Rappels : Registres d'offset

(à combiner avec une adresse de segment)


Nom Taille Fonction
Nom Taille Fonction
Cx (Compteur) 16 bits Lors de l'appel d'instructions comme REP SI (Source Index) 16 bits Lors d'opérations sur les chaînes de
(répéter) ou LOOP (boucle), c'est le registre caractères, comme MOVSB ou
Cx qui est lu Cx peut se diviser en deux sous- SCASB, Ds:[Si] désigne la variable 'source'.
registres de 8 bits. Ch représente les premiers
bits, et Cl les 8 derniers. Di (Dest Index) 16 bits Lors d'opérations sur les chaînes de
caractères, comme MOVSB ou
Dx (Données) 16 bits Ce registre est généralement utilisé pour SCASB, Es:[Di] désigne la variable 'destination'.
stocker des données provisoires. Dx peut se
diviser en deux sous-registres de 8 bits. Dh Bp (Base Pointeur) 16 bits Bp a un rôle proche de celui de Bx, mais il est
représente les 8 premiers bits, et D les 8 généralement utilisé avec le segment de pile
derniers. (Ss:[Bp]).

Rappels : Registres d'offset

(à combiner avec une adresse de segment)


Annexes
Nom Taille Fonction

IP (Instruction Point)16 bits Cs:[Ip] indique la prochaine instruction à


exécuter. Tout comme Cs, Ip ne peut être
manipulé par le programme exécuté.

SP (Stack Pointeur) 16 bits Ss:[Sp] indique le dernier élément de la pile.


Chaque opération PUSH (empiler) ou POP
(dépiler) modifie le registre Sp.
La mémoire cache La mémoire centrale
• Le préchargeur d’instruction : un petit cache • Elle mémorise les programmes utilisateurs, le système
d’anticipation d’exploitation
• Un cache externe • Sa taille
– réduction des accès à la mémoire principale à des – les 16,32, 64.. Mega d’un PC
accès sans états d’attente • La mémoire centrale est située sur une carte mémoire
– les accès mémoires sont encore limités par la vitesse • Elle a une organisation standard
du bus • Elle communique avec le processeur (carte mère) via
• Un cache interne unifié instructions /données des bus (de données, d’adresse)
– Cache sur la puce du processeur • Représentation d’une variable en mémoire
– Occupation du bus – Sur les intels LITTLE ENDIAN
– Compétition interne instructions/données – Sur les motorola BIG ENDIAN

• Des caches séparés pour les données et les instructions

Cycle d’exécution d’une instruction Exemple de configuration de


mémoire
ffffffffh Espace
L’exécution d’une instruction se décompose en trois étendu
phases qui sont : (non
utilisé)
:
00900000h :

1. la recherche de l’instruction à traiter. Adresse Taille


Mémoire
2. le décodage de l’instruction. étendue 8192K
: (DRAM)
3. l’exécution de l’instruction. :
00100000h

000E0000h ROM
128K
Système
Ensuite, on passe à l’instruction suivante 000C0000h Circuit
128K
ROM/BIOS
000A0000h RAM vidéo Total = 1024k
128K

Mémoire
: de
base 640K
:
00000000h Utilisateur
(DRAM)
Mécanisme d'accès à la mémoire
L'accès à une information -> positionnement de l'adresse sur les n
lignes de bus
Adresse Sélection Mémoire
D 0
E 1
C 2
O
BUS D
E
D'ADRESSE U BUS
N LIGNES R DE DONNEES
A M LIGNES
D
R
E
S
S
E 2n-1

Exemple: N = 8, Adresse = 00000010


255 sélections possibles, sélection = 2
M= 16 -> bus de données reçoit des valeurs sur 16 bits