Académique Documents
Professionnel Documents
Culture Documents
Architecture D Ordinateur
Architecture D Ordinateur
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
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
Sur la carte mre But dun ordinateur : dfinir et excuter des squences de
calculs
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.
Un Wafer
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
Pentium
Pentium II
Pentium III
Pentium 4
Plan
Introduction
historique
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
(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
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
La notion de mot
un mot = 8, 16, 32 64 bits Intel 80386 et 80486 -> 32 bits Pentium 4 -> 128
bits
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
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 :
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
X + Y X .Y X .Y X + Y
Exemple dapplication des lois de Morgan :
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
S = A.B+A.B S=B
0 0
1 1
Tableau de Karnaugh
Tableau deux variables dentres
Tableau de Karnaugh
1
B A
0 1
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
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
S = A.D+B.C
00 01 11 10
1 1
1 1 1 -
X 0 0 1 1
Y 0 1 0 1
S 0 1 1 0
R 0 0 0 1
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
IV.
Circuits logiques
A A.B B
Circuits combinatoires
Entre f Sortie
Sortie = f(Entre)
1 0 1
0 1
1 0
Exemple de circuit logique (1)
A B C D E F
A B C D E F 1
( A + B ).( A + C )
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
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
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.
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)
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
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.
Unit de traitement
UAL : circuit complexe qui assure les fonctions logiques (AND,OR,CMP) ou
arithmtiques (ADD,SUB,INC)
Compteur ordinal
Dcodeur
Instruction
Code opration
Zone adresse
Registre dinstruction
Lunit arithmtique et logique (1)
Compose de circuits logiques Ralise des oprations
arithmtiques: + - * ~% logiques ~ + . comparaison dcalage
Les oprations effectuer et les oprandes lui sont indiques par lUnit de
commande.
Accumulateur
Rsultat
NB: Une UAL fait un nombre limit doprations fonctions manquantes programmer
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
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
8 bits
12 bits
16 bits
Hirarchie des mmoires
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
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
Ralisation de la pagination
la charge du systme dexploitation
BUS DE DONNEES
Microprocesseur
Registre de donnes Bus interne de donnes
R0
Rn R E G I S T R E D I N D E X
Registre auxiliaire
SP
PC
UAL
Registre dtat Dcodeur
A C C U M U L A T E U R
Horloge
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.
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
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
SP BP
POP registre
retire la valeur en haut de la pile et la place dans le registres spcifi.
Pile : registres SP
16 bits
Adresses Croissantes
SP-2 SP BP
PUSH POP
LUC: Instructions
Une instruction Opration lmentaire Information sur :
ce que linstruction fait (add, sub, mov ..) sur quelles donnes (AL, AX,
10h ...)
Instructions
Codage dune instruction
Instructions
Les instructions et leurs oprandes (paramtres) sont stocks en mmoire
principale
Zone Opration
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)
Compilation
Langage volu langage machine
Assemblage
Langage bas niveau langage machine
Langage assembleur
(MOV, CMP, JMP, etc)
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
0107
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)
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
Registres dindex :
Pointeur dinstruction (IP) Index source ou destination(SI, DI) Pointeur de Pile ou
de base (SP, BP)
Instructions logiques
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
: JMP : JE/ JZ (JNE/ JNZ) : Jump if zero : JO (JNO) : Jump if overflow : JS (JNS) :
Jump if sign
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
JA Jump if Above
saut si CF=0 et ZF=0;
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;
Dcalage
SHL registre, 1 (Shift Left)
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
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.
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)
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
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
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 :
Registre
MOV AX,[150]; Met la valeur contenue dans lemplacement dadresse 150 dans AX
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 :
Dplacement
T[i]
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
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
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
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
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
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
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
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
;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 ...
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
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.
Ax (Accumulateur) 16 bits
16 bits
Nom
Taille
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
16 bits
Dx (Donnes)
16 bits
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.
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
Adresse
Mmoire tendue (DRAM) 8192K
Taille
ROM Systme Circuit ROM/BIOS RAM vido Mmoire de base Utilisateur (DRAM)
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
2n-1
Exemple: