Vous êtes sur la page 1sur 47

Cours Architecture des Ordinateurs

1re Anne

Organisation de ce cours
Cours, TD, TP
7 sances de cours 10 sances de TD/TP

valuation :
2 examens de contrle continu 1 examen final

Dates :
Cours le mardi de 8h 10h

IUT de Nice - Cte dAzur Dpartement Informatique

Intervenants :
Erol Acundeger Gatan Rey Hnoc Soude Joanna Moulierac

Joanna Moulierac
joanna.moulierac@inria.fr

Objectif du cours
Introduction

Plan
Diffrentes vues d un ordinateur volution et performance des machines
Reprsentation de linformation Algbre de Boole Circuits
squentiels/Automates Architecture type Von Neumann

De quoi est compos un ordinateur : microprocesseur, des mmoires, disque dur ?


Quels sont les modles sous-jacents au fonctionnement dune machine ? Comment
sexcutent des programmes sur un ordinateur ? Quel est le lien entre le logiciel
et le matriel ? Comment se fait linterface avec lextrieur ? (fonctionnement
des divers priphriques)

Structure dinterconnexion : bus La mmoire lunit centrale


Couche dassemblage

Langage Modes dadressage Procdures


Ordinateur
Dfinitions :
Machine capable deffectuer automatiquement des oprations arithmtiques et
logiques ( des fins scientifiques, administratives, comptables) partir de
programmes dfinissant la squence de ces oprations. Un ordinateur est un ensemble
de circuits lectroniques permettant de manipuler des donnes sous forme binaire,
ou bits.

Dcomposition matrielle dun ordinateur


Un ordinateur est constitu de plusieurs parties :
Souris, cran, clavier, unit centrale, lecteur de disquettes ...

A lintrieur de lunit centrale


une carte mre une carte vido des disques ....

Sur la carte mre But dun ordinateur : dfinir et excuter des squences de
calculs

un microprocesseur de la mmoire (ROM, RAM) ...

Dans le microprocesseur,
la puce

Le processeur
Le processeur a t invent par Intel (avec le modle 4004) en 1971. Il est
charg de traiter les informations et d'excuter les instructions. Il communique
avec le reste de l'ordinateur via le langage binaire. Le processeur est rythm
par une horloge (quartz) cadence plus ou moins rapidement (on parle alors de
frquence). A chaque impulsion d'horloge, le processeur lit l'instruction stocke
gnralement dans un registre d'instruction et excute l'instruction.
Processeur RISC MIPS Kilo Mega Giga Tera Bit octet CPI

Terminologie
CPU, Central Processing Unit Reduced Instructions set computer Millions
dinstructions par seconde 210 = 1024 ~1000 220 = 1048576 ~1 000 000 230 =
1073741824 ~1 000 000 000 240 = 1099511627776 ~1 000 000 000 000 Binary digit 1
octet = 8 bits Cycles par instruction
Fabrication des processeurs
Les processeurs sont gravs sur des plaques appeles Wafers. Finesse de gravure
diffrentes selon les sries de processeurs (mesure en m ou nm). Les
processeurs actuels sont gravs en 0.09 et 0.065. Diminuer la finesse de
gravure permet de produire plus de processeurs la fois sur un Wafer
Diminution du cot 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 frquence.

Bout de silicium dop Wafer : Galette de plusieurs processeurs (1 processeur =


quelques mm2) Plus finement : Millions de transistors 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 considre une conductivit de
valeur dtermine.

Un Wafer

Plus la gravure est fine, plus la frquence d'horloge (exprime en mgahertz)


s'accrot 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 vrifie que tous
les composants ncessaires au dmarrage de l'ordinateur sont prsents. 6 -
alimentation du BIOS. 7 - Alimentation de la carte mre; ports IDE (primaire et
secondaire) : connecteurs des disques durs et des priphriques ATAPI ; Connecteur
du lecteur disquette. 8 - Ports externes du PC.
Evolution et gnrations des machines
Gnration Dates Technologie Oprations/s

Exemple de la famille des microprocesseurs Intel


4004

1 2 3 4 5

1946-57 Tubes vide 40k 1958-64 Transistors 1965-71 SSI-MSI 1972-77 LSI 1978VLSI
200K 1M 10M 100M

Premiers calculateurs lectroniques. Ex : ENIAC Premire srie commerciale


dordinateurs Circuits intgrs : permettent
de placer beaucoup de transistors sur une mme puce

Pentium

Pentium II

Miniaturisation, Monte en puissance et rduction des cots. Intgration de


millions de transistors sur une mme puce.

Pentium III

Pentium 4

Plan
Introduction

historique

Diffrentes vues d un ordinateur volution et performance des machines


Reprsentation de linformation Algbre de Boole Circuits squentiels/Automates
Architecture type Von Neumann

Structure dinterconnexion : bus La mmoire lunit centrale


Couche dassemblage

Langage Modes dadressage Procdures


Reprsentation dun nombre en base b
Reprsentation utilise par les humains : Base 10 ou dcimale
10 caractres utiliss de 0 9

Reprsentation d'un nombre en base b


N = an bn + an-1 bn-1 + ..... + a1 b1+ a0 b0
Poids fort

Reprsentation utilise par les ordinateurs : Base 2 ou binaire, base


hexadcimale Pour un reprsentation un nombre en base b, on utilise b caratres :
Base 2 : 0,1 Base 8 : de 0 7 Base 16 : de 0 9 et de A F

ai bi ai

Poids de

Rang de base

ai

Poids faible

ai = 0 ou 1 => bit

Exemple : Base 2
1010 = 1.23 + 0.22 + 1.21 + 0.20 1010 = 10102
Indique la base

Exemples
(354)10 = 3*102 + 5*101 + 4*100

Passage de la base 10 la base 2

division successives du nombre par 2 pour la partie entire


20 2 0 10 2 0 5 1 Bit poids faible

(01100110)2 = 102
27 0 26 1 25 1 24 0 23 0 22 1 21 1 20 0

2 2 0

2 1 1

2010 = 101002
2 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 (dcimal) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Base 2 (binaire) 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
10000 10001 10010 10011 10100

Base 8 (octale) 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24

Base 16 (Hexadcimale) 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14

Reprsentation des nombres


Ordinateurs travaillent sur un nombre fixe de bits La notion d'octet
un octet = 8 bits

La notion de mot
un mot = 8, 16, 32 64 bits Intel 80386 et 80486 -> 32 bits Pentium 4 -> 128
bits

Les nombres flottants

Les nombres ngatifs


Table des codes Ascii (7 bits Norme ISO 646)

Tables de vrit
Entres A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Sortie S 0 1 1 1 0 1
0 0

American Standard Code for Information Interchange

3 entres => 23 = 8 combinaisons possibles Ecriture dans lordre des entiers


naturels Fonction logique :
Quand la fonction vaut-elle 1 ?

S = A.B .C + A.B.C + A.B.C + A.B .C S = A.B .C + A.B + A.B .C

G est cod 47h soit 0100 01112

Conventions dcriture
ET X Y X.Y 0 1 0 1 0 0 0 1

Tables de vrit
OU X 0 0 1 1 Y X+Y 0 1 0 1 0 1 1 1 XOR (OU EXCLUSIF) X 0 0 1 1 Y XY 0 1 0 1 0 1 1
0 NON X 0 1 X 1 0 0 0 1 1

Oprations 2 oprandes :

X ET Y = X .Y X OU Y = X + Y
Oprations 1 oprande :

NOR (NON OU) X 0 0 1 1 Y X+Y 0 1 0 1 1 0 0 0

NAND (NON AND) X 0 0 1 1 Y X.Y 0 1 0 1 1 1 1 0

NON ( X ) = X = X = / X
Simplification des fonctions logiques
Trois techniques de simplification :
Le raisonnement comme prcdemment Lalgbre de Boole : Algbre des variables
binaires et boolennes. La mthode graphique par les tableaux de Karnaugh.

Lois de composition
Absorption : X.(X+Y) = X X+(X.Y) = X Commutativit : X.Y = Y.X X+Y = Y+X
Associativit : X.(Y.Z) = (X.Y).Z X+(Y+Z) =(X+Y)+Z Distributivit : X.(Y+Z) =
X.Y+X.Z 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)


BUT : Obtenir lexpression logique la plus simple dune fonction S Un tableau de
Karnaugh est un tableau de vrit dans lequel les diffrentes possibilits des
entres sont classes en code GRAY. Ceci correspond :
0 puis 1 dans le cas d'une variable, 00, 01, 11, 10 pour 2 variables.

X + Y X .Y X .Y X + Y
Exemple dapplication des lois de Morgan :

( A.B + A.D).( B + C ) = A.B + A.D + B + C = A.B. A.D + B.C = ( A + B ).( A + D ) +


B.C

On peut remarquer qu'en passant d'une case une case adjacente, une seule
variable a chang. Regrouper ces deux cases adjacentes correspond donc la
simplification par cette variable. On simplifie l'quation d'une fonction en
faisant des regroupements sous forme d'une, deux ou quatre lignes ou colonnes. Le
passage de la dernire ligne la premire est galement un cas adjacent (idem pour
les colonnes).
Tableau de Karnaugh (2)
Principe : Simplification par adjacence

Tableau de Karnaugh
Tableau deux variables dentres

B A
0 1

A.B.C + A.B. C = A.B(C + C ) = A.B


En choisissant un code de Gray* pour coder les entres on retrouve les adjacences
sur des cases cte cte.

S = A.B+A.B S=B

0 0

1 1

* Code de Gray : distance de 1 entre deux mots de code conscutifs

Tableau de Karnaugh
Tableau deux variables dentres

Tableau de Karnaugh
1

B A
0 1

Tableau deux variables dentres

B A
0 1

S = A.B+A.B S=B
Tableau trois variables dentres
A
0 1

0 0

1 1

S = A.B+A.B S=B
Tableau trois variables dentres

0 0
1 1

C B

0 0 1 1

0 1

1 1

1 0 1

S = B + A.C

A
0 1

C B

0 0 1 1

0 1

1 1

1 0 1

1
Tableau de Karnaugh
Tableau quatre variables dentres

Plan
1 1 1 1 1 1 0 1

S = C.A+D.C.B

AB
00 01 11 10

D C

0 0

0 1 1 1

Introduction Reprsentation de linformation

Algbre de Boole
1. Tables de vrit 2. Axiomes de lalgbre de boole et lois de Morgan 3. Tableau
de Karnaugh 4. Opration sur les chanes de bits Circuits squentiels Architecture
type Von Neumann

Etats non utiliss : tats qui existent en thorie mais qui en pratique ne
peuvent jamais apparatre pour des raisons physiques ou mcaniques. 0 0 1 D 0 1 1 C
AB

1 0

Structure dinterconnexion : bus La mmoire lunit centrale


Couche dassemblage

S = A.D+B.C

00 01 11 10

1 1

1 1 1 -

Langage Modes dadressage Procdures

Oprations sur les chanes de bits


Complment bit bit NON(x) :
NON(011100101) = 100011010

Oprations sur les chanes de bits


Addition :
0+0 = 00 0+1 = 01 1+1 = 10, ou autrement dit, 1+1 = 0 et report = 1 Exemple :

X 0 0 1 1
Y 0 1 0 1

S 0 1 1 0

R 0 0 0 1

OU(X,Y) et ET(X,Y) logiques bit bit sur les lments de la chane :


X = Y = X+Y = X.Y = 10100110 01100010 11100110 00100010

0 + 0 1 0 + 1 1 0 0 1 0

1 1 0

0 1 1

2 +3 =5 2 + 14 = 16

Dcalage droite :
DECD(1101) = 0110

1 0 1 0 0 0

Dcalage gauche
DECG (1101) = 1010

Report = 1
Plan
I. II. III. Introduction Reprsentation de linformation Algbre de Boole

Circuits logiques de base


Circuits standards :

A A.B B ET/ AND B OU/ OR A A+B B Non ET/ NAND Non OU/ NOR B XOR AB NOT

IV.

Circuits logiques

1) Circuits combinatoires 2) Circuits squentiels V. Architecture type Von Neumann


VI. Couche dassemblage

Matrialisent les oprateurs de bases 2, 3, 4 ou mme davantage dentres


Fonctionnent sur des signaux lectriques Egalement appels Portes logiques
A A+B A A

A A.B B

Circuits combinatoires
Entre f Sortie

Exemple de circuit logique (1)

Sortie = f(Entre)

Circuit combinatoire => un ensemble fini d entre E un ensemble fini de sortie S


Un circuit combinatoire ralise sur ses sorties une fonction de ses entres, et
fait son calcul en un temps connu born Exemple : Circuit 2 entres E1 et E2 :
E1 /E2 0
E1 E2

1 0 1

0 1

1 0
Exemple de circuit logique (1)

Exemples de circuits logiques (2)

A B C D E F

A B C D E F 1

( A + B ).( A + C )

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

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

Xi

Y i Ri 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

Ri+ Si
1

Demi-additionneur binaire

0 0 0 0 1

0 0 0 1 0 1 1 1

0 1 1 0 1 0 0 1

Additionneur complet

X Y

X
S

Y 0 1 0 1

S 0 1 1 0

R 0 0 0 1

1 1 1

0 0 1 1

p r e m ie r d e u x i m e 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 An Sn Sn

An Bn Rn R (n-1) Bn
Rn

Circuit logique deux entres (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
Sorties 3 tats : 0 ou 1 (Si E =1) ou ouvert (Si E =0) Le signal E est le
signal de validation de la sortie S
A S E S = A.E

Exemple de circuits combinatoires


Codeurs dcodeurs n vers 2n:
Commander un organe diffrent parmi 2n au moyen de n bits. Les lignes Csi
permettent de valider le circuit. Ici pour que le circuit fonctionne ces lignes
doivent tre vrai cad 100. Ces lignes permettent des montage plus complexes
plusieurs dcodeurs.
C B A CS0 CS1 CS2 Y7 Dcodeur 3/8 Y0 Y1 Y0 = C.B.A Y1 = C.B.A Y7 = C.B.A Y0 =
C.B.A .CS0.CS1.CS2

Les sorties des circuits logiques nomms mmoires sont toutes de type 3 tats
Par lintermdiaire de circuits nomms BUS le Microprocesseur peut accder aux
contenus de chaque circuit mmoire.

Exemple de circuits combinatoires


Multiplexeur 4 voies

Circuits squentiels
Le comportement dun circuit combinatoire ne dpend que de ses variables
dentres. Le circuit squentiel fait intervenir en plus ltat interne du
systme pour dterminer les sorties Dans un circuit squentiel, la sortie dpend
des entres et de ltat interne. La logique squentielle permet de raliser des
circuits dont le comportement est variable avec le temps. L'tat d'un systme
constitue une mmoire du pass.

e3 e2 e1 e0 Multiplexeur 4 voies B A S

B A
0 1

e0 e1

e2 e3

S=e0.B.A+e1.B.A+e2.B.A+e3.B.A
Circuits squentiels
Un systme squentiel peut tre synchrone ou asynchrone selon quil est commande
ou pas par un signal dhorloge. Un systme squentiel est asynchrone si partir
de linstant ou on applique un vecteur dentre, son volution est incontrlable de
lextrieur. Il est synchrone si son volution est contrlable de lextrieur par
un signal dhorloge.

Circuits squentiels
Circuit squentiel => un ensemble fini dentres E un ensemble fini dtats Q un
tat initial Q0 parmi les tats Q un ensemble fini de sorties S une fonction de
transitions ft : Q0 x E une fonction de sortie fs : Q0 x E Exemples de circuits
squentiels : Bascule SR Fonction de dcalage Fonction de comptage...

Q S

Bascule
Les bascules sont les circuits squentiels lmentaires permettant de mmoriser
une information binaire (bit) sur leur sortie. Une bascule est capable de se
souvenir dun tat prcdent. Elles constituent le point mmoire lmentaire.
Elles peuvent tre synchrones ou asynchrones. La bascule fondamentale est la
bascule SR (bascule Set-Reset)

Deux types de Bascules Synchrones/Asynchrones


Les bascules synchrones : asservies des impulsions dhorloge et donc
insensibles aux bruits entre deux tops Les bascules asynchrones, non asservies
une horloge et prenant en compte leurs entres tout moment.
Donnes Entres Horloge Donnes Entres Bascule Asynchrone Asynchrone sorties
sorties

Bascule Asynchrone Synchrone


Bascule SR
La bascule SR est le dispositif de mmorisation lmentaire. Cette bascule est
asynchrone. Toutes les bascules, y compris les bascules synchrones, ne sont en fait
que des volutions de cette bascule. La bascule SR est un dispositif deux entres
S et R et une sortie Q prsentant la proprit suivante :
lorsque S et R sont 0, Q conserve sa valeur (Etat mmoire) une apparition
(mme fugitive) de S entrane durablement Q=1 une apparition (mme fugitive) de R
entrane durablement Q=0 Qt 0 0 0 0 1 1 1 1 S 0 0 1 1 0 0 0 1 R 0 1 0 1 0 1 1 1 0 0
1 X 1 0 1 X

Bascule SR
Qt+1

Les combinaisons telles que S=1 et R=1 ne sont pas dfinies. Elles correspondent
un enclenchement simultan de S et R.

Bascule SR
2 entres : Set et Reset 1 variable en sortie qui prend 2 valeurs Q et Q La
sortie dune bascule dpend de ses entres et de son tat interne (la valeur
antrieure de la sortie Qt). R 0 0 1 1 S 0 1 0 1 Qt X X X Interdit Qt+1 X 1 0
Interdit

1. 2. 3. 4.

Plan
Introduction Reprsentation de linformation Algbre de Boole
Tables de vrit Axiomes de lalgbre de boole et lois de Morgan Tableau de
Karnaugh Opration sur les chanes de bits

Circuits squentiels Architecture type Von Neumann

Structure dinterconnexion : bus La mmoire lunit centrale


Couche dassemblage

Les valeurs indtermines sont affectes 0. La bascule est dite dclenchement


prioritaire.

Langage Modes dadressage Procdures


Architecture de Von Newman
Pour traiter une information, le microprocesseur seul ne suffit pas. Il faut
linsrer au sein dun systme de traitement de linformation.

Architecture de Von Newman


Larchitecture de von Neumann dcompose lordinateur en 4 parties distinctes 1.
Lunit de contrle ou unit de commande, charge du squenage des oprations ; 2.
Lunit de traitement : son rle est deffectuer les oprations de base ; 3. La
mmoire qui contient la fois les donnes et le programme qui indique lunit de
contrle quels calculs faire sur ces donnes. La mmoire se divise entre mmoire
volatile (programmes et donnes en cours de fonctionnement) et mmoire permanente
(programmes et donnes de base de la machine). 4. Les dispositifs dentre-sortie,
qui permettent de communiquer avec le monde extrieur.

Architecture de Von Newmann

Les bus
Un bus est un ensemble de fils qui assure la transmission du mme type
dinformation et qui assure la communication entre les divers composants. bus de
donnes : 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 slection des informations traiter dans un espace mmoire (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 donnes et des adresses.
Lunit de commande (1)
Lunit de commande squence le droulement des instructions. Elle effectue la
recherche en mmoire de l'instruction, le dcodage, l'excution et la prparation
de l'instruction suivante. Compteur ordinal ou Compteur programme (IP) : contient
l@ de la prochaine instruction excuter. Au chargement du programme, contient
l@de la 1re instruction. Il est modifi :
soit par incrmentation automatique dans le cas o les adresses des instructions
se suivent. soit par chargement de l'adresse de branchement dans le cas de sauts
programms.

L'unit de commande (2)


Phase de recherche de linstruction
programme en mmoire centrale lancement du programme Compteur Ordinal @ 1re
instruction (OS) le squenceur va gnrer les microcommandes pour placer
linstruction dans le Registre dInstruction microcommande pour incrmenter le
compteur ordinal Compteur Ordinal @ prochaine instruction

Registre d'instruction et dcodeur d'instruction : chacune des instructions


excuter est range dans le registre instruction puis est dcode par le dcodeur
dinstruction. Squenceur : organise lexcution des instructions au rythme dune
horloge. Il labore les signaux de synchronisation internes ou externes (bus des
commandes) du microprocesseur

Phase de traitement de linstruction


Le dcodeur analyse la zone opration de linstruction Le squenceur excute
les microcommandes correspondantes Exemple : addition MOV AL,[0200] ADD AL,[0300]
MOV [0400],AL

Lunit de commande (3)


Microcommandes

Unit de traitement
UAL : circuit complexe qui assure les fonctions logiques (AND,OR,CMP) ou
arithmtiques (ADD,SUB,INC)

Registre dtat Squenceur

Compteur ordinal

Registre dtat : Indicateur (gnralement compos de 8 bits) dont ltat dpend


du rsultat de la dernire opration effectue. Indicateurs dtat ou flags. Les
accumulateurs : registres de travail qui servent stocker les oprandes et les
rsultats la fin de lopration.

Dcodeur
Instruction

Code opration

Zone adresse

Registre dinstruction
Lunit arithmtique et logique (1)
Compose de circuits logiques Ralise des oprations
arithmtiques: + - * ~% logiques ~ + . comparaison dcalage

Lunit arithmtique et logique (2)


UAL et registre dtat
Exemple: Overflow, Zro, Carry CMP AL, 0
Instruction de comparaison en assembleur 8086

Les oprations effectuer et les oprandes lui sont indiques par lUnit de
commande.
Accumulateur

Si AL = 0 alors ZF=1 sinon ZF=0 finsi

Flag ZF du registre dtat


Oprande1 Commande (Opration raliser) Oprande2

Rsultat

NB: Une UAL fait un nombre limit doprations fonctions manquantes programmer

Registre dtat (1)


Les instructions de branchement conditionnels utilisent les indicateurs : bits
spciaux positionns par l'UAL aprs certaines oprations. ZF : Zero Flag. mis
1 lorsque le rsultat de la dernire opration est zro. Sinon, ZF est positionn
0. CF : Carry Flag. Indicateur de report (retenue). Il est positionn par les
instructions ADD, SUB et CMP (entiers naturels).
CF = 1 s'il y a une retenue

Registre dtat (2)


SF : Sign Flag. Positionn 1 si le bit de poids fort du rsultat d'une addition
ou soustraction est 1; sinon SF=0. Utile pour la manipulation des entiers relatifs,
le bit de poids fort donne le signe du rsultat. OF : Overflow Flag (Indicateur
de dbordement). OF=1 si le rsultat 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 ngatif). Exemple : CMP = SUB, mais ne stocke
pas le rsultat de la soustraction (positionner les indicateurs)
CMP AX, 5 : ZF = 1 si AX contient 5, et ZF = 0 si AX 5.
Les accumulateurs
AX

Architecture de Von Newman


AH BH CH DH AL BL CL DL

4 accumulateurs 16 bits
AX : Accumulateur utilis pour les oprations arithmtiques. BX : Base pour les
adressages CX : Compteur pour le comptage DX : Data pour les donnes

Registres accessibles sous forme de 2 info 8 bits


AX se dcompose en AH (poids fort) et AL (poids faible de AX)

La mmoire
Une mmoire peut tre reprsente comme une armoire de rangement constitue de
diffrents tiroirs. Chaque tiroir reprsente alors une case mmoire qui peut
contenir un seul lment : des donnes. Une adresse identifie la case mmoire et
chaque donne est accessible grce son adresse.
Adresse Case mmoire
5=101 4=100 3=011 2=010 1=001 0=000 00000000 00000000 00000000 11101110 10001110
00001000

La mmoire
Stocke des informations utilises par le processeur Juxtaposition de cellules
(la plus petite quantit de mmoire adressable). Chaque cellule est numrote
(adresse) Gnralement les mmoires sont adressables par octets Taille d'une
cellule octet : 8 bits (byte) word : 16 bits, Double word : 32 bits, Quad word
64 bits : en fonction de machines (16 ou 32 bits) Notation : Si M dsigne une
cellule mmoire [M] reprsente son contenu
Organisation dune mmoire
Mmoire de 96 bits :
Organisation en cellules lmentaires (8bits), 12 bits ou 16 bits :
AdressesAdresses
0:0 0:1 0:2 0:3 0:4 0:5 1:0 1:1 1:2 1:3 1:4 1:5 0 1 2 3 4 5 6 7 8 9 10 11

Oprations effectues sur les mmoires


Lecture (adresse) : lit lemplacement donn par adresse et ne modifie pas
lemplacement mmoire. criture (valeur, adresse) : met lemplacement adresse
la valeur place en paramtre

8 bits

12 bits

16 bits

Exemple daccs mmoire

Caractristiques des mmoires


Capacit : nombre total de bits que contient la mmoire. Sexprime souvent en
octet. Format des donnes : nombre de bits que lon peut mmoriser par case
mmoire. Volatilit laps de temps durant lequel elle maintient les informations
Alimentation des mmoires : l'information stocke est volatile si elle risque
d'tre altre par un dfaut d'alimentation lectrique et non volatile dans le cas
contraire. mmoire de travail de l'ordinateur, mmoire sur support magntique
Temps d'accs temps pour accder l'information une fois que linstruction a t
lance. de l'ordre de la ns pour les mmoires actuelles et de la ms pour les
supports magntiques Type d'accs accs direct l'information, accs aux mots-
mmoire par leur adresse. accs squentiel Temps de cycle : intervalle minimum
entre 2 demandes successives de lecture/criture. Dbit : nombre maximum
dinformations lues ou crites par seconde

``Ajouter 5 au contenu de la case mmoire d'adresse 180'' : 1. Le processeur lit et


dcode l'instruction; 2. le processeur demande la mmoire la contenu de
l'emplacement 180; 3. la valeur lue est range dans l'accumulateur; 4. l'unit de
traitement (UAL) ajoute 5 au contenu de l'accumulateur; 5. le contenu de
l'accumulateur est crit en mmoire l'adresse 180. C'est l'unit de commande qui
dclenche chacune de ces actions dans l'ordre. L'addition est effectue par l'UAL.


Hirarchie des mmoires

Hirarchie des mmoires


Machine idale
taille mmoire illimite temps d'attente nul

Problme de cot => Hirarchie de mmoires Le processeur va chercher dans les


diffrentes mmoires Loptimisation est faite par le gestionnaire de mmoire

Registres : situs au niveau du processeur, stockage des oprandes et des rsultats


Mmoire cache : mmoire rapide destine acclrer laccs de la mmoire
principale. Mmoire principale : contient les programmes (instructions et donnes)
Mmoire dappui : mmoire intermdiaire entre mmoire principale et mmoire de
masse, mmoire de cache. Mmoire de masse : stockage permanent, sauvegarde. Disques
durs, CDROM, DVD

Caractristique des mmoires


mmoire vive: RAM
Mmoire volatile Cycle de lecture/criture (@ bus d'adresse, V bus de donne,
CS, R/W) Mmoire vive statique SRAM Mmoire vive dynamique DRAM Mmoire vive
dynamique Synchrone SDRAM

La mmoire virtuelle
Utilisation de la mmoire secondaire comme si ctait de la mmoire centrale
Disponible partir des 80386 et 68030 La gestion se fait au niveau du systme
dexploitation Systme de gestion de mmoire virtuelle trs sophistiqu
Pagination :
mono dimensionnelle mappage de lespace dadressage sur la mmoire physique.
Les zones mmoires lues sur la mmoire secondaire sont les pages

mmoire morte: ROM, PROM, EPROM, EEPROM


A lecture seule, Conserve l'information ROM : information stocke de
manire dfinitive, PROM : Programmable par l'utilisateur EPROM -EEPROM :
Programmable + effacement par UV ou lectriquement

Segmentation :
possibilit davoir plusieurs espaces dadressage virtuels chaque espace
est indpendant : les segments les segments sont de taille variable (limits 64k)
Sur les 80X86 la segmentation t utilise pour rsoudre le problme des adresses
sur 20 bits
La pagination
Sparation entre espace dadressage et emplacement mmoire Une page est une
zone de mmoire de taille fixe (4k) Dplacement des pages de la mmoire
secondaire vers la mmoire centrale -> Pagination La Pagination
se fait au fur et mesure des besoins Pb du dfaut de page La pagination est
transparente lutilisateur

Traduction adresse virtuelle adresse physique

Ralisation de la pagination
la charge du systme dexploitation

BUS DE DONNEES
Microprocesseur
Registre de donnes Bus interne de donnes

Mmoires rapides : registres


Mmoire locale et prive du processeur Information temporaire Capacit
limite (1 128 bits)

R0

Rn R E G I S T R E D I N D E X

Registre auxiliaire

Registre dinstruction Code Op. Adresse

SP

PC

UAL
Registre dtat Dcodeur

A C C U M U L A T E U R

Bus interne dadresses Signaux internes de commande

BLOC LOGIQUE DE COMMANDE


Registre dadresses

Horloge

Bus de commande BUS DADRESSES


Registres
Registres de travail :
AX : Accumulateur utilis pour les oprations arithmtiques. BX : Base pour
les adressages CX : Compteur pour le comptage DX : Data pour les donnes

Registres

Registres d'offset :
SI : Source Index utilis lors d'oprations sur chanes de caractres, associ
DS. DI : Destination Index utilis lors d'oprations sur les chanes de
caractres, associ DS. si utilis comme index et ES lors de manipulation de
chanes. IP : Instruction Pointer associ CS, il indique la prochaine
instruction excuter, et ne peut tre modifi. BP : Base Pointer associ SS
pour accder aux donnes de la pile lors d'appels d'un sous-programme. SP : Stack
Pointer associ SS, il indique l'adresse du dernier lment de la pile.

Registres de segment :
CS : Code Segment il contient l'adresse du segment de la mmoire de
programme DS : Data Segment il contient l'adresse du segment de mmoire de donnes
SS : Stack Segment il contient l'adresse du segment de mmoire de la pile ES :
Extra Segment segment supplmentaire pour adresser des donnes.

Mmoire segmente
Les instructions manipulent des adresses rduites, qui dsignent des objets
lintrieur dun segment. Dans le cas du 8086, on a plusieurs segments qui servent
stocker le code du programme, ses donnes statiques, les donnes de la pile, etc.

Organisation de la mmoire centrale


Ncessaire d'implanter dans un microprocesseur
espace pour le systme espace pour l'utilisateur espace pour les entres
/sorties

Taille suffisante pour ranger les programmes Sparation entre les diffrents
espaces (utilisateur, systme)
Modle dorganisation de la mmoire
Modle mmoire linaire (1 niveau dadressage)
valable pour OS qui ncessitent une vitesse performante protection moindre
limit dans le cas des applications de plus de 4Go de mmoire

Machine 1 et 2 niveaux dadressages


Exemple
DATA SEGMENT A DW 5 B DW -1 DATA ENDS CODE MOV MOV CODE SEGMENT AX,A AX,B ENDS

Modle de mmoire segmente (2 niveaux dadressage)


utilise les registres de segment et quatre niveaux de protection les OS peuvent
se protger des applications le processeur gre la mmoire et vrifie les
protections

Le code nest pas li ladresse Le code nest pas li ladresse dimplantation


des donnes dans la dimplantation des donnes dans la mmoire physique mmoire
physique

Le code est li ladresse Le code est li ladresse dimplantation des donnes


dimplantation des donnes dans la mmoire physique dans la mmoire physique

La pile
Structure de rangement de donnes
zone mmoire spcialise mmorise les adresses dappel et retour de sous
programmes fonctionnement LIFO (Last In, First Out)

La pile
Le registre SS (Stack Segment) = registre segment qui contient l'adresse du
segment de pile courant (16 bits de poids fort de l'adresse). Il est initialis au
dbut du programme et reste fix par la suite. Le registre SP (Stack Pointer)
pointe sur le dernier bloc occup de la pile
Push
SP Pointeur de sommet Espace Rserv Pour la pile BP Pointeur de base Espace occup
par la pile

Comment y accder :
adresse du dernier lment pos : SS:SP empiler : PUSH Reg dpiler : POP Reg

Pop
adresses hautes de la mmoire

La pile augmente vers les adresses faibles


PUSH : SP SP- 2, POP : SP SP+ 2

SP BP

adresses basses de la mmoire


Pile : exemple dutilisation (1)
PUSH registre
empile le contenu du registre sur la pile.

Pile : exemple dutilisation (2)


La pile est souvent utilise pour sauvegarder temporairement le contenu des
registres : ;AX et BX contiennent des donnes a conserver PUSH AX PUSH BX MOV BX,
10 ; on met la valeur 10 dans BX ADD AX, BX ; AX AX+BX POP BX ; rcupre l'ancien
BX POP AX ; et l'ancien AX La pile peut conserver plusieurs valeurs : la valeur
dpile par POP est la dernire valeur empile : pile LIFO (Last In First Out,
Premier Entr Dernier Sorti).

POP registre
retire la valeur en haut de la pile et la place dans le registres spcifi.

Exemple : transfert de AX vers BX en passant par la pile. PUSH AX ; on met AX sur


la pile (SPSP-2) POP BX ; met la valeur dpile dans BX (SPSP+2)

Note : quivalent MOV AX,BX

Pile : registres SP

Instructions arithmtiques et logiques


Oprations entre une donne et un accumulateur. Le rsultat peut tre plac dans
l'accumulateur. La donne peut tre une constante ou une valeur contenue dans un
emplacement mmoire.
Emplacement libre

16 bits

Adresses Croissantes

SP-2 SP BP
PUSH POP

Exemples : addition : AX AX + donne; soustraction : AX AX - donne;


incrmentation de AX : AX AX + 1; dcrmentation : AX AX - 1; dcalages
gauche et droite;
Les branchements
Le registre IP du processeur conserve l'adresse de la prochaine instruction
excuter. Le processeur effectue les actions suivantes pour chaque instruction :
lire et dcoder l'instruction l'adresse IP; IP IP + taille de l'instruction;
excuter l'instruction.

LUC: Instructions
Une instruction Opration lmentaire Information sur :
ce que linstruction fait (add, sub, mov ..) sur quelles donnes (AL, AX,
10h ...)

Excution Squentielle du code Pour modifier le droulement normal d'un


programme, on peut excuter un branchement.
JMP tiquette Modification de la valeur de IP et branchement de IP ladresse
indique par tiquette

les instructions sont spcifiques un microprocesseur


680XX, 80X86, SPARC ... Exemple
Pentium 220 instructions. Techno MMX +57 instructions

Instructions
Codage dune instruction

Instructions
Les instructions et leurs oprandes (paramtres) sont stocks en mmoire
principale

Zone Opration

Oprande

La taille totale d'une instruction (nombre de bits ncessaires pour la


reprsenter en mmoire) dpend du type d'instruction et aussi du type d'oprande.

Zone Opration
Code Opration -> Codage unique jeu dinstruction limit

Chaque instruction est toujours code sur un nombre entier d'octets, afin de
faciliter son dcodage par le processeur. Une instruction est compose de deux
champs :
le code opration, qui indique au processeur quelle instruction raliser; le
champ oprande qui contient la donne, ou la rfrence une donne en mmoire (son
adresse).

Oprande
adresse(s) de la donne Adressage implicite utilisation dun accumulateur
Exemple : B0 01 MOV AL , 01
Plan
Introduction

Dfinitions
Langage Haut niveau
(for, if, then, write, etc)

Diffrentes vues d un ordinateur volution et performance des machines


Reprsentation de linformation Algbre de Boole Circuits
squentiels/Automates Architecture type Von Neumann Couche dassemblage

Compilation
Langage volu langage machine

Assemblage
Langage bas niveau langage machine

Langage assembleur
(MOV, CMP, JMP, etc)

Modes dadressage Langage Procdures

Langage machine
(0010 0011 1100 etc)

Dfinitions
Langage machine : ordres (en binaire) comprhensible par un processeur donn.
Excutable : suite dinstruction en langage machine Assembleur : mnmoniques
associes au langage machine (JMP,MOV,CMP)

Exemple de programme
Programme en langage machine implant ladresse mmoire 0100H A1 01 10 03 06 01
12 A3 01 14 Ce programme additionne le contenu de deux cases mmoire et range le
rsultat dans une troisime
Adresse Contenu MP Langage Symbolique
MOV AX, [0110] ADD AX, [0112] MOV [0114],AX

Explication

Exemple.asm

Exemple.obj

Exemple.exe

0100 0103

A1 01 10 03 06 01 12 A3 01 14

Assemblage : MASM Exemple.asm Edition de liens : LINK Exemple.obj

0107

;Charger AX avec le contenu de 0110. ;Ajouter le contenu de 0112 AX (rsultat


dans AX). ;Ranger AX en 0114.
Processeurs 80x86
Micro-processeurs 80x86 quipent les PC et compatibles
Premiers PC (dbut 80) = 8086, micro-processeur 16 bits Puis 80286, 80386,
80486, Pentium Augmentation de la frquence dhorloge, de la largeur des bus
dadresses et de donnes Ajout de nouvelles instructions et de registres

Caractristiques du 8086
Bus de donnes : 16 bits Bus dadresse : 20 bits Registres : 16 bits 4
accumulateurs 16 bits
Accumulateur (AX) Base (BX) Counter (CX) Accumulateur auxiliaire (DX)

Compatibilit ascendante
Un programme crit dans le langage machine du 286 peut sexcuter sur un 386
(linverse est faux)

Registres accessibles sous forme de 2 info 8 bits


AX se dcompose en AH (poids fort) et AL (poids faible de AX)

Caractristiques du 8086
4 accumulateurs 16 bits
AX, BX, CX ,DX

Segmentation de la mmoire
Largeur du bus dadresse = 20 bits
Possibilit dadressage mmoire = 220 = 1 Mo

Le pointeur dinstruction fait 16 bits


Possibilit dadresser 216 = 64 Ko (ce qui ne couvre pas la mmoire)

Registres dindex :
Pointeur dinstruction (IP) Index source ou destination(SI, DI) Pointeur de Pile ou
de base (SP, BP)

On utilise deux registres pour indiquer une adresse au processeur


Chaque segment dbute l'endroit spcifi par un registre spcial nomm registre
segment. Le dplacement permet de trouver une information l'intrieur du segment.
CS:IP : lecture du code dune instruction (CS registre segment et IP dplacement)
DS : accs aux donnes (MOV AX,[1045] = lecture du mot mmoire dadresse DS:1045H)

3+1 registres segment :


Segment de code (CS) : contient le prog en cours dexcution Segment data (DS) :
contient les donnes du programme Segment stack (SS) : contient des donnes
particulires Extra Segment (ES)
Segmentation de la mmoire
Registres de dplacement = slectionner une information dans un segment.
Dans le segment de code CS : le compteur de programme IP joue ce rle. CS:IP permet
d'accder une information dans le segment de code. Dans les segments de DS : les
deux index SI ou DI jouent ce rle. Le dplacement peut tre aussi une constante.
DS:SI ou DS:DI permettent d'accder une information dans le segment de donnes.
Dans le segment de pile SS le registre SP (stack pointer) et BP (base pointer)
jouent ce rle. SS:SP ou SS:BP permettent d'accder une information dans le
segment de pile.

Jeu dinstruction (1)


Instruction daffectation (Transfert CPU Mmoire) Instructions arithmtiques
(Opration Acc / Donne) : MOV

: INC (incrmentation) : DEC (dcrementation) : ADD (addition) : SUB (soustraction)


: CMP (soustraction sans sauvegarde) : NEG : NOT, OR, XOR : AND, TEST (= AND sans
sauvegarde) : SHL (SHR), SAL (SAR) : ROL (ROR), RCL (RCR)

Instructions logiques

Jeu dinstruction (2)

Branchements
Le processeur excute une instruction en mmoire puis passe celle qui suit en
mmoire : squentiel
Besoin de faire rpter au processeur une suite dinstructions Besoin de dclencher
une action qui dpend dun test

Branchement Branchements conditionnels

: JMP : JE/ JZ (JNE/ JNZ) : Jump if zero : JO (JNO) : Jump if overflow : JS (JNS) :
Jump if sign

Comparaison de valeurs CMP AX, BX suivi d un test : (entiers naturels) JA ( >=


JAE) JB (JBE) (complment 2) JG (JGE) JL (JLE)

Utilisation dune instruction de branchement ou saut


On indique au processeur ladresse de la prochaine instruction

On distingue deux catgories de branchements


le saut est toujours effectu (sauts inconditionnels) il est effectu seulement si
une condition est vrifie (sauts conditionnels).

AX > BX ? AX < BX ?
Rappel sur le registre IP
Le registre IP du processeur conserve l'adresse de la prochaine instruction
excuter Le processeur effectue les actions suivantes pour chaque instruction :
lire et dcoder l'instruction l'adresse IP; IP IP + taille de l'instruction;
excuter l'instruction.

Sauts inconditionnels
Principale instruction de saut inconditionnel = JMP L'oprande de JMP est un
dplacement, c'est dire une valeur qui va tre ajoute IP. L'action effectue
par JMP est :
IP = IP + dplacement

Pour modifier le droulement normal d'un programme


l'excution de l'instruction doit modifier la valeur de IP c'est ce que font
les instructions de branchement.

Le dplacement est un entier relatif sur code 8 bits. La valeur du dplacement


est :
dplacement = adr. instruction vise - adr. instruction suivante

Sauts inconditionnels : exemple

Sauts conditionnels : exemples

Exemple : le programme suivant crit indfiniment la valeur 0 l'adresse 0140H. La


premire instruction est implante l'adresse 100H.
Adresse Contenu MP Langage Symbolique Explication

JE Jump if Equal (ou JZ)


saut si ZF = 1;

JA Jump if Above
saut si CF=0 et ZF=0;

JNE Jump if Not Equal (ou JNZ)


saut si ZF = 0;

JBE Jump if Below or Equal


saut si CF=1 ou ZF=1.

JG Jump if Greater
0100 0103 0106 0107 B8 00 00 A3 01 40 EB FC MOV AX, 0 MOV [140], AX met AX a zro
crit l'adresse 140

JB Jump if Below
saut si CF=1.

saut si ZF = 0 et SF = OF;

JLE Jump if Lower or Equal


saut si ZF=1 ou SF = OF;

JO (JNO) Jump if Overflow


saut si OF=1

JMP 0103 branche en 103 xxx -> instruction jamais excute


Le dplacement est ici gal FCH, c'est dire -4 (=103H-107H).

JS (JNS) Jump if Sign


saut si SF=1;
Dcalage et rotations

Dcalage
SHL registre, 1 (Shift Left)

Dcalage vers la gauche ou vers la droite les bits de l'accumulateur.


oprations utilises pour dcoder bit bit des donnes ou pour diviser ou
multiplier rapidement par une puissance de 2. En effet : dcaler AX de n bits vers
la gauche revient le multiplier par 2n De mme, un dcalage vers la droite
revient diviser par 2n. Dcale les bits du registre d'une position vers la
gauche. Le bit de gauche est transfr dans l'indicateur CF. Les bits introduits
droite sont zro.

Ces oprations peuvent oprer sur les registres AX ou BX (16 bits) ou sur les
registres de 8 bits AH, AL, BH et BL.
SHL, SHR, ROL, ROR, RCL, RCR

SHR registre, 1 (Shift Right)


Comme SHL mais vers la droite. Le bit de droite est transfr dans CF. SHL et SHR
peuvent tre utilis pour multiplier/diviser des entiers naturels (et non des
relatifs car le bit de signe est perdu)

Rotations
ROL registre, 1 (Rotate Left)
Rotation vers la gauche : le bit de poids fort passe droite, et est aussi copi
dans CF. Les autres bits sont dcals d'une position.

Dcalage et rotations
RCL registre, 1 (Rotate Carry Left)
Rotation vers la gauche en passant par l'indicateur CF. CF prend la place du bit de
poids faible; le bit de poids fort part dans CF.

ROR registre, 1 (Rotate Right)


Comme ROL, mais droite.

RCR registre, 1 (Rotate Carry Right)


Comme RCL, mais vers la droite.

RCL et RCR sont utiles pour lire bit bit le contenu d'un registre7.
Oprations logiques

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

3 oprateurs logiques : ET, OU et OU exclusif.


jamais propagation de retenue lors de ces oprations (chaque bit du rsultat est
calcul indpendamment des autres) OR est souvent utilis pour forcer certains bits
1. Par exemple aprs OR AX, FF00, l'octet de poids fort de AX vaut FF, tandis que
l'octet de poids faible est inchang.

Oprations sont de la forme : OR destination, source


destination : registre ou emplacement mmoire (adresse) o doit tre plac le
rsultat. source : constante (adressage immdiat), registre (adressage implicite),
ou adresse (adressage direct).

AND destination, source (ET : 1 et 1 = 1 )


AND est souvent utilis pour forcer certains bits 0. Aprs AND AX, FF00, l'octet
de poids faible de AX vaut 00, tandis que l'octet de poids fort est inchang.

XOR destination, source (OU EXCLUSIF : 1 xor 1 = 0) OR AX, FF00 ; AX <- AX ou FFOO
OR AX, BX ; AX <- AX ou BX OR AX, [1492] ; AX <- AX ou [1492]
XOR est souvent utilis pour inverser certains bits. Aprs XOR AX, FFFF, tous les
bits de AX sont inverss

Modes dadressage
Permet la manipulation des diffrents structures de donnes Permet laccs des
donnes en mmoire.
Des variables par leur valeur Accs aux donnes via des pointeurs Des
lments de tableaux Accs aux lments de structures

Modes dAdressage
Les oprandes peuvent tre dans :
des registres une zone mmoire: on utilise alors ladresse effective qui peut
tre une combinaison de 3 lments
la base le Dplacement lIndex

Cela donne des adressages


IMPLICITE IMMEDIAT DIRECT INDIRECT BASE INDEXE

Ces donnes sont les oprandes pour des instructions


Arithmtique Dplacement
Adressage implicite ou par registre
Pas daccs mmoire pour les oprandes L'instruction contient seulement le code
opration, sur 1 ou 2 octets. L'instruction porte sur des registres ou spcifie
une opration sans oprande Exemple : INC AX

Adressage immdiat
Adressage dans lequel la valeur de loprande figure directement dans
linstruction sans avoir besoin de faire un nouvel accs mmoire.
Code Registre Valeur

Exemple : MOV AL, 10 ; Met la valeur 10 dans AL ADD AX, 5 ; Additionne 5 la


valeur contenue dans AL

Adressage direct
Un des oprandes est lemplacement mmoire dont ladresse figure dans
linstruction. Une fois linstruction lue, il faut aller faire un accs mmoire
pour obtenir loprande dsir.

Adressage indirect
Ladresse de la variable est contenue dans un registre de base ou dindex : 2 accs
mmoires.
Exemple :
MOV BX, offset VAR MOV AX,[BX] ; Met dans AX la valeur contenue dans lemplacement
mmoire dont ladresse est spcifie dans lemplacement mmoire dadresse BX.

Exemple :

instruction instruction @oprande Mmoire oprande oprande

Registre

Registre @oprande Mmoire oprande

MOV AX,[150]; Met la valeur contenue dans lemplacement dadresse 150 dans AX

NB : Le type de la donne doit tre accord avec le registre utilis


Adressage bas
Similaire ladressage indirect par registre sauf quun dplacement est ajout
la base.
adresse effective = adresse base + dplacement

Adressage index
On utilise un registre dindex SI ou DI plus un dplacement Ladressage est
not par des crochets Utile pour le parcours de tableaux
instruction @mmoire Mmoire Mmoire @T i oprande Registre dindex

instruction

Registre

Dplacement

Registre @base

Exemple :

MOV BX, OFFSET DVAR MOV AX,[BX+4] ADD AX,[BP+4]

Exemple : MOV SI,2 MOV AX, T[SI]

Dplacement

T[i]

Modes dadressage : rsum


Par registre ou implicite
Add AX,BX

Code opration : assembleur


Symbole MOV AX, valeur MOV AX, [ adr ] MOV [ adr ], AX ADD AX, valeur ADD AX, [ adr
] SUB AX, valeur SUB AX, [ adr ] SHR AX, 1 Code Op. B8 A1 A3 05 03 06 2D 2B 06 D1
E8 Octets 3 3 3 3 4 3 4 2 AX valeur AX contenu de l'adresse adr. range AX
l'adresse adr. AX AX + valeur AX AX + contenu de adr. AX AX - valeur AX AX
- contenu de adr. dcale AX droite.

Immdiat
Add AX,valeur

Direct
Add AX,[adresse]

Indirect
Mov BX,adresse Add AX,[BX]

Index
Add,[adresse+index] On utilise des programmes spciaux, appels assembleurs, pour
traduire automatiquement le langage symbolique en code machine.
Variables

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE
SEGMENT 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

DB : Variable 8 bits DW : Variable 16 bits EQU : Constante BYTE : Taille d'une


variable mmoire 8 bits WORD : Taille d'une variable mmoire 16 bits Etiquette :
adresse dune mthode/ branchement

Structure du programme
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE
SEGMENT 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
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS

Dclaration du segment de pile

Dclaration du segment de donnes

CODE SEGMENT 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
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE
SEGMENT 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
PILE SEGMENT STACK DW 256 DUP(?) Base EQU 0 PILE ENDS DATA SEGMENT DATA ENDS CODE
SEGMENT 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

Etiquette du programme principal

Dclaration du segment de code Avec initialisation des registres de segment

Indication de ltiquette o commence le programme principal

Initialisation de variables
Assume CS:CODE,DS:DATA DATA SEGMENT N1 DW 25H N2 DW 4 N3 DW ? TAB1 DW 2,3,4,3,2,5,4

Mon premier programme


Assume CS:Code,DS:Data Data SEGMENT N1 DW 25H N2 DW 4 N3 DW ? Data ENDS Code
SEGMENT main PROC MOV AX,Data MOV DS,AX MOV AX,N1 MOV CX,N2 MOV DX,0 boucle: ADD
DX,AX LOOP boucle MOV N3,DX main ENDP Code ENDS END main

TAB2 DW 2 DUP(?) Chaine DB Hello DATA ENDS

N1 est un mot initialis 25H N2 est un mot initialis 4 N3 est un mot non
initialis TAB1 est un tableau de mots initialis avec TAB1[0]=2,TAB2[1]=3 TAB2
est un tableau de mots non initialiss Chaine est une chane de caractre

Initialisation du segment de donnes

LOOP : boucle quivalent DEC CX, JNZ boucle


Appels systmes DOS
Affichage de caractre
MOV DL,A MOV AH,02 INT 21H

Procdures (1)
Dclaration dune procdure : Procedure PROC [NEAR/FAR] Procedure ENDP
NEAR : procdure et programme principal sont dans le mme segment de code FAR :
ils sont dans 2 segments diffrents

Saisie de caractre
MOV AH,01 INT 21H ; rsultat dans AL sous forme de car ASCII

Affichage chane de caractre


Chaine DB Hello$ ; dfinie dans le segment de donnes MOV AH,09H MOV DX,Offset
Chaine INT 21H

Appel de la procdure dans le programme CALL Procedure ; IP va pointer sur


ladresse mmoire correspondant Procdure

Procdures (2)
Comment lunit de traitement arrive-t-elle retourner au programme principal la
fin de la procdure ? Au moment de lappel de la fonction, ladresse de
linstruction suivante est sauvegarde dans la pile :
CALL = sauvegarde de IP

Passage de paramtres
2 mthodes de passage de paramtres :
par registre par la pile

Passage de paramtres par registre :


les paramtres dentre de la procdure sont mis dans des registres avant lappel
de la procdure les paramtres de sortie sont aussi rangs dans des registres
avantage = rapidit, simplicit de gestion inconvnients = peu de registres

A la fin de la procdure, l Unit de Traitement rcupre les valeurs sauvegardes


pour retourner au programme principal
RET = dpilement de IP

Si la procdure est de type FAR, CS est aussi sauvegard sur la pile lors du
CALL, RET dpile IP puis CS
Passage par registre
;programme principal ... Mov AX, N1 Mov BX, N2 Call Near Moyenne Mov Res, AX ...
;Procdure Moyenne : Add AX, BX SHR AX, 1 RET

Passage par la pile (1)


Les paramtres dentre sont empils avant lappel de la procdure Les
paramtres de sortie sont dpils par le programme principal
avantage = portabilit inconvnients = rcupration des paramtres plus
lourde

;Procdure
Moyenne PROC NEAR PUSH BP Mov BP, SP Mov AX, [BP+4] Add AX, [BP+6] SHR AX, 1 Mov
[BP+ 6], AX POP BP Ret 2 PROC ENDP

;programme ... PUSH N1 PUSH N2 Call Near Moyenne POP Res ...

Passage par la pile (2)


PUSH N1 PUSH N2 Call Moyenne ; empilement de IP, @retour POP AX ;on rcupre N1
dans AX
-2 BP,SP 0

Passage par la pile (3)


volution de la pile

ancien BP

Moyenne PROC @Retour PUSH BP +2 MOV BP,SP N2 +4 MOV AX,[BP+4] ;on accde N2 Add
AX,[BP+6] ;on accde N1 N1 +6 SHR AX, 1 ;on divise par 2 MOV [BP+6], AX ;on met
AX dans N2 POP BP ;restauration de BP la fin de la procdure RET 2 ;on dpile
IP+1 paramtre (N2) PROC ENDP

A quoi sert BP ?
BP = rfrence de la pile au dbut de la procdure permet davoir une rfrence
fixe pour rcuprer les paramtres ici : [BP+ 4] pour N2 et [BP+ 6] pour N1
Passage par la pile (4)
Sauvegarde du rsultat et nettoyage de la pile

Procdure propre
Sauvegarder les registres dans la procdure de faon ne pas les modifier pour
le programme principal.
Exemple :
Moyenne PROC NEAR PUSH BP Mov BP, SP PUSH AX Mov AX, [BP+4] Add AX, [BP+6] SHR AX,
1 Mov [BP+ 6], AX POP AX POP BP Ret 2 PROC ENDP

; Sauvegarde de AX

; Restauration de AX

Rappels : Registres de segment

Rappels : Registres de travail

Nom

Taille

Fonction
Mmorise le segment o se trouve le code en cours d'excution (ne peut pas tre
modifi par le programme) Mmorise le segment o se trouve les donnes du
programme. Mmorise le segment o se trouve la pile de donnes du programme Ce
segment peut tre utilis pour faire ce que l'on veut. Par exemple, il peut pointer
sur la mmoire cran.

Nom

Taille

Fonction
On l'utilise gnralement pour des oprations arithmtiques, telles que MUL
(multiplication) ou DIV (division). Ax peut se diviser en deux sous-registres de 8
bits. Ah reprsente les 8 premiers bits, et Al les 8 derniers. Bx est utilis lors
de l'accs une zone mmoire sous forme de tableau, il l'indice de ce tableau. Par
exemple, Mov Dx, Es:[Bx]. Bx peut se diviser en deux sous-registres de 8 bits. Bh
reprsente les 8 premiers bits, et Bl les 8 derniers.

Cs (Code Segment) 16 bits

Ax (Accumulateur) 16 bits

Ds (Data Segment) 16 bits

Ss (Stack Segment)16 bits

Bx (Base) reprsente on crira

16 bits

Es (Extra Segment) 16 bits


Rappels : Registres de travail

Rappels : Registres d'offset


( combiner avec une adresse de segment)

Nom

Taille

Fonction Nom Taille


16 bits

Fonction
Lors d'oprations sur les chanes de caractres, comme MOVSB ou Ds:[Si] dsigne la
variable 'source'. Lors d'oprations sur les chanes de caractres, comme MOVSB ou
Es:[Di] dsigne la variable 'destination'. Bp a un rle proche de celui de Bx, mais
il est gnralement utilis avec le segment de pile (Ss:[Bp]).

Cx (Compteur)

16 bits

Lors de l'appel d'instructions comme REP (rpter) ou LOOP (boucle), c'est le


registre Cx qui est lu Cx peut se diviser en deux sousregistres de 8 bits. Ch
reprsente les premiers bits, et Cl les 8 derniers. Ce registre est gnralement
utilis pour stocker des donnes provisoires. Dx peut se diviser en deux sous-
registres de 8 bits. Dh reprsente les 8 premiers bits, et D les 8 derniers.

SI (Source Index) SCASB, Di (Dest Index) SCASB,

16 bits

Dx (Donnes)

16 bits

Bp (Base Pointeur) 16 bits

Rappels : Registres d'offset

( combiner avec une adresse de segment)

Annexes

Nom

Taille

Fonction
Cs:[Ip] indique la prochaine instruction excuter. Tout comme Cs, Ip ne peut tre
manipul par le programme excut. Ss:[Sp] indique le dernier lment de la pile.
Chaque opration PUSH (empiler) ou POP (dpiler) modifie le registre Sp.

IP (Instruction Point)16 bits

SP (Stack Pointeur) 16 bits


La mmoire cache
Le prchargeur dinstruction : un petit cache danticipation Un cache externe
rduction des accs la mmoire principale des accs sans tats dattente les
accs mmoires sont encore limits par la vitesse du bus Un cache interne unifi
instructions /donnes Cache sur la puce du processeur Occupation du bus
Comptition interne instructions/donnes Des caches spars pour les donnes et
les instructions

La mmoire centrale
Elle mmorise les programmes utilisateurs, le systme dexploitation Sa taille
les 16,32, 64.. Mega dun PC

La mmoire centrale est situe sur une carte mmoire Elle a une organisation
standard Elle communique avec le processeur (carte mre) via des bus (de donnes,
dadresse) Reprsentation dune variable en mmoire
Sur les intels LITTLE ENDIAN Sur les motorola BIG ENDIAN

Cycle dexcution dune instruction


Lexcution dune instruction se dcompose en trois phases qui sont : 1. la
recherche de linstruction traiter. 2. le dcodage de linstruction. 3.
lexcution de linstruction. Ensuite, on passe linstruction suivante

Exemple de configuration de mmoire


ffffffffh 00900000h Espace tendu (non utilis) : :

Adresse
Mmoire tendue (DRAM) 8192K

Taille

: : 00100000h 000E0000h 000C0000h 000A0000h

ROM Systme Circuit ROM/BIOS RAM vido Mmoire de base Utilisateur (DRAM)

128K 128K 128K

Total = 1024k

: : 00000000h

640K
Mcanisme d'accs la mmoire
L'accs une information -> positionnement de l'adresse sur les n lignes de bus
Adresse D E C O D E U R A D R E S S E Slection
0 1 2

Mmoire

BUS D'ADRESSE N LIGNES

BUS DE DONNEES M LIGNES

2n-1

Exemple:

N = 8, Adresse = 00000010 255 slections possibles, slection = 2 M= 16 -> bus de


donnes reoit des valeurs sur 16 bits

Vous aimerez peut-être aussi