Professional Documents
Culture Documents
• É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
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.
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
X OU Y = X + Y 1 1 1 1 1 1 1 1 0
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.
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
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
A
A A A⊕B
A.B A+B B
B B
XOR
Non ET/ NAND Non OU/ NOR
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
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...
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.
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
• 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
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
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
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 (SPSP-2) POP AX ; et l'ancien AX
POP BX ; met la valeur dépilée dans BX (SPSP+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).
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.
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)
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)
• 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.
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
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.
RCL et RCR sont utiles pour lire bit à bit le contenu d'un registre7.
Opérations logiques Opérations logiques
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
⊕
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]
• 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
main: main:
MOV AX, DATA MOV AX, DATA
MOV DS,AX MOV DS,AX
;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
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
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