+TD COURS Architecture Des Ordinateurs FSM MEKNES

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 74

Architecture des ordinateurs

Filière: SMI-4 A.U: 2019/2020

Vue logique de la mémoire principale: TD

1. Comment calculer l’adresse physique ?


2. Si l’adresse physique d’une location mémoire est 2020h, proposer au moins deux adresses
logiques différentes ?
3. Dans la plupart des ordinateurs, les adresses des cases mémoires sont exprimées en
hexadécimal.
(a) Combien de cases contient une zone mémoire dont l’adresse de base (début) est
0100h:0000h et son adresse haute (fin) est 0100h : 00FEh ?
(b) Une zone mémoire occupe 256 octets, si son adresse de base est 0100h : 0000h,
quelle est l’adresse haute de cette zone ?
4. Dans un registre 8 bits, on effectue des opérations sur des nombres signés. Donner le
résultat des opérations suivantes et positionner les indicateurs d’état (SF, CF, ZF, OF).
. -a) B0h+ BCh
. -b) F0h+10h
. -c) 50h+60h
. -d) B5h+4Ah
5. Montrer le contenu des locations mémoire après l’exécution de chacune des instructions
suivantes:
-a) MOV BX, 129FH -b) MOV DX, 8C63H
MOV [2019h], BX MOV [1024h], DX
[DS: 2019h]= ... [DS: 1024h]=...
[DS: 2020h]= ... [DS: 1025h]= ...
6. Parmi ces registres, lesquels sont désignés comme généraux, et quels sont les registres
que nous ne pouvons pas diviser en octets:
. -a) CS -b) AX -c) DS -d) SS -e) BX -f) DX -g) CX
. -h) SI -i) DI

1/2
2

7. Donner le registre segment associé à chaque offset suivants:


. -a) BP -b) DI -c) IP -d) SI -e) SP -f) BX.
8. Montrer les contenus de la destination dans chacun des cas suivants:
. -a) MOV [SI], EAX ; Avec SI = 2000h, EAX = 9823F456h
. -b) MOV [BX], ECX ; Avec BX = 348Ch, ECX = 1F23491h
. -c) MOV EBX, [DI] ; Avec DI = 4044h, DS:4044 = (92), DS:4045 = (6D),
. DS:4046 = (A2), DS:4047 = (4C)
9. Si DS=3499H et Offset=3FB9H. Trouver:
. -a) L’adresse logique.
. -b) L’adresse physique de la donnée à rechercher.
. -c) La limite du segment de données.
10. Si CS=3499H et IP=2500H. Trouver:
. -a) L’adresse logique.
. -b) L’adresse physique.
. -c) La limite du code segment.
11. Si une instruction à rechercher est dans l’adresse physique 389F2H et CS=2700H, est
ce que la bande du code segment l’inclut ou pas? Si c’est non, quelle valeur à donner à
CS si IP=1282?
12. Donner l’expression de l’adresse logique de chacune des instructions suivantes:
Instruction Adresse logique Instruction Adresse logique
MOV AX, [2020] MOV AX, [SP]
MOV AX,[BX+9h] MOV AX, [BP][SI]
MOV AX, [BX][SI] MOV AX, [IP]
13. Donner le plus grand et le plus petit offset ainsi que les adresse-segments correspon-
dantes pour trouver l’adresse physique suivante : 2020AH.

2/2
Architecture des ordinateurs

Filière: SMI-4 A.U: 2019/2020

Modes d’adressage & Jeu d’instructions: TD

1. Donner le mode d’adressage de chacune des instructions suivantes:


Instruction Mode d’adressage Instruction Mode d’adressage
INC AX CMP DX, [BP+DI+4]
ADC BX, 2019 MOV [BP+6], AL
ADD CX, [3000] SUB BL,[SI]+10
MOV [DI], BX MOV [BP][SI], AX
PUSH AX XLAT
LES BX, word ptr[SI] LAHF et SAHF
CBW LODSB et STOSB
2. Expliquer la différence entre MOV BX,2019H et MOV BX,[2019H].
3. Soit la déclaration des variables suivante.
. TAB DB 17 dup (0)
. X DB ?
. Msg DB "Bienvenue au monde de l’assembleur !$"
Si l’on suppose que la variable TAB[0] est à l’adresse 0710h:0000h, donner les adresses hexadé-
cimales des variables TAB[16], X et Msg.
4. Quel est le résultat produit par la séquence d’instructions suivante :
. Alpha DW 19AFH
. MOV AL, BYTE PTR Alpha
5. Indiquer les noms des trois registres qui permettent de gérer la pile.
6. Quand une donnée est empilée dans la pile, le pointeur de pile est incrémente ou décrémente?
Qu’en est-il quand la donnée est dépilée?.
7. Quelles sont les instructions permettant d’accéder à la pile ? Préciser la taille des opérandes.
8. Préciser quelles sont les opérations effectuées lors de l’exécution des instructions suivantes:
PUSH AX et POP AX.
9. Donner des suites d’instructions n’utilisant que MOV, ADD et SUB correspondant aux instruc-
tions PUSH AX et POP BX.
10. Si SP=24FCH, c’est quoi l’adresse offset de la première location de la pile dans laquelle une
donnée peut être empilée?.
11. On suppose que SP=FF2EH, AX=3291H, BX=F43CH, et CX=09, trouver le contenu de la pile
et le pointeur de pile après l’exécution de chacune des instructions suivantes: PUSH AX, PUSH
BX, PUSH CX.

1/2
2

12. Pour retrouver le contenu original de chaque registre, de la question 11, montrer la séquence
d’instructions à exécuter. C’est quoi le contenu de SP après chaque instruction exécutée?.
13. Parmi les instructions suivantes, indiquer celles qui sont incorrectes et corriger-les.
Instruction Oui/Non ? Proposition de correction
POP BL
POP AX,BX
MOV ES, DS
MUL 4
MUL AL,BL
MOV AX, [DI]+12h
14. Si l’on suppose la mémoire initialisée à zéro au lancement de la séquence d’instructions ci-
dessous.
. MOV BX,100
. MOV [BX],256
. INC BX
. MOV AX,[BX]
Quelle est la valeur rangée dans AX après l’exécution ?
15. Soient X et Y deux variables de type DW. Écrire une séquence d’instructions qui permet d’évaluer
l’expression suivante : AX= -X + BX - Y.
16. Pourquoi le registre DX peut être changer par l’instruction MUL ?
17. Donner l’instruction ou la suite des instructions pour effectuer les actions suivantes:
(a) Multiplier par 2 le contenu du registre AL.
(b) Diviser par 3 le contenu du registre AX.
18. Le registre AL contient le code ASCII d’une lettre minuscule. On veut mettre en majuscule cette
lettre. Écrire une seule instruction qui permette d’effectuer cette modification.
19. Soit un nombre dans le registre AL. Donner une instruction permettant de mettre ses 2 bits de
poids faible à 0.
20. Soit un nombre x dans le registre BL. Donner une seule instruction permettant de mettre ses deux
bits de poids faibles à 1.
21. Soit un nombre signé x dans le registre AL. Donner une seule instruction permettant d’effectuer
le complément à 1 de x.
22. Soit un nombre signé x dans le registre AH. Donner une seule instruction permettant d’effectuer
le complément à 2 de x.
23. Quelle instruction permet d’inverser le signe d’un nombre ? Donner une combinaison de deux
instructions ayant 1 seule opérande conduisant au même résultat.
24. À quoi servent les instructions TEST et CMP ?
25. L’instruction MOV change-t-elle les drapeaux (flags) du microprocesseur ?
26. Si le contenu de AL et AH sont strictement positifs, quelle instruction doit-on utiliser et quel
drapeau doit-on vérifier afin de déterminer si AL est supérieur à AH?

2/2
Architecture des ordinateurs

Filière: SMI-4 A.U: 2019/2020

Jeu d’instructions: TD

1. Traduire la séquence d’instructions suivante en Assembleur.


(a) if (AX) (b) for (CX = 1; CX <= 10; CX++)
BX = 10; BX = BX + CX;
else { BX = 0;CX = 10; }

(c) CX=2; (d) switch (SI)


BX=18; {
while (BX>0) case 1: ...; break;
{ case 2: ...; break;
BX=BX-1; default:...;
CX=CX+1; }
}
2. Écrire une séquence d’instructions qui permet de ranger dans le registre BL le nombre
de ’1’ dans un mot.
3. Écrire une séquence d’instructions qui permet de ranger dans le registre BL le nombre
de ’0’ dans un double-mot.
4. Écrire une séquence d’instructions dont l’effet est d’ajouter une constante à un tableau.
5. Écrire une séquence d’instructions qui convertit toutes les lettres minuscules d’une chaîne
de caractères en majuscules.
NB: Le code ASCII de ’a’ est 97 et le code ASCII de ’z’ est 122.
6. Écrire une séquence d’instructions qui permet de ranger dans le registre AL l’octet le
plus grand parmi les notes d’étudiants.
7. Écrire une séquence d’instructions qui permet de ranger dans le registre AL le minimum
d’un tableau d’entiers.
8. Écrire une séquence d’instructions qui permet de ranger dans le registre AL le maximum
d’un tableau d’entiers.

1/4
2

9. Soit T un tableau d’entiers de taille N = 80 débutant à l’adresse [0200h]. Écrire une sé-
quence d’instructions qui permet de sauvegarder dans le registre AX le premier nombre
divisible par 4.
10. On considère la séquence d’instructions suivante:
1. MOV CX, 10 6. JZ Etq2
2. XOR BX, BX 7. ADD DX, CX
3. XOR DX, DX 8. JMP Next
4. Etq1 : MOV AX, 1 9. Etq2 : ADD BX, CX
5. . AND AX, CX 10. Next: LOOP Etq1
(a) Quel est le rôle de l’instruction XOR BX,BX ?
(b) Donner chacune des valeurs rangées dans BX et DX ?
(c) Que représente les deux valeurs trouvées?
11. On considère la séquence d’instructions suivante:
1. Temperature DB +25,-5,+20,+28,-5 10. INC SI
2. T_1 DW ? 11. LOOP Arriere
3. T_2 DW ? 12. MOV CX, 5
4. MOV CX, 5 13. MOV AX, BX
5. XOR BX, BX 14. CWD
6. LEA SI, Temperature 15. IDIV CX
7. Arriere: MOV AL, [SI] 16. MOV T_1, AX
8. . CBW 17. MOV T_2, DX
9. . ADD BX, AX

(a) À quoi servent les instructions des lignes 2 et 3?


(b) Quelle est la valeur rangée dans T_1 et T_2 après l’exécution de la séquence ?
(c) Que représente T_1 ?
(d) Récrire l’instruction de la ligne 5 et 6 en utilisant le mnémonique MOV.
12. Quel est le résultat de la séquence d’instructions suivante ?
1. x DB 69h 4. CLD
2. y DB 70h 5. MOV SI, offset x
3. XOR AX, AX 6. LODSB puis LODSB
13. Quel est le résultat de la séquence d’instructions suivante ?
1. Msg1 DB "Salut" 4. MOV DI, offset Msg2
2. Msg2 DB "Salue" 5. MOV CX, 5
3. MOV SI, offset Msg1 6. REPE CMPSB
14. Quel est le résultat de la séquence d’instructions suivante ?

2/4
3

1. Msg1 DB "Salut" 3. MOV AL, ’u’


2. MOV DI, offset Msg1 4. REPNZ SCASB
15. Écrire une séquence d’instructions qui balaye une chaîne de caractères et remplace une
lettre particulière par une autre.
16. Écrire une séquence d’instructions qui compare deux chaînes de caractères et affiche le
message " Les 2 chaînes sont identiques" ou "Les 2 chaînes ne sont pas identiques".
17. Écrire une séquence qui permet de saisir une chaîne de caractères en minuscule et l’af-
ficher en majuscule.
18. Écrire une séquence d’instructions qui permet d’évaluer l’expression ci-dessous et de
stocker le résultat en mémoire à l’offset 0300H.

Y = 2X 2 + 3X − 1

Sachant que X est un nombre positif (non nul) d’un octet stocké en mémoire à l’offset
0100H.
19. Soit l’organigramme suivant:

(a) Traduire cet organigramme en une séquence d’instructions assembleur.


(b) Que fait cet organigramme ?

3/4
4

20. Soit T un tableau d’entiers de taille N = 50 débutant à l’adresse [0300h].


(a) Traduire l’organigramme suivant, en une séquence d’instructions assembleur.

.
(b) Que fait cet organigramme ?

4/4
Architecture des ordinateurs
Chapitre n◦ 1: Introduction à l’architecture des ordinateurs

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 32

Plan
1 Introduction
2 Architecture de Von Neumann
Le microprocesseur (CPU)
La mémoire principale
Les interfaces d’entrées/sorties
Les bus de communication
3 Architecture de base d’un microprocesseur
Unité de commande
Unité arithmétique et logique
Les registres
4 Les mémoires
C’est quoi une mémoire ?
Caractéristiques d’une mémoire
Classification des mémoires
Mémoires à semi-conducteurs
Hiérarchie des mémoires
5 Exécution d’un programme
Présentation
Les différents types de programme
6 Les différents types d’ordinateur
Les micro-ordinateurs
Les gros systèmes
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 32
Introduction

.
Un programme est un ensemble d’instructions exécutées dans un ordre bien
déterminé par une machine (microprocesseur) ;
Un programme est généralement écrit dans un langage évolué (C, Java, etc).
Les instructions qui constituent un programme peuvent être classifiées en 4
catégories :
å Les Instructions d’affectations ;
å Les instructions arithmétiques et logiques ;
å Les Instructions de branchement (conditionnelle et inconditionnelle) ;
å Les Instructions d’entrées/sorties (E/S).
Comment s’exécute un programme dans la machine ?
å Pour comprendre le mécanisme d’exécution d’un programme ⇒ il faut
comprendre le mécanisme de l’exécution d’une instruction .
å Pour comprendre le mécanisme de l’exécution d’une instruction ⇒ il
faut connaître l’architecture de la machine sur la quelle va s’exécuter
cette instruction.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 32
Architecture de Von Neumann

Pour traiter une information, un microprocesseur seul ne suffit pas, il faut


l’insérer au sein d’un système de traitement de l’information.
1945 : John Von Neumann propose l’architecture interne d’une machine
universelle de traitement de l’information. Elle est composé des éléments
suivants :
ç Le microprocesseur (Unité centrale de traitement=CPU) ;
ç Une mémoire principale (MP) qui contient les instructions
et les données lors de l’exécution d’un programme ;
ç Des interfaces d’E/S pour communiquer avec l’extérieur.

Les informations échangées entre les différents organes du système circulent


sur des bus.
å Cette architecture est la base des architectures des ordinateurs.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 32


Architecture de Von Neumann Le microprocesseur (CPU)

Il constitue le cerveau de presque toutes les réalisations électroniques ; on en trouve


dans tous les domaines :
å Informatique : De la calculatrice à l’ordinateur ;
å Électronique domestique : Thermomètre, télécommande, carte à puce,... ;
Le CPU à pour rôle :
å D’interpréter et d’exécuter les instructions du programme situées en
MP ;
å De lire ou de sauvegarder les résultats dans la mémoire ;
å De communiquer avec les unités d’échange.
On caractérise le CPU par :
å Sa marque (Intel, Cyrix, AMD, ...),
å Sa fréquence : en MHz ou GHz ;
å Le nombre d’instructions exécutées par secondes ;
å La taille des données qu’il est capable de traiter : en bits.
Pour pouvoir effectuer les opérations sur des données et exécuter des programmes
le CPU doit disposer d’un espace de travail. Cet espace de travail est la MP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 32


Architecture de Von Neumann La mémoire principale

La MP représente l’espace de travail de l’ordinateur ;

C’est un organe dont la seule fonctionnalité consiste à pouvoir stocker de


l’information et la préserver pour pouvoir la restituer à la demande ;

C’est l’organe principal de rangement des informations utilisées par le CPU.

Dans une machine pour exécuter un programme il faut le charger (copier)


dans la MP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 32


Architecture de Von Neumann Les interfaces d’entrées/sorties

Elles permettent d’assurer la communication entre le CPU et les périphériques.

Périphériques d’entrée : clavier, souris, scanner, écran tactile, carte réseau,


modem etc.

Périphériques de sortie : écran (tactile ou non), imprimante, carte réseau,


modem etc.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 32


Architecture de Von Neumann Les bus de communication

Présentation

Bus : ensemble de liaisons physiques (câbles, pistes de circuits imprimés, etc.)


pouvant être exploitées en commun par plusieurs éléments matériels afin de
communiquer.

Objectif : réduire le nombre de voies nécessaires à la communication des différents


composants.
Caractéristiques :

Largeur : Nombre de lignes physiques sur lesquelles les données sont


envoyées = nombre de bits transmis en parallèle.
Fréquence (en Hz) : Nombre de paquets de données envoyés ou reçus
par seconde.
Débit maximal (ou taux de transfert maximal) : Quantité de données
transportées par unité de temps (largeur x fréquence).
Exemple : largeur 16 bits et fréquence 133 MHz ⇒ 266 Mo/s

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 32


Architecture de Von Neumann Les bus de communication

Spécialisation des bus

Différents types de bus :

Bus d’adresse : Il permet d’identifier un emplacement en mémoire vers lequel on


veut accéder. Ce bus est unidirectionnel, l’information ne vas que dans le sens CPU
→ périphérique.

Bus de données : Il permet la circulation de données de et vers le CPU


(bidirectionnel).

Le bus de commandes : Transporte les ordres et les signaux de synchronisation de


l’unité de commande (bidirectionnel).

Bus système : Permet au microprocesseur de communiquer avec la MP du système


(mémoire vive ou RAM).

Bus d’extension : (bus d’entrée/sortie) permet aux divers composants de la


carte-mére de communiquer entre eux.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 32


Architecture de Von Neumann Les bus de communication

Spécialisation des bus

ISA (Industry Standard Architecture) : Apparaît en 1981, bus standard des PC


jusqu’à la fin des années 1990.

PCI (Peripheral Component Interconnect) : Lancé à la fin des années 90 pour faire
face à la demande liées aux applications vidéo.

AGP (Accelerated Graphics Port) :Lancé en 1997, port interne destiné


exclusivement aux cartes graphiques. Remplacé par le PCI-Express.

SCSI (Small Computer System Interface) : Liaison de périphériques.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 32


Architecture de base d’un microprocesseur

Le CPU renferme quatre éléments :


1 Unité de contrôle (UC) : Contrôle le fonctionnement du CPU et donc de
l’ordinateur ;
2 Unité arithmétique et logique (UAL) : Exécute les fonctions de traitement des
données de l’ordinateur ;
3 Registres : Mémoire interne du CPU ;
4 Unité d’E/S : Gère les communications entre l’UC, l’UAL et les registres, en
interface avec la MP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 32


Architecture de base d’un microprocesseur Unité de commande

L’UC à pour rôle :

å De diriger le fonctionnement des autres unités (UAL, mémoire, E/S) ;


å De coder chaque instruction sous forme binaire ;
å D’indiquer à l’UAL quels traitements arithmétiques ou opérations
logiques il faut effectuer.

Elle assure :
å La recherche (lecture) de l’instruction et des données à partir de la
MP ;
å Le décodage de l’instruction et l’exécution de l’instruction en cours et
prépare l’instruction suivante.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 12 / 32


Architecture de base d’un microprocesseur Unité arithmétique et logique

C’est le coeur du CPU. Elle regroupe un ensemble de circuits combinatoires


capable d’effectuer une grande variété d’opérations arithmétiques (+,-,*,/)
et logiques (NOT, AND, OR, XOR, etc) :

å Opérations sur un registre ;


å Opérations sur un ou plusieurs opérandes ;
å Opérations en virgule flottante en simple et double précision.

Assure l’exécution des opérations élémentaires désignées par l’unité de


commande. Les informations manipulées et les résultats intermédiaires sont
rangés dans les registres.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 13 / 32


Architecture de base d’un microprocesseur Les registres

Généralement intégrés dans le CPU ;

Très grande vitesse (100 fois plus rapide que la MP) ;

Très faible capacité ;

Mémoire volatile : contenu disparaît à l’extinction du PC ;

Sert au stockage temporaire des informations, des données issues de la MP,


des adresses, etc ;

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 14 / 32


Les mémoires C’est quoi une mémoire ?

Avec une bascule c’est possible de mémoriser une information sur 1 seul bit ;
Avec un registre c’est possible de mémoriser une information sur n bits ;
Si on veut mémoriser une information de taille importante ⇒ il faut utiliser
une mémoire.
Une mémoire est un dispositif capable :
å D’enregistrer une information ;
å De la conserver (mémoriser) ;
å De la restituer (possible de la lire ou
la récupérer par la suite).

La mémoire peut être :


å Dans le CPU (des registres) ;
å Interne (Exp : RAM, ROM) ;
å Externe (Exp : Clé USB, CD-ROM, DVD-ROM).

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 15 / 32


Les mémoires Caractéristiques d’une mémoire

La capacité (la taille) :


La quantité d’information (en bits) que la mémoire peut contenir. Elle
s’exprime souvent en octet.

Volatilité :
ç Si une mémoire perd son contenu lorsque la source d’alimentation est
coupée alors la mémoire est dite volatile.
ç Si une mémoire conserve son contenu lorsque la source d’alimentation
est coupée alors la mémoire est dite non volatile (permanente ou
stable).

Le débit :
C’est le nombre maximum d’informations lues ou écrites par seconde.
Exprimé en bits par seconde

Le temps de cycle :
Intervalle de temps minimum entre deux accès successifs.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 16 / 32


Les mémoires Caractéristiques d’une mémoire

Mécanisme d’accès à l’information :


ç Sur une mémoire on peut effectuer l’opération de :
å Lecture : récupérer/restituer une information à partir de la mémoire.
å Écriture : enregistrer une nouvelle information ou modifier une
information déjà existante dans la mémoire.
ç Les mémoires qui offrent les deux modes lecteur/écriture s’appelles
mémoires vives.
ç Les mémoires qui offrent uniquement la possibilité de la lecture (c’est
pas possible de modifier le contenu) s’appelles mémoires mortes.
Le temps d’accès :
ç C’est un chiffre exprimé en ns (nano secondes) qui détermine le temps
qui vas s’écouler entre la demande de lecture/d’écriture en mémoire et
sa réalisation.
ç C’est un critère important pour déterminer les performances d’une
mémoire ainsi que les performances d’une machine.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 17 / 32


Les mémoires Classification des mémoires

Les mémoires peuvent êtres classée en deux catégories selon la technologie utilisée :
1 Mémoire à semi-conducteur1 RAM, ROM, PROM, ... : Très rapide mais de taille
réduite.

2 Mémoire de masse : Utilisée pour le stockage permanent ou la sauvegarde des


informations. On considère deux catégories :

1 Mémoire de travail : accés assez rapide (quelques milisecondes), débit


important (quelques Mo/s), taille moyennement important (de
quelques Mo à quelques centaines de Go).
⇒ Disque dur, Clé USB, etc.
2 Mémoire de sauvegarde : accés plus lent (peut dépasser la minute) mais
la capacité plus grande (plusieurs Tera-octet) et beaucoup moins chere.
⇒ CD-ROM, DVD-ROM, etc.
—————————–
.1 On appelle semi-conducteur un matériau qui a les caractéristiques électriques d’un
isolant.
Le silicium est le matériau semi-conducteur plus utilisé commercialement.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 18 / 32
Les mémoires Mémoires à semi-conducteurs

Random Access Memory (RAM)

La RAM est une mémoire vive à accès en lecture et en écriture ;


C’est une mémoire volatile : Perd son information lorsque l’on coupe le
courant.
Initialement vierge, sert au stockage d’une manière transitoire les
informations à traiter ;
C’est l’organe principal de rangement des informations utilisées par le CPU ;
Il existe deux grandes familles de mémoires RAM :
1 SRAM (mémoire vive statique) : Basées sur des bascules, très rapide, temps
d’accès (l’ordre de 1 ns).
2 DRAM (mémoire vive dynamique) : Un peu moins rapide que la SRAM,
l’information doit être rafraîchi périodiquement, temps d’accés (l’ordre de 10
ns). Basées sur des condensateurs et des transistors.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 19 / 32


Les mémoires Mémoires à semi-conducteurs

Read Only Memory (ROM)

Pour certaines applications, il est nécessaire de pouvoir conserver des informations


de façon permanente même lorsque l’alimentation électrique est coupée. On utilise
alors des mémoires mortes ou mémoires à lecture seule (Read Only Memory).

C’est une mémoire morte dont le contenu est inscrit de manière définitive
par le constructeur ;
å Son contenu ne peut plus être ni modifié, ni effacé par l’utilisateur.

Cette mémoire est non volatile ;

Permet seulement la lecture des données ;

Moins chère que la RAM

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 20 / 32


Les mémoires Mémoires à semi-conducteurs

La mémoire cache

Activités
Vous êtes dans votre bureau, au fond de la pièce, une grande armoire qui
comporte tous les tiroirs.
La taille de votre bureau vous permet de poser dessus environs une vingtaine
de dossiers en plus de votre espace de travail.
Si vous avez besoin d’un dossier particulier, dans un premier temps vous
regardez s’il n’est pas sur votre bureau, s’il y est vous le prenez. Si non, vous
allez demander à votre secrétaire de vous l’apporter,
La fin de la journée arrive et votre bureau est plein de dossiers, il vous en
faut un autre, vous appelez votre secrétaire qui vous l’apporte,et vous faites
ranger à votre secrétaire un dossier dont vous pensez ne plus avoir besoin.
å Et bien la mémoire cache fonctionne exactement sur ce principe.
å Vous êtes le CPU, votre bureau la mémoire cache, et votre secrétaire le
contrôleur mémoire qui gère vos tiroirs de MP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 21 / 32


Les mémoires Mémoires à semi-conducteurs

La mémoire cache

Problème
En pratique, les accès à la MP sont trés lents ; une trop grande différence de
vitesse entre le CPU et la MP.
å La vitesse du CPU est plus rapide que la MP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 22 / 32


Les mémoires Mémoires à semi-conducteurs

La mémoire cache

Solution
1 On place dans la mémoire cache les informations (instructions, données) les plus
fréquemment utilisées par le CPU lors de l’exécution d’un programme ;
2 On intègre cette mémoire entre le CPU et la MP pour améliorer la vitesse de
transfert des informations entre ces deux derniers.
å La mémoire cache permet au CPU de faire
moins d’accées à la MP et ainsi de gagner du temps.
On distingue :
Cache de niveau 1 : mémoire intégrée au micrprocesseur.
Cache de niveau 2 : installée entre le micrprocesseur et la MP.
.
.
.
.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 23 / 32


Les mémoires Mémoires à semi-conducteurs

La mémoire cache

La mémoire cache (antémémoire) utilisée comme mémoire tampon entre le CPU


et la RAM :

Vitesse très rapide (de type SRAM) ;


Faible capacité (par rapport à la MP) ;
Volatile ;
Invisible pour le système d’exploitation.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 24 / 32


Les mémoires Hiérarchie des mémoires

Les différents éléments de la mémoire d’un ordinateur sont ordonnés en


fonction des critères suivants : temps d’accès, capacité et le coût.
Quand on s’éloigne du registres vers les mémoires de masse, on costate que
le temps d’accès et la capacité des mémoires augmentent, mais le coût
diminue.
Principe
• À tout moment, on ne copie des informations que d’un niveau vers le niveau
immédiatement adjacent ;
• Le niveau supérieur est plus près du CPU ;
å Il est plus rapide, plus cher, plus petit
• Le niveau inférieur est plus loin du CPU ;
å Il est plus gros, plus lent, moins cher
.
.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 25 / 32
Exécution d’un programme Présentation

1 Chargement du programme et des données


depuis un périphérique dans la MP ;

2 Chargement séquentiel des instructions du


programme de la MP dans l’UC ;

3 Analyse par l’UC de l’instruction et


passage à l’UAL pour traitement ;

4 Traitement de l’instruction par l’UAL avec


éventuellement appel à la mémoire ou aux
unités d’entrée-sortie.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 26 / 32


Exécution d’un programme Les différents types de programme

Lorsque l’on utilise un ordinateur, on utilise en fait un programme.

Dès le démarrage plusieurs programmes sont automatiquement


exécutés.
Ils ne sont pas tous égaux, on distigue 3 catégories :
1 BIOS (Basic Input/Output System).
2 Système d’exploitation.
3 Programmes utilisateurs.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 27 / 32


Exécution d’un programme Les différents types de programme

Le BIOS

C’est le premier programme qui s’exécute lors du démarrage de


l’ordinateur :

Il identifie les différents composants de la machine et vérifie leur bon


fonctionnement.

Il permet à l’utilisateur de configurer certains périphériques.

Il propose (au système d’exploitation) des "fonctions" bas niveau pour


utiliser ces périphériques.

Il ne peut pas être remplacé (on peut toutefois le faire évoluer).

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 28 / 32


Exécution d’un programme Les différents types de programme

Le système d’exploitation

Le système d’exploitation (noté SE ou OS, abréviation du terme


anglais Operating System), est chargé d’assurer la liaison entre les
ressources matérielles, l’utilisateur et les applications.
C’est le second programme à être exécuté, c’est le chef d’orchestre,
c’est lui qui détermine :
Quel programme utilisateur va être exécuté ;
Comment répartir la mémoire entre les différents programmes ;
Comment lire/enregistrer les données sur les mémoires de masse ;
Les droits de chaque utilisateur du système.

Les plus connus sont : Windows, MacOS, Linux, FreeBSD, Sun


Solaris, etc.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 29 / 32


Exécution d’un programme Les différents types de programme

Les programmes utilisateurs

Ce sont les programmes qui sont lancés par l’utilisateur comme par
exemple :
Éditeur de texte
Traitement de texte
Compilateur
Interface graphique

Suivant les SE, ces programmes ont plus ou moins de libertés

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 30 / 32


Les différents types d’ordinateur Les micro-ordinateurs

Ce sont des ordinateurs autonomes, l’unité centrale contient tous les


composants indispensables au bon fonctionnement de l’ordinateur.
Il existe aujourd’hui deux catégories de PC :
1 Les compatibles PC (compatibles au standard initié par IBM en 1981) :
SE disponibles : Windows, Linux, FreeBSD, etc.
2 Macintosh, un seul constructeur : Apple
SE disponilbes : MacOS, Linux, FreeBSD, etc.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 31 / 32


Les différents types d’ordinateur Les gros systèmes

Ce sont des systèmes informatiques que l’on retrouve principalement


dans les entreprises et les universités.

Les ordinateurs utilisés ne contiennent pas tous les composants


indispensables (souvent ils ne possèdent pas d’unité de stockage et de
processeur principal), ils sont donc reliés à un ordinateur central qui
possède les composants manquants.
On a donc :
Des terminaux.
Un ou plusieurs serveurs.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 32 / 32


Architecture des ordinateurs
Chapitre n◦ 2: Vue logique de la mémoire principale

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 14

Plan

1 I. Comment peut-on accéder à la mémoire ?

2 II. Segmentation de la mémoire


1. Introduction
2. Différentes adresse mémoire
3. Les types de segments

3 III. Registres du microprocesseur Intel


1. Registres généraux
2. Registres de segments
3. Registres d’adressage (offset)
4. Registre d’état

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 14


I. Comment peut-on accéder à la mémoire ?

La mémoire principale se comporte comme un tableau de cases.


Si on donne à chaque case un numéro, en commençant par 0 pour la
première case, on dit que ce numéro est l’adresse mémoire.
La coutume est de noter les adresses mémoires en hexadécimal.
Dans un PC, l’unité de mémoire est l’octet, ce qui signifie que :
å Chaque case contient 8 bits, soit un octet.
å Chaque case possède une adresse mémoire.

La mémoire principale= RAM

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 14


II. Segmentation de la mémoire 1. Introduction

La mémoire principale est divisée en segments de 16 cases (octets) ;


On inscrit sur le sommet de chaque segment un numéro, en commençant
par 0 pour le 1re segment, on dit que ce numéro est l’adresse-segment ;
å L’adresse-segment toujours représenté en hexa et codé sur 16 bits.
La distance par rapport au sommet du segment est l’offset (déplacement) ;
å L’offset toujours représenté en hexa et codé sur 16 bits.
Une adresse mémoire se compose donc de deux parties :
l’adresse-segment :Offset. .
Exp : 0001h :0005h

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 14


II. Segmentation de la mémoire 2. Différentes adresse mémoire

Segment Adresse début Adresse fin Pointeur de segment


Segment 0 0000h :0000h 0000h :FFFFh 0000h :0000h
... ... ... ...
Segment 15 000Fh :0000h 000Fh :FFFFh 000Fh :0000h
... ... ... ...
Segment 216 FFFFh :0000h FFFFh :FFFFh FFFFh :0000h

Remarque
La mémoire est divisée en segments de 16 octets, à partir desquels il est possible
de couvrir une zone de 216 octets (64 ko) à l’aide d’un offset de 16 bits.

Problème
Les adresse-segments et les offsets sont codés sur 16 bits, de plus le bus d’adresse
codé sur 20 bits ;
å Quelle est la solution proposer par Intel pour fabriquer une adresse de 20 bits à
partir des adresse-segments de taille 16 bits ?.

Solution
Chaque adresse-segment sera multiplié par (10)16 plus un offset sur 16 bits. On peut
calculer l’adresse réelle (physique) par la formule suivante :
Adresse physique = l’adresse-segment*(10)16 +Offset.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 14
II. Segmentation de la mémoire 2. Différentes adresse mémoire

Remarques
1 Les adresses physique valides vont de 0000H :0000H à FFFFH :000FH ;
2 La capacité totale d’adressage est : FFFFH :FFFFh=FFFF0H+FFFFH=10FFEFH,
qui dépasse légèrement 1Mo = 220 octets (FFFFFh =FFFF0h :000Fh).
3 A partir de segments distincts on peut accéder à une même adresse mémoire en
effet ces adresses sont identiques :

l’adresse-segment : Offset
0003h : 0001h ⇒ 00030h+0001h = 00031h
0002h : 0011h ⇒ 00020h+0011h = 00031h
0001h : 0021h ⇒ 00010h+0021h = 00031h
0000h : 0031h ⇒ 00000h+0031h = 00031h
å On dit alors que ces segments sont entrelacés.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 14


II. Segmentation de la mémoire 3. Les types de segments

La mémoire contient quatre types de segments :


DS (Data Segment) : Segment de données c’est à dire
contenant les données en cours d’utilisation.
CS (Code Segment) : Segment de code c’est à dire
contenant les instructions en cours d’exécution.
ES (Extra Segment) : Segment de données supplémentaire.
SS (Stack Segment) : Segment de pile c’est à dire
contenant l’adresse de la pile. (voir plus tard)
å Ces quatre sortes de segments ont chacun leur propre
espace mémoire afin d’éviter le désordre et la confusion.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 14


III. Registres du microprocesseur Intel 1. Registres généraux

EAX : Registre accumulateur, utilisé pour les opérations arithmétiques.


ECX : Registre compteur, utilisé comme compteur de boucle.
EBX : Registre de base, utilisé lors de l’accès à une zone mémoire sous
forme de tableau, il représente l’indice de ce tableau.
EDX : Registre de données, utilisé en complément d’opération arithmétique
(stocker des données provisoires).
AX : les deux octets de poids faible de EAX.
AL : l’octet de poids faible de AX.
AH : l’octet de poids fort de AX.
Registre EAX

Remarque
Les registres EBX, ECX, et EDX : conformément au schéma précédent, se
manipulent exactement comme le registre EAX.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 14
III. Registres du microprocesseur Intel 1. Registres généraux

On peut accéder aux bits 0 à 7 du registre EAX.


Exp : MOV AL,10h
⇒ Copier la valeur 10h dans AL, le reste du EAX inchangé.

Pour accéder aux bits 8 à 15 du registre EAX.


Exp : MOV AH,11h
⇒ Copier la valeur 11h dans AH, le reste du EAX inchangé.

On peut accéder aux bits 0 à 15 du registre EAX.


Exp : MOV AX,1234h
⇒ Copier la valeur 1234h dans AX, le reste du EAX inchangé.

Et enfin pour accéder au registre EAX dans son intégralité, il suffit de


l’appeler par son nom EAX.
Exp : MOV EAX,12345678h
⇒ Placer la valeur 12345678h dans EAX.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 14


III. Registres du microprocesseur Intel 1. Registres généraux

Voyons maintenant un petit programme : ces instructions sont exécutées les unes
après les autres.

Instruction EAX AX AH AL
MOV EAX,12345678h 12345678h 5678h 56h 78h
MOV AL,10h 12345610h 5610h 56h 10h
MOV AX,0000h 12340000h 0000h 00h 00h
MOV AH,31h 12343100h 3100h 31h 00h
MOV AL,AH 12343131h 3131h 31h 31h

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 14


III. Registres du microprocesseur Intel 2. Registres de segments

Ces registres, de 16 bits, servent uniquement, à indiquer l’or d’une


écriture/lecture mémoire, à partir de quel segment on veut lire ou écrire.

DS (Data Segment) : Pointe sur le début du


segment qui contient les données.

CS (Code Segment) : Pointe sur le segment qui


contient le code du programme.

SS (Stack Segment) : Contenant l’adresse du


segment de pile courant. Il est normalement
initialisé au début du programme et reste fixé par
la suite (voir plus tard).

ES (Extra Segment) : Pointe sur un segment


supplémentaire défini par le programmeur.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 14


III. Registres du microprocesseur Intel 3. Registres d’adressage (offset)

Appelés aussi registres d’indice, ces registres de 16 bits servent à contenir l’offset
d’une adresse.

SI (Index de source) : Pincipalement utilisé lors d’opérations sur des chaînes


de caractères ; il est associé au registre de segment DS (DS :SI).
Exp : MOV AX, [SI] ⇔ MOV AX,[DS :SI]
⇒ Copier dans AX le contenu de la case mémoire à l’adresse DS :SI.
DI (Indice Destination) : identique que SI.
SP (Pointeur de Pile) : Associé au registre de segment SS (SS :SP) pour
indiquer le dernier élément de la pile.
Exp : MOV AH,[SP] ⇔ MOV AH,[SS :SP]
⇒ Copier dans AH le contenu de la case mémoire à l’adresse SS :SP.
BP (Pointeur de Base) : Associé au registre de segment SS (SS :BP) pour
accéder aux données de la pile.
Exp : MOV BH,[BP] ⇔ MOV SI,[SS :BP]
⇒ Copier dans BH le contenu de la case mémoire à l’adresse SS :BP.
IP (Pointeur d’instruction) : Associé au registre de segment CS (CS :IP)
pour indiquer la prochaine instruction à exécuter. Ce registre ne pourra
jamais être modifié directement.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 12 / 14
III. Registres du microprocesseur Intel 3. Registres d’adressage (offset)

Registres offset utilisés pour les différents segments :

Registres Segments DS ES CS SS
Registres Offset SI, DI, SI, DI, IP SP,BP
BX, Constante BX, Constante

Remarque
Ces registres (sauf IP) peuvent apparaître comme des opérandes dans toutes les
opérations arithmétiques et logiques sur 16 bits.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 13 / 14


III. Registres du microprocesseur Intel 4. Registre d’état

Appelé aussi registre condition, ce registre est composé d’un ensemble de


bits. Ces bits s’appels indicateurs (drapeaux ou flags) indiquant l’état d’une
condition particulière dans le CPU.
Son rôle est de positionner ses bits (à l’état 0 ou 1) selon le résultat
arithmétique de la précédente instruction exécutée.
Bit Application Rôle
0 CF (Carry flag) Ce bit est passe à 1 si la dernière opération
a générée une retenue (carry), 0 sinon.
2 PF (Parity Flag) Ce bit est passe à 1 si la dernière opèration
a gènèrèe un résultat impair, 0 s’il est pair.
6 ZF (Zero Flag) Ce bit est passe à 1 si le résultat de
l’opération précédente est nul, 0 sinon.
7 SF (Sign Flag) Ce bit est passe à 1 si la dernière opération
a générée un résultat négatif, 0 s’il est ≥ 0.
11 OF (Overflow Flag) Ce bit est passe à 1 s’il y a un
débordement (overflow), 0 sinon.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 14 / 14


Architecture des ordinateurs
Chapitre n◦ 3: Modes d’adressage des données

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 12

Plan

1 Présentation

2 Adressage immédiat

3 Adressage par registre

4 Adressage direct

5 Adressage basé

6 Adressage indexé

7 Adressage basé ou indexé avec déplacement

8 Adressage basé et indexé

9 Adressage basé et indexé avec déplacement

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 12


Présentation

å Un mode d’adressage est un moyen qui permet au CPU d’avoir accès à une donnée
dans la MC.
å Un mode d’adressage est une instruction présentée par un CPU afin de transférer
une information d’un emplacement mémoire à un autre emplacement. C’est une
opération d’affectation souvent représentée en assembleur par l’instruction MOV.

å L’instruction MOV dst,src signifie mettre le contenu de src (la source) dans dst (la
destination). On dit que dst et src qu’ils sont des opérandes (paramètres).

å La connaissance des principaux modes d’adressage est nécessaire car ils permettent
d’écrire les programmes de la façon la plus courte, la plus simple et la plus lisible
possible.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 12


Adressage immédiat

Dans ce mode d’adressage, l’opérande source est une constante. La destination est
un registre ou une adresse mémoire.
å Si la destination est un registre, la taille de celui-ci détermine le nombre de
bits impliqués dans l’opération.

Exemples
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 12


Adressage immédiat

å Si la destination est une adresse mémoire, il faut préciser la taille de cet


emplacement.

Exemples
...........
...........
...........
...........
...........
...........
...........
...........

Remarque
L’adressage immédiat vers un registre de segment est interdit.
Par exemple, on ne peut pas écrire :

MOV ES, 03h


MOV DS, 20h
MOV CS, 30h

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 12


Adressage par registre

L’opérande est un registre, mode le plus courant (+ efficace), car toutes les opérations
se font à l’intérieur du CPU. Les registres source et destination doivent avoir la même
taille.

Exemples
...........
...........
...........
...........
...........
...........

Remarque
Le transfert d’un registre de segment vers un autre registre de segment est interdit.
Par exemple, on ne peut pas écrire :

MOV ES, DS
MOV DS, CS

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 12


Adressage direct

å Comme l’indique son nom, c’est le déplacement de données entre les registres
internes de CPU et la MC.
å Si l’opérande source est spécifié par son adresse mémoire. Alors l’opérande
destination est un registre et vice-versa.
å Pour réaliser l’opération il faut récupérer (lire) l’opérande à partir de la mémoire
(DS par défaut).

Exemples
...........
...........
...........
...........
...........
...........
...........

Remarque
On ne peut pas charger le contenu d’un emplacement mémoire dans un autre sans
passer par un registre.
Exp : mov [20h],[10h] Interdit !

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 12


Adressage basé

å Tous simplement, il utilise les registres de base (BX ou BP) comme pointeur entre
la MC et les registres internes de CPU ;
å Un des opérandes est le contenu d’une zone mémoire pointée par un registre de
base. L’autre opérande est un registre ;
à Si le registre de base utilisé est BX, l’emplacement mémoire pointé sera
à l’adresse DS :BX ;
à Si le registre de base utilisé est BP, l’emplacement mémoire pointé sera
à l’adresse SS :BP.

Exemples
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 12


Adressage indexé

å Le même mode que le basé, mais il utilise les registres d’indice SI ou DI (au lieu
des registres BX ou BP). Il est utilisé lors d’opérations sur des chaînes de
caractères ou sur des tableaux ;
å Un des opérandes est le contenu d’une zone mémoire pointée par un registre de
d’indice ;
å Les registres d’indice SI, DI associés au registre de segment DS.

Exemples
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 12


Adressage basé ou indexé avec déplacement

å Le même mode que le basé ou l’indexé, mais on ajoute un déplacement 8 bits ou


16 bits.
Exemples

...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 12


Adressage basé et indexé

å C’est un mode combine entre des modes d’adressage comme l’indique son nom
(basé+indexé).
å Ce mode d’adressage est utilisé lors de la manipulation de tableaux ;

Exemples
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 12


Adressage basé et indexé avec déplacement

å Le même mode que le basé et indexé, mais on ajoute un déplacement 8 bits ou 16


bits.
Exemples
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........
...........

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 12 / 12


Architecture des ordinateurs
Chapitre n◦ 4: Jeu d’instructions (Partie I)

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 21

Plan

1 Introduction

2 Format d’instruction

3 Déclaration de variables

4 Déclaration des tableaux

5 Manipulation de données

6 Instructions de la pile
Instruction PUSH
Instruction POP

7 Instructions arithmétiques

8 Instructions logiques

9 Instructions de tarnsferts

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 21


Introduction

Chaque CPU possède un certain nombre limité d’instructions qu’il peut exécuter.
Ces instructions s’appelles jeu d’instructions.
Le jeu d’instructions décrit l’ensemble des opérations élémentaires que le CPU
peut exécuter.
Les instructions peuvent être classifiées en plusieurs catégories selon le type
d’action que son exécution déclenche.
å Instructions d’affectation ;
å Instructions arithmétiques et logiques ( ET , OU , ADD,...) ;
å Instructions de branchement ( conditionnelle et inconditionnelle ) ;
å Instructions d’entrées sorties.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 21


Format d’instruction

Les instructions et leurs opérandes (paramètres) sont stockées en mémoire


principale.
Une instruction est composée de quatre champs :
.
Étiquette : Champ opération Champ opérande ; Commentaire

å Étiquette : Identificateur suivi d’un " :" qui représente l’adresse de stockage
de cette instruction.
å Le champ opération qui indique au CPU quelle instruction réaliser.
å Le champ opérande qui contient la donnée brute ou la référence à une
donnée en mémoire. Les opérandes séparés par "," dst puis src.
å Commentaire précédé du ( ;). Il sert à ajouter des informations explicatives au
sujet du fonctionnement du programme. ou de l’instruction correspondante.
Exemple :
Etq : MOV dst,src ; pour effectuer un transfert de src vers dst
La technique associée à la localisation des opérandes d’une instruction s’appelle
l’adressage ou le mode d’adressage .

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 21


Déclaration de variables

1. DB (Define Byte) : Sert à définir un octet, ainsi vous pouvez définir un nombre
inférieur à 255 = 28 − 1.
Exp : X DB 0
2. DW (Define Word) : Définit un mot (16 bits), donc une valeur inférieur ou égale à
65535 = 216 − 1.
Exp : X DW 65532
3. DD (Define Double) : Définit un mot double (32 bits), donc une valeur inférieur ou
égale à 232 − 1.
Exp : X DD F70ABCDh
4. EQU (EQUivalent) : Affecte un nombre à un label. La valeur ne peut pas être
modifiée : c’est une déclaration de constante.
Exp : Pi EQU 3.14 (décimal)
X EQU 01010101b (biaire)
Y EQU 10h (hexadécimal)
5. ? : On déclare les données non initialisées par ? .
Exp : X DB ?

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 21


Déclaration des tableaux

Les tableaux peuvent être vus comme des chaînes de variables, c’est à dire des
suite d’octets.
Exemples
......................
......................
......................
......................
......................
......................
......................
......................

Lorsque l’on veut déclarer un grand tableau de n cases, toutes initialisées à la


même valeur, on utilise la directive dup :

Exemples
......................
......................
......................
......................
......................
......................

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 21


Manipulation de données

1. Operateur offset : Renvoie l’adresse à laquelle située une étiquette de donnée.

Exemples
......................
......................
......................
......................
......................
......................
......................
......................

2. Operateur PTR : Permet de spécifier la taille des transferts.

Exemples
......................
......................
......................
......................
......................
......................
......................

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 21


Instructions de la pile

C’est une région de la RAM appelée segment de pile (Stack Segment (SS)) où l’on
va stocker (empiler) ou retirer (dépiler) le contenu des registres ;

Les piles offrent un nouveau moyen d’accéder à des données dans la RAM, qui est
très utilisé pour stocker temporairement le contenu des registres ;

La pile est gérée en LIFO (Last IN First Out= dernier entré premier sorti) ;

La pile est implémentée en mémoire et le registre SP pointe sur le haut de la pile,


c’est à dire sur la première case mémoire libre à son sommet (SS : SP) ;

Pour accéder à la pile nous auront 2 instructions : PUSH, POP.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 21


Instructions de la pile Instruction PUSH

Pour empiler (déposer ou ajouter) une donnée sur le sommet de la pile (SS : SP) on
peut envisager l’instruction suivante :
PUSH Source ; Pile ← Source
⇒ La Source peut être un registre ou une case mémoire de 16 bits.
Le résultat de cette instruction est que :
1 Le registre de SP est décrémenté de 2 ⇒ SP ← SP-2 ;

2 La source et sauvegardée à l’adresse SS :SP.

Exemple
MOV SP, 20h
MOV AX, 1234h
MOV BX, ABCDh
PUSH AX
PUSH BX
....
....
....
....

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 21


Instructions de la pile Instruction POP

Pour dépiler (récupérer ou retirer) une donnée sur le sommet de la pile (SS : SP) on
peut envisager l’instruction suivante :
POP Destination ; Destination ← Pile
⇒ La destination peut être un registre ou une case mémoire de 16 bits.
Le résultat de cette instruction est que :
1 La valeur pointée par SP est sauvegardée dans la destination.

2 Le registre de SP est incrémenté de 2 ⇒ SP ← SP+2 ;

Exemple
MOV SP, 20h
MOV AX, 1234h
MOV BX, ABCDh
PUSH AX
PUSH BX
POP CX ⇒ CX ← ABCDh
POP BX ⇒ BX ← 1234h
...
...

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 21


Instructions arithmétiques

1. ADD (Addition) : Cette instruction effectue une addition, le résultat est placé dans le
premier opérande (Destination ← Destination+Source).
Exemple
MOV AX, 45h
ADD AX, 7 ; AX vaut maintenant 4Ch

2. ADC (Addition avec retenue) : Cette instruction effectue une addition, mais le
résultat varie en fonction de CF.
å Si CF=0 le résultat est le résultat de l’addition.
å Si CF=1 le résultat est incrémenté de 1.
Exemple
CF=1
AX = 45h
ADC AX, 2 ; AX vaut donc 48h
Si CF= 0, alors AX vaudrait 47h

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 21


Instructions arithmétiques

3. INC (Incrémentation) : Cette instruction incrémente de 1 l’opérande.

Exemple
MOV AX,18h
INC AX ; AX contient 19h

4. SUB (Soustraction) : Cette instruction soustrait le deuxième opérande au premier :


(Destination ← Destination-Source).

Exemple
MOV AX,18h
SUB AX, 5 ; AX vaut maintenant 13h

5. SBB (Soustraction avec retenue) : Elle fait aussi une soustraction, mais décrémente
en plus de 1 le résultat, si CF=1.

Exemple
MOV AX, 18h
CF=1
SBB AX, 5 ; AX vaut maintenant 12h

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 12 / 21


Instructions arithmétiques

6. DEC (Décrémentation) : Cette instruction décrémente de 1 l’opérande.


Exemple
MOV AX, 18h
DEC AX ; AX contient 17h

7. CMP (Comparaison) : Cette instruction effectue une soustraction (comme SUB),


mais ne stocke pas le résultat, seuls les indicateurs sont modifies.
Exemple
MOV AL, 40h
MOV AH, 30h
CMP AL, AH ; Résultat ← AL - AH.
Plus la mise à jour des indicateurs : CF ← 0 ; OF ← 0 ; SF ← 0 ; ZF ← 0.
On peut dire que AL 6= AH ou AL est plus grand que AH.

8. NEG (Negation) :Cette instruction effectue un complément à 2 sur l’opérande. En


fait, inverse chaque bit de l’opérande et lui ajoute 1. Les indicateurs modifiés : OF - PF
- SF - ZF
Exemple
MOV AX,0000 1000b (+8)
NEG AX ; AX= 1111 0111 + 0000 0001= 1111 1000 (-8)
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 13 / 21
Instructions arithmétiques

9. MUL (Multiplication ) : Cette instruction effectue une multiplication non signée de


l’opérande source avec l’accumulateur :
Syntaxe : MUL Source.
Si la source est un octet : AX ← AL*Source
Si la source est un mot : DX AX ← AX*Source
Les indicateurs affectés : CF,OF.
Les indicateurs ZF, SF et PF sont inconnus.

Exemple
MOV AL, 20h
MOV CL, 02h
MUL CL ; AX ← AL*CL ; AX=20h*02h=40h.

10. IMUL (Multiplication signée) : Cette instruction a le même principe de


fonctionnement que l’instruction MUL, mais elle supporte les nombres signés.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 14 / 21


Instructions arithmétiques

11. DIV (Division ) : Cette instruction effectue une division non signée de l’accumulateur
par l’opérande source :
Syntaxe : DIV Source.
Si la source est un octet : AL ← AX/Source et AH ← Reste.
Si la source est un mot : AX ← (DX AX)/Source et DX ← Reste
Les indicateurs CF, OF, ZF, SF et PF sont inconnus.

Exemple
MOV DX,0000h
MOV AX,2000h
MOV CX,0002h
DIV CX ; AX ← (DX AX)/CX
;AX ← (00002000h)/2=1000h et DX ← 0000h

12. IDIV (Division signée) : Cette instruction a le même principe de fonctionnement que
l’instruction DIV, mais elle supporte les nombres signés.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 15 / 21


Instructions arithmétiques

13. CBW (Convert Byte to Word)


Permet de doubler la taille de l’opérande signé (Byte → Word).
Reproduit le bit 7 (bit de signe) de AL dans AH jusqu’à remplissage de ce dernier.
.
...................
...................
...................
...................
...................
...................
14. CWD (Convert Word to Doubleword)
Permet de doubler la taille de l’opérande signé (Word → Doubleword).
Reproduit le bit 15 (bit de signe) de AX dans DX jusqu’à remplissage de ce dernier.
.
...................
...................
...................
...................
...................
...................
...................
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 16 / 21
Instructions logiques

1. AND : ET logique entre la destination et la source, le résultat est mis dans la


destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.
Exemple
MOV AH,1001 1101b
MOV BH,0110 1101b
AND AH, BH ; AH ← AH ET BH= 0000 1101b

2. OR : OU logique entre la destination et la source, le résultat est mis dans la


destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.
Exemple
MOV AH,1001 1101b
MOV BH,0110 1101b
OR AH, BH ; AH ← AH OU BH =1111 1101b

3. XOR : OU exclusif entre la destination et la source, le résultat est mis dans la


destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.
Exemple
MOV AH,1001 1101b
MOV BH,0110 1101b
XOR AH, BH ; AH← AH XOR BH=1111 0000b

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 17 / 21


Instructions logiques

4. NOT : Négation logique de la destination, le résultat est mis dans la destination.


Exemple
MOV AX,1001 1101 1110 0110b
NOT AX ;AX= 0110 0010 0001 1001b
.....................
5. TEST : ET logique entre la destination et la source pour positionner les indicateurs
sans modification de destination.
Syntaxe :
TEST Dest, Src ; Résultat ← Dest (ET) Src.
. ; Plus la mise à jour des indicateurs.
Exemple
.....................
.....................
.....................
.....................
.....................
.....................
.....................
.....................
.....................
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 18 / 21
Instructions de tarnsferts

1. XCHG :Exchange
Elle permet de permuter la source avec la destination.

Exemple
....................
....................
....................
....................
....................

2. LEA : Load Effective Address


Transfère l’adresse d’offset de la source dans le registre de destination (de type index ou
base).

Exemple
....................
....................
....................
....................
....................
....................
....................

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 19 / 21


Instructions de tarnsferts

3. XLAT : Translate
Permet de remplacer le contenu du registre AL par un octet de la Tab1.
Syntaxe d’utilisation :
On place l’adresse de la Tab1 dans le registre BX
MOV BX, offset Tab1
On place l’indice de l’octet à consulter dans AL
MOV AL, indice ;0 ≤ indice ≤ 255
XLAT ; AL ← [DS :BX+AL].

Exemple
MOV BX, offset Tab_Src
MOV AL, 03h
XLAT
..
..
..
..

4. LAHF :Load AH from Flags


Charge AH par les 8 bits du poids faible de registre d’état.
5. SAHF : Store AH into Flags
Place le contenu de AH dans l’octet de poids faible du registre d’état.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 20 / 21
Instructions de tarnsferts

6. LDS : Load Data Segment


Charge le contenu d’une adresse 32 bits dans le registre destination de 16 bits et le
registre de segment DS.

Exemple
MOV SI, 0100h
LDS BX, WORD PTR [SI]
;BX ← le contenu de la case mémoire 16 bits (DS :SI)
;DS ← le contenu de la case mémoire 16 bits (DS :SI+2)
..
..
..
..
..
..
..
..

7. LES : Load Extra Segment


Cette instruction est semblable à l’instruction LDS, mais elle utilise le registre de
segment ES au lieu de DS.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 21 / 21

Architecture des ordinateurs


Chapitre n◦ 4: Jeu d’instructions (Partie II)

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 35
Plan

1 Instructions de décalages et de rotations

2 Instructions de branchement

3 Instructions de contrôle du CPU

4 Instructions de chaînes de caractères

5 Instructions d’E/S

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 35


Instructions de décalages et de rotations

En mode immédiat, seuls les décalages et rotations de 1 bit peuvent se réaliser. Pour
réaliser des décalages ou rotations de plusieurs bits, il faut explicitement utiliser le
registre CL.

Syntaxe
Opération Destination, N
å Si N=1 alors la syntaxe devienne :
Opération Destination, 1.
å Sinon le nombre de décalage a effectué sur la destination mettre dans CL :
MOV CL, N
Opération Destination, CL
La destination peut être : registre, mémoire.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 35


Instructions de décalages et de rotations

1. SHR (SHift Right)


Décale à droite de x positions, x contenu dans le deuxième opérande, les bits entrant
sont mis à 0 , les bits sortant sont placés successivement dans CF, sans conservation,
celui-ci prend donc la valeur du dernier bit sorti.
Les FLAG affectés : CF OF
Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions.
MOV AH,1011 0111 MOV CL,5
SHR AH, CL
AH=00000101
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 35
Instructions de décalages et de rotations

2. SHL (SHift Left)


Effectue un décalage des bits du premier opérande, les bits sortant sont insérés dans CF,
les bits entrant sont mis à 0.
Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions.
MOV AH,1011 0111 MOV CL,5
SHL AH, CL
AH=1110 0000
3. SAL (Shift Arithmetic Left)
Cette instruction est identique à SHL.
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 35
Instructions de décalages et de rotations

4. SAR (Shift Arithmetic Right)


Cette instruction effectue un décalage vers la droite, le nombre de positions à décaler est inscrit
dans le second opérande. Le bit sortant est mis dans CF, et le bit rentrant varie en fonction du
signe du nombre au départ ; si au départ le nombre était positif, tous les bit entrant seront de 0,
sinon, l’inverse. Comme le carry (CF) prend successivement les valeurs des bits sortant, après
cette instruction CF est égal au dernier bit sorti.

Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions vers la droite.
MOV AH, 0101 1100 MOV CL,4
SAR AH, CL
AH= 0000 0101
CF=1

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 35


Instructions de décalages et de rotations

5. ROR (ROtate Right)


A peu près le même style que les instructions précédentes, les bits sont décalés vers la droite,
mais, cette fois, le bit sortant est injecté dans CF et dans le bit de poids fort.

Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions vers la droite.
MOV AH,1011 0111
MOV CL,5
ROR AH, CL
AH= 0111 1101 ......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 35


Instructions de décalages et de rotations

6. ROL (ROtate Left)


Idem ROR, mais décale sur la gauche.

Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions vers la gauche.
MOV AH,1011 0111
MOV CL,5
ROL AH, CL
AH=1111 0110 ......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 35


Instructions de décalages et de rotations

7. RCR (Rotate trought Cary Right)


Cette instruction agit sur les bits de l’opérande, elle les décale de x vers la droite. Le bit contenu
dans CF prend la position du bit le plus fort, puis CF prend la valeur du bit sortant. X est la
valeur contenu dans le deuxième opérande.

Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions.
On sait que CF=0
MOV AH,1011 0111 MOV CL,5
RCR AH, CL
AH=01110101
CF=1
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 35
Instructions de décalages et de rotations

8. RCL (Rotate trought Cary Left)


Idem RCR, mais déplace les bits vers la gauche.

Synoptique de décalage

Exemple
On va décaler le registre AH de 5 positions.
On sait que CF=1
MOV AH,1011 0111
RCL AH,5
AH=1111 1011
CF=0

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 35


Instructions de branchement Branchement inconditionnel

L’instruction JMP permet d’effectuer un saut inconditionnel. L’opérande de cette


instruction est donc l’adresse de l’instruction à laquelle on veut sauter.
Les indicateurs modifiés : Aucun

Exemple

MOV AX,34h
NOT AX
JMP label1 ⇒ XOR est sauté.
XOR AX,AX
label1 : ......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 35


Instructions de branchement Branchement conditionnel

Ces instructions permettent de sauter "une partie d’un programme" suivant une
condition.
Si la condition est vérifiée le CPU saute à l’instruction demandée, dans le cas
contraire il ignore cette instruction et passe automatiquement à l’instruction
d’après, comme si cette instruction n’existait pas.
Toutes ces instructions ont la forme générale suivante : JXX label.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 12 / 35


Instructions de branchement Branchement conditionnel

Les tests d’indicateurs

Instruction Condition Définition


JZ ZF=1 Saut si égal ou zéro
JNZ ZF=0 Saut si pas égal ou pas zéro
JC CF=1 Saut si carry
JNC CF=0 Saut si pas carry
JS SF=1 Saut si signe
JNS SF=0 Saut si pas de signe
JO OF=1 Saut si overflow
JNO OF=0 Saut si pas overflow

Exemple :
......
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 13 / 35


Instructions de branchement Branchement conditionnel

Les tests de nombres non signés

Instruction Condition Définition


JA ou JNBE Dest>Src A(Supérieur) ou NBE (Pas inférieur ou égal)
JAE ou JNB Dest>=Src AE(Supérieur ou égal) ou NB(Pas inférieur)
JB ou JNAE Dest<Src B(Inférieur) ou NAE(Pas supérieur ou égal)
JBE ou JNA Dest<=Src BE (Inférieur ou égal) ou NA (Pas supérieur)
JE ou JZ Dest=Src E (égal) ou Z (zéro)
JNE ou JNZ Dest6= Src NE (Saut si pas égal) ou NZ (Pas zéro)

Exemple
......
......
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 14 / 35
Instructions de branchement Branchement conditionnel

Les tests de nombres signés

Instruction Condition Définition


JG ou JNLE Dest>Src G (Plus grand) ou NLE (Pas plus petit ou égal)
JNG ou JLE Dest<=Src NG (Pas plus grand) ou LE (Plus petit ou égal)
JGE ou JNL Dest>=Src GE (Plus grand ou égal) ou NL (Pas plus petit)
JNGE ou JL Dest<Src NGE (Pas plus grand ou égal) ou L (plus petit)
JE ou JZ Dest=Src E (égal) ou Z (zéro)
JNE ou JNZ Dest6= Src NE (Saut si pas égal) ou NZ (Pas zéro)

Exemple 1
......
......
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 15 / 35
Instructions de branchement Branchement conditionnel

Les tests de nombres signés

Exemple 2
......
......
......
......
......
......
......
......

Exemple 3
......
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 16 / 35
Instructions de branchement Branchement conditionnel

Les tests de nombres signés

Exemple 4
......
......
......
......
......
......
......

Exemple 5
......
......
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 17 / 35
Instructions de branchement Branchement conditionnel

Les boucles

A. LOOP (Boucle fixe)

Cette instruction effectue une répétition tant que CX n’est pas égal à zéro. A chaque
itération, CX est décrémenté d’une unité.
⇒ CX ← CX-1 et saute vers label spécifie si CX 6= 0.
Exemple 1
......
......
......
......
......

Exemple 2
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 18 / 35
Instructions de branchement Branchement conditionnel

Les boucles

B. LOOPE ou LOOPZ (égal ou égale à zéro)

Cette instruction a le même fonctionnement que l’instruction LOOP, elle décrémente de


1 CX et saute vers label spécifie si CX 6= 0, mais, de plus, elle saute au label que si
ZF=1.
⇒ CX ← CX-1 et saute vers label spécifie si ZF=1 et CX 6= 0.

Exemple :
......
......
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 19 / 35


Instructions de branchement Branchement conditionnel

Les boucles

C. LOOPNE ou LOOPNZ (pas égal ou pas zéro)

Cette instruction a le même fonctionnement que l’instruction LOOP, elle décrémente de


1 CX et saute vers label spécifie si CX 6= 0, mais, de plus, elle saute au label que si
ZF=0.
⇒ CX ← CX-1 et saute vers label spécifie si ZF=0 et CX 6= 0.

Exemple :
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 20 / 35


Instructions de contrôle du CPU

CLC : Positionner l’indicateur CF à 0.


Syntaxe : CLC ; sans opérande CF ← 0.
STC : Positionner l’indicateur CF à 1.
Syntaxe : STC ; sans opérande CF ← 1.
CMC : Complémenter le carry FLAG.
Syntaxe : CMC ; sans opérande CF ← CF .
CLD : Positionner l’indicateur DF (Direction Flag) à 0.
Syntaxe : CLD ; sans opérande DF ← 0.
STD : Positionner l’indicateur DF à 1.
Syntaxe : STD ; sans opérande DF ← 1.

Remarque
DF indique le sens du traitement des chaînes. Si DF est placé à 1, SI et DI sont
décrémentés et les chaînes sont traitées de droite à gauche, lorsque DF placé à 0, SI et
DI sont incrémentés et les chaînes sont traitées de gauche à droite.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 21 / 35


Instructions de chaînes de caractères Load String (LODSB, LODSW)

Chargement d’un Byte ou un word depuis DS :SI dans AL ou AX, plus la mise à jour de
l’indexe SI selon DF. Le registre d’état reste inchangé.

Syntaxe : LODS(B ou W) ; sans opérande.

Le cas de AL : Le cas de AX :
LODSB ; AL ← [DS :SI]. LODSW ; AX ← [DS :SI].
; SI ← SI± 1 selon DF. ; SI ← SI±2 selon DF.

Exemple
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 22 / 35


Instructions de chaînes de caractères STOre String (STOSB, STOSW)

Copie le contenu de AL ou AX dans la case mémoire pointer par ES :DI plus la mise à
jour de l’indexe DI selon DF. Le registre d’état reste inchangé.

Syntaxe : STOS(B ou W) ; sans opérande.

Le cas de AL : Le cas de AX :
STOSB ; [ES :DI] ← AL. STOSW ; [ES :DI] ← AX.
; DI ← DI± 1 selon DF. ; DI ← DI±2 selon DF.

Exemple
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 23 / 35


Instructions de chaînes de caractères SCAn String (SCASB, SCASW)

Comparaison entre la case mémoire pointer par ES :DI avec AL ou AX, plus la mise à
jour de l’indexe DI selon DF et le registre d’état.
Syntaxe : SCAS(B ou W) ; sans opérande.
Le cas de AL : Le cas de AX :
SCASB ; CMP [ES :DI], AL SCASW ; CMP [ES :DI], AX
; DI ← DI± 1 selon DF. ; DI ←DI± 2 selon DF.
; mise à jour de registre d’état. ; mise à jour de registre d’état.

Exemple
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 24 / 35


Instructions de chaînes de caractères MOVe String (MOVSB, MOVSW)

Copie le contenu de la case mémoire pointer par DS :SI dans la case mémoire pointer
par ES :DI, plus la mise à jour les indexes SI et DI selon DF. Le registre d’état reste
inchangé.
Syntaxe : MOVS(B ou W) ; sans opérande.

Le cas d’une case mémoire 8 bits : Le cas d’une case mémoire 16 bits :
MOVSB ; [ES :DI] ← [DS :SI] MOVSW ; [ES :DI] ← [DS :SI]
; SI ← SI± 1 selon DF. ; SI ← SI± 2 selon DF.
; DI ← DI± 1 selon DF. ; DI ← DI± 2 selon DF.

Exemple
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 25 / 35


Instructions de chaînes de caractères CoMPare String (CMPSB, CMPSW)

Comparaison entre la case mémoire pointer par ES :DI avec la case mémoire pointer par
DS : SI, plus la mise à jour des indexes SI, DI selon DF et le registre d’état.
Syntaxe : CMPS(B ou W) ; sans opérande.

Le cas d’une case mémoire 8 bits : Le cas d’une case mémoire 16 bits :
CMPSB ; CMP [ES :DI],[DS :SI] MOVSW ; CMP [ES :DI],[DS :SI]
; SI ← SI± 1 selon DF. ; SI ← SI± 2 selon DF.
; DI ← DI± 1 selon DF. ; DI ← DI± 2 selon DF.
; mise à jour de registre d’état. ; mise à jour de registre d’état.

Exemple
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 26 / 35


Instructions de chaînes de caractères Le préfixe REP

REP décrément automatiquement CX est test est ce qu’il est égal à zéro ou non. Si
CX = 0 REP s’arrêt. Les instructions qui utilisent REP sont : MOVS, LODS et STOS.
Algorithme de fonctionnement
Si CX 6= 0 alors
1- On exécute l’instruction de traitement de chaîne.
2- CX ← CX - 1.
3- Répéter.
Sinon
Sort de la boucle de répétition.
Fin si.
.
......
......
......
......
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 27 / 35
Instructions de chaînes de caractères Le préfixe REPE et REPZ

Dérivé de REP, cette instruction continu la répétition tant que CX 6= 0 et ZF=1. Cette
instruction est très intéressante pour comparer si deux chaînes sont identiques.

Algorithme de fonctionnement
Si CX 6= 0 alors
1- On exécute l’instruction de traitement de chaîne.
2- CX ← CX-1.
3- Si ZF=1 alors répéter.
Sinon
Sort de la boucle de répétition.
Fin si
Sinon
Sort de la boucle de répétition.
Fin si.

Exemple :
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 28 / 35
Instructions de chaînes de caractères Le préfixe REPNE et REPNZ

Toujours un dérivé de REP, cette instruction continu la répétition tant que CX 6= 0 et


ZF=0.
Algorithme de fonctionnement
Si CX 6= 0 alors
1- On exécute l’instruction de traitement de chaîne
2- CX ← CX-1
3- Si ZF=0 alors répéter
Sinon
Sort de la boucle de répétition
Fin si
Sinon
Sort de la boucle de répétition
Fin si

Exemple :
......
......
......
......
......
......
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 29 / 35
Instructions d’E/S Interruption

Une interruption termine l’exécution séquentielle des instructions par le CPU.


Lors d’une interruption, l’exécution du programme principal est suspendue.
Lorsque l’interruption est exécutée le programme principal est continué.

Exemple
Lorsque la souris est déplacée, le programme en cours est suspendue pendant un bref
instant pour gérer ce déplacement.

Q. Comment fait-on pour écrire une chaîne de caractères à l’écran ? Ou bien pour lire un
caractére entré au clavier ?
å On peut faire appel à des fonctions (affichage, saisie, ...) du MS-DOS à partir d’un
programme écrit en langage assembleur, grâce à l’instruction INT (interruption)
suivie du numéro de l’interruption ;
å Sur le PC, les interruptions sont spécifiées par un numéro sur 8 bits : il y’a donc
256 interruptions différentes (int 00h à int FFh) ;
å L’interruption 21h (INT 21h) offre un regroupement de tous les services offert par
le MS-DOS ;
å Le numéro de la fonction requise doit être placé dans le registre AH (AH allant de
00H à 71H) ;
ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 30 / 35
Instructions d’E/S La fonction 02H

å Rôle : Affichage d’un caractère.


å Entrées :
AH = 02h
DL = le code ASCII du caractère à afficher
å Sortie : Affichage du caractère.

Exemple
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 31 / 35


Instructions d’E/S La fonction 09H

å Rôle : Affichage d’une chaîne de caractères


å Entrées :
AH = 09h
DX = offset de la chaîne de caractères
å Sortie : Affichage de la chaîne de caractères.

Exemple
......
......
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 32 / 35


Instructions d’E/S La fonction 08H

å Rôle : Saisie d’un caractère au clavier sans sortie (sans écho).


å Entrée :
AH = 01h
å Sortie :
AL = Le code ASCII du caractère lu
Exemple
......
......
......
......
......
......

Remarque
La fonction 01h : Même principe que la fonction 08h, mais avec une sortie (avec écho).

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 33 / 35


Instructions d’E/S La fonction 0AH

å Rôle :Saisie d’une chaîne de caractères


å Entrées :
AH = 0Ah
DX = Adresse d’offset du buffer (mémoire tampon)
å Sortie : La chaîne de caractère lue est placée dans un buffer à l’adresse DS :DX.
Exemple
......
......
......
......
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 34 / 35


Instructions d’E/S La fonction 4CH

å Rôle : Terminer un programme


å Entrée :
AH = 4Ch
å Sortie :
Fin du programme

Exemple
......
......
......
......
......
......
......
......

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 35 / 35


Architecture des ordinateurs
Chapitre n◦ 5: Langage assembleur

ISMAILI ALAOUI El Mehdi 1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique


ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 1 / 11

Plan

1 Langage machine
Définition

2 Langage assembleur
Définition
Les avantages
Les inconvénients

3 De l’écriture du programme à son exécution

4 Outils de programmation
Le compilateur
Le débogueur

5 Structure du programme source


Exemple

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 2 / 11


Langage machine Définition

Le langage machine appelé aussi langage binaire (c’est-à-dire le langage qu’utilise


l’ordinateur, plutôt le CPU) ;
Le langage machine est la suite de bits qui est interprétée par le CPU lors de
l’exécution d’un programme.
å C’est le langage natif du CPU ;
å C’est le seul compris par le CPU.

Chaque type de CPU comprend son propre langage machine ;


Ce langage est très difficile à maîtriser puisque chaque instruction est codée par
une séquence propre de bits. Afin de faciliter la tâche du programmeur, on a créé
un langage assembleur.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 3 / 11


Langage assembleur Définition

Historiquement, le langage assembleur a été le premier langage de programmation


non binaire accessible au programmeur ;
Un langage permet de décrire les instructions élémentaires qui manipulent dans le
CPU les registres, l’accès à la mémoire ;
Un langage qui permet au programmeur :
ã D’utiliser des codes symboliques (MOV, ADD, DIV, etc.) au lieu des codes
numériques des opérations.
Exemple : Additionner 2 et 3 produit le code suivant en langage assembleur :
MOV AX,2
ADD AX,3
Traduit en langage binaire, il donnera :
10101011 00000010 00000000 (AB 02 00 en hexa)
11011011 00000011 00000000 (DB 03 00 en hexa)
ã D’utiliser les adresses symboliques (étiquettes) au lieu des adresses
numériques des emplacements mémoire.
å Le langage assembleur est la représentation symbolique du langage machine ;
å Le code en langage assembleur est la version lisible du code machine.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 4 / 11


Langage assembleur Les avantages

Le langage assembleur est donc un langage de très bas niveau. Cela signifie qu’il
est plus proche du langage machine ;
å Permet une meilleure connaissance du fonctionnement de la machine ;
Contrairement aux langages évolués (C++, Java, etc), il permet d’exploiter au
maximum les ressources de la machine. Il ne cache rien au programmeur ;
Permet une vitesse d’exécution supérieure à celle d’un programme écrit en langage
évolué ;
Utilisé pour la programmation de cartes graphiques, cartes sons et autres
problèmes de transmission de données ;
Également utilisé pour écrire les compilateurs des langages évolués ;
Enfin, l’apprentissage de la programmation en langage assembleur permet de
mieux comprendre le fonctionnement des autres langages et ainsi d’écrire des
programmes plus performants.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 5 / 11


Langage assembleur Les inconvénients

Le langage assembleur est propre à chaque type du CPU. On dit que le langage
assembleur est un langage "orienté machine" car il nécessite de penser d’abord à la
machine avant de penser au problème à résoudre ;
å Absence de portabilité
å Il n’existe pas un langage assembleur, mais un langage assembleur par type
de CPU.
En général, il faut beaucoup de lignes de code pour faire pas grand chose ;
å Très compliqué et fatiguant ;
å Le temps de programmation plus long.

Remarque : Assembleur # Langage assembleur


Un assembleur est un programme qui prend un code source écrit en langage
assembleur et le transforme en code machine
å Un assembleur = compilateur.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 6 / 11


De l’écriture du programme à son exécution

L’exécution de programme source se déroule en qutre étapes :

1 L’édition : La saisie du programme source au clavier nécessite un éditeur de texte.


Ce programme doit sauvegardé avec un nom suivi de l’extension .asm.

2 La compilation (l’assemblage) : Consiste à traduit chaque instruction du


programme source en une instruction machine. Le résultat de l’assemblage est
enregistré dans un fichier avec l’extension .obj.

3 L’édition de liens : Combine plusieurs fichiers objets afin de former un seul fichier
complet et exécutable, avec l’extension .exe.

4 Exécution du programme : Un utilitaire spécial du système d’exploitation, le


chargeur est responsable de la lecture du fichier exécutable, de son implantation en
mémoire principale, puis du lancement du programme.

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 7 / 11


Outils de programmation Le compilateur

Il existe plusieurs compilateurs pour programmer en langage assembleur. Les plus connus
sont :

Masm (Microsoft Assembler) : Pour MSDOS, Windows.


Nasm (Netwide Assembler) : Pour MSDOS, Windows et Linux.
Fasm (Flat Assembler) : Pour MSDOS, Windows et Linux.
Tasm (Turbo Assembler) : Pour MSDOS et Windows.
NBAsm (New Basic Assembler) : Pour MSDOS seulement.
...

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 8 / 11


Outils de programmation Le débogueur

Il est pratiquement indispensable d’utiliser un débogueur lorsqu’on programme en


assembleur. Un bon débogueur permet :

De créer des points d’arrêt (breakpoints) lors de l’exécution du programme ;


D’exécuter un programme pas à pas , i.e. instruction par instruction pour trouver
une erreur ;
De visualiser le contenu des registres du CPU ;
De visualiser le contenu de la mémoire ;

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 9 / 11


Structure du programme source

Stack segment
dw 256 dup(0) ; ici on réserve la taille de la pile (Stack)
Ends
Data segment
. ; Ici on déclare les variables
Ends
Code segment
. ; Ici on déclare les fonctions locales, globales et externes
Main : ;Point d’entrée du code
Assume CS :Code, DS :Data, SS : Stack
. ;Assume permettant d’initialiser les registres de segments CS, DS et SS
MOV AX, Data ; Initialisation du segment de données
MOV DS, AX
MOV AX, Stack ; Initialisation du segment de Pile
MOV SS, AX
—————————————————————-
. ; À partir d’ici on peut placer nos lignes de code
—————————————————————-
Fin : MOV AH, 4Ch
... : INT 21h
Ends

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 10 / 11


Structure du programme source Exemple

Stack segment
dw 256 dup(0)
Ends
Data segment
msg : db "Bienvenue au monde de l’assembleur !$"
Ends
Code segment
Main :
Assume CS :Code, DS :Data, SS : Stack
MOV AX, Data
MOV DS, AX
MOV AX, Stack
MOV SS, AX
MOV DX,msg
MOV AH,09h
INT 21h
Fin :
MOV AH, 4Ch
INT 21h
Ends

ISMAILI ALAOUI El Mehdi Architecture des ordinateurs Filière: SMI-4 11 / 11


Architecture des ordinateurs

Filière: SMI4 A.U: 2018/2019

Prise en main d’emu8086

Dans un premier temps, pour simplifier l’apprentissage de l’assembleur, nous allons tra-
vailler sur Emu8086 (émulateur logiciel qui simule un microprocesseur).
Emu8086 combine un éditeur de texte, un compilateur (FASM), un débogueur, et un émulateur
de logiciel dans un programme simple fonctionnant sur la plate-forme de Windows.
Le fichier squelette.asm (Figure 1) est un fichier que nous vous fournissons pour vous aider à
écrire vos programmes assembleur. Copiez le fichier dans C:/emu8086/MyBuild, puis lancez
l’Emu8086, ouvrez le fichier avec Emu8086.
Emu8086 se présente dans un premier temps comme un éditeur de texte classique, avec le sup-
port d’une colorisation syntaxique du code assembleur (mode éditeur).

Figure 1 – squelette.asm
2

Le fichier squelette.asm contient la déclaration d’un segment de pile de 512 octets, la dé-
claration d’un segment de données vide ainsi que la déclaration d’un segment de code. Dans
ce dernier, on retrouve la directive ASSUME permettant d’initialiser les trois registres de seg-
ments CS, DS et SS. On trouve aussi une zone de déclaration de fonctions publiques , une zone
de déclaration de fonctions externes, une zone de déclaration de fonctions locales, puis du code
assembleur.
Ce code débute par l’étiquette debut, puis on retrouve l’initialisation des segments de données
et de pile. Un espace réservé à l’écriture de vos programmes suit ces éléments. Enfin, l’étiquette
fin indique (informellement) la fin du programme. Les deux lignes suivantes correspondent à
l’appel standards de l’interruption DOS dont le rôle est de terminer d’un programme de manière
normal (libération de la mémoire, ...). Ensuite on trouve la fin du segment de code puis celle du
programme.
Pensez lorsque vous écrirez un programme à bien partir de ce fichier squelette en le sauvegar-
dant sous un autre nom avant de le modifier.
Créez un fichier TP1.asm identique au fichier squelette.asm. Compilez et exécutez le pro-
gramme (bouton RUN). Validez la fin de l’exécution avec OK.
Deux nouvelles fenêtres viennent de s’ouvrir, il s’agit du mode exécution de l’émulateur (Figure
2).
– La fenêtre "original source code" contient le code tel que vous l’avez écrit. La ligne
surlignée en jaune est la prochaine instruction qui va être exécutée. Comme on le verra
plus loin dans les TPs.
– La fenêtre "emulator": contient 4 zones que nous allons détailler ci-dessous:

1. Les boutons vont nous permettre d’exécuter notre programme soit pas à pas, i.e.
instruction par instruction avec la possibilité de revenir en arrière, soit automatique-
ment (en pouvant régler un délai d’attente entre chaque instruction).
Réinitialisez votre programme (reload) puis exécutez-le pas à pas (single step et
back step) jusqu’à la fin. Faites une nouvelle réinitialisation, réglez le délai sur 400
ms et faites une exécution normale (run).

2. La deuxième zone contient une représentation des registres, et permet de visualiser


leur valeur hexadécimale tout au long de l’exécution de votre programme. On notera
que les registres AX, BX, CX et DX sont représenter couper en deux. Cela permet
de visualiser simplement leur décomposition en registres 8 bits. Il est possible de
modifier la valeur des registres de cette manière (simple clic) ou d’ouvrir une vue
détaillée du registre (double clic).

3. La troisième zone représente la mémoire octet par octet. Sur une ligne, on retrouve
3

l’adresse mémoire sur 20 bits, la valeur de l’octet en hexadécimale, en décimale et


sa représentation en ASCII.
4. La quatrième zone contient le code de votre programme une fois les traductions
d’adresses terminées. Il n’y a plus aucune étiquette ni nom de variable. Il s’agit du
code réellement exécuté.

Figure 2 – Mode exécution de l’émulateur.

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy