ARCHITECTURE DES ORDINATEURS
ARCHITECTUREDESORDINATEURS
Filière : InfoTronique
Chap. 1 : Introduction à l’architecture des
Ch
d
1 I t d ti
à l’
hit
t
ordinateurs et à la programmation en assembleur
ordinateurs et à la programmation en assembleur
Dr. Abdelhakim Khouas
Dr Abdelhakim Khouas
Email : [email protected]
Département de Physique
Faculté des Sciences
F
lté d
S i
Objectif de ce chapitre
Survoler les éléments de base d’un ordinateur et la
programmation en assembleur
(cid:138) Les éléments importants d’un ordinateur et leur utilité
p
(cid:153) Le microprocesseur
(cid:153) La mémoire
(cid:153) Bus de communication
(cid:153) Bus de communication
(cid:153) Périphériques d’entrée/sortie
(cid:138) Programmation en assembleur 8086
(cid:153) Les instructions et leur codage
(cid:153) Jeux d’instructions
Utilisation de DEBUG
(cid:138) Utilisation de DEBUG
(cid:153) Assemblage et désassemblage et exécution d’un programme en
assembleur, scrutation et modification du contenu de la mémoire,
affichage et modification du contenu des registres
affichage et modification du contenu des registres
Architecture –Chap. 1
1
© A. Khouas, 2009
Plan
Introduction
1. Architecture des ordinateurs
1. Microprocesseur
2. Mémoire
/
q
3. Périphériques d’entrée/sortie
4. Bus de communication
p
2. Programmation en assembleur
1
1. Programme assembleur
Programme assembleur
2. Les instructions
3.
4. Codage en mémoire des instructions
Jeux d’instructions
é
3. Utilisation de DEBUG
1. Lancement de DEBUG
1. Lancement de DEBUG
2. Les paramètres des commandes de DEBUG
3. Les commandes de DEBUG
Conclusion
Conclusion
Architecture –Chap. 1
2
© A. Khouas, 2009
Introduction
Pour mieux comprendre le fonctionnement d un
Pour mieux comprendre le fonctionnement d’un
ordinateur, il est très recommandé de pouvoir
manipuler les différents éléments le composant
(cid:138) Comprendre le fonctionnement et l’exécution des
p
instructions de bas niveau de la machine
(cid:138) Écrire et exécuter par le microprocesseur des programmes
en langage machine (langage assembleur)
(cid:138) Manipuler la mémoire de l’ordinateur
(cid:138) Manipuler les registres internes
(cid:138) Accéder aux périphériques de l’ordinateur
Architecture –Chap. 1
3
© A. Khouas, 2009
Introduction
Connecteurs d’entrée/sortie
Slots pour la mémoire
Microprocesseur
Ports IDE
Port AGP
Port PCI
HorlogeHorloge
Contrôleur de la carte ou Chipset
Port ISA
PortISA
Exemple de carte mère pour
ancien processeur d Intel
ancien processeur d’Intel
Architecture –Chap. 1
4
© A. Khouas, 2009
Introduction
Exemple de carte mère
Architecture –Chap. 1
5
© A. Khouas, 2009
Introduction
Ventilateur pour
V til t
CPU
Blocs de
refroidissement
pour CPU
Blocs de
refroidissement
pour Chipset
pourChipset
Barrette de
mémoire
mémoire
Exemple de carte
mère pour PC
mère pour PC
Architecture –Chap. 1
6
© A. Khouas, 2009
Introduction
Architecture –Chap. 1
7
© A. Khouas, 2009
Exemple de carte
mère pour PC
mère pour PC
Introduction
Exemple de carte mère pour PC
E
PC
l d
è
Architecture –Chap. 1
8
© A. Khouas, 2009
Plan
Introduction
)
1. Architecture d’un ordinateur (calculateur)
(
1. Microprocesseur
2. Mémoire
/
q
3. Périphériques d’entrée/sortie
4. Bus de communication
p
2. Programmation en assembleur
1
1. Programme assembleur
Programme assembleur
2. Les instructions
3.
4. Codage en mémoire des instructions
Jeux d’instructions
é
3. Utilisation de DEBUG
1. Lancement de DEBUG
1. Lancement de DEBUG
2. Les paramètres des commandes de DEBUG
3. Les commandes de DEBUG
Conclusion
Conclusion
Architecture –Chap. 1
9
© A. Khouas, 2009
1. Architecture d’un ordinateur
Architecture –Chap. 1
10
Architecture Von Newmann
ArchitectureVonNewmann
: schéma 1
Réf. : Architecture des ordinateurs
Emmanuel Viennet
© A. Khouas, 2009
1. Architecture d’un ordinateur
Architecture –Chap. 1
11
Architecture Von
Newmann : schéma 2
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
1. Architecture d’un ordinateur
Architecture –Chap. 1
12
Architecture Von
Newmann : schéma 3
Réf. : Architecture des ordinateurs
Eric Garcia
© A. Khouas, 2009
1. Architecture d’un ordinateur
Architecture –Chap. 1
13
Architecture Von
Newmann : schéma 4
Réf. : Principe des microprocesseurs
Jaques BAUMANN
© A. Khouas, 2009
1. Architecture d’un ordinateur
Les 4 éléments importants d’un ordinateur sont :
(cid:138) Le microprocesseur (mP) qui est l’unité de calcul et de
traitement d’un ordinateur, il est composé :
(cid:138) La mémoire centrale pour sauvegarder les programmes et
les données
é
(cid:138) Les d’entrée/sortie pour communiquer avec les
périphériques
f i
L
B
(cid:138) Les Bus pour faire circuler les données
d
é
i
l
l
Architecture –Chap. 1
14
© A. Khouas, 2009
1.1 Microprocesseur
Le microprocesseur (μP) qui
Le microprocesseur (μP) qui
est l’unité de calcul et de
traitement d’un ordinateur
t
t d’
di
it
t
est composé de :
(cid:138) Unité arithmétique et
logique UAL (ALU) qui
effectue les opérations
effectue les opérations
(cid:138) Registres pour stocker les
données
données
Advertisement
(cid:138) Unité de contrôle qui
coordonne les opérations
Architecture –Chap. 1
15
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
1.1 Microprocesseur : UAL
L’unité arithmétique et logique est l’unité de traitement
t
d’un ordinateur, elle peut effectuer :
d’
ll
di
ff
t
t
(cid:138) Des opérations arithmétiques
(cid:138) Des opérations logiques
(cid:138) Des opérations de décalage et de rotation
(cid:138) Des opérations de comparaison
(cid:138) Des opérations de sauts et de branchement
Architecture –Chap. 1
16
© A. Khouas, 2009
1.1 Microprocesseur : UAL
À chaque opération particulière de l UAL correspond
À chaque opération particulière de l’UAL correspond
une instruction bien définie dans le langage
machine (langage assembleur de la machine)
Exemple : 8086
(cid:138) L’instruction : ADD AX,BX permet de faire l’addition des
contenus des registres AX et BX et sauvegarde le résultat
dans le registre AX.
(cid:138) L instruction : AND CX,DX permet de faire un ET logique
(cid:138) L’instruction : AND CX DX permet de faire un ET logique
des contenu des registres CX et DX et sauvegarde le
résultat dans le registre CX
Architecture –Chap. 1
17
© A. Khouas, 2009
1.1 Microprocesseur : UAL
L ensemble de toutes les instructions d une machine
L’ensemble de toutes les instructions d’une machine
constitue le jeu d’instructions de l’ordinateur (voir
annexe B : aide mémoire jeu d instructions du 8086)
annexe B : aide mémoire jeu d’instructions du 8086)
Pour exécuter un programme sur une machine donnée, il
Pour exécuter un programme sur une machine donnée, il
faut l’écrire avec seulement le jeu d’instructions de la
machine en question
q
Sous le programme DEBUG du 8086, la commande a
permet d’entrer un programme composé d’un ensemble
d’instructions du 8086
Architecture –Chap. 1
18
© A. Khouas, 2009
1.1 Microprocesseur : UAL
Exemple : Sous DEBUG du 8086
Exemple : Sous DEBUG du 8086
a 100 --rentre un programme à l’adresse 100 de la mémoire
(cid:138) MOV AX,0001
(cid:138) MOV
AX 0001
(cid:138) MOV BX,0010
(cid:138) MOV CX,0001
(cid:138) MOV
CX 0001
(cid:138) ADD AX,BX
(cid:138) AND BX,CX
(cid:138) AND
BX CX
(cid:138) INT
20
Ce programme permet de faire l’addition et un ET logique des
deux valeurs 0001 et 0010
Architecture –Chap. 1
19
© A. Khouas, 2009
1.1 Microprocesseur : Registres
Les registres sont des éléments mémoire de n bits ( n=
Les registres sont des éléments mémoire de n bits ( n=
taille du registre) qui permettent de stocker des données
et qui sont utilisés par le microprocesseur pour effectuer
et qui sont utilisés par le microprocesseur pour effectuer
les opérations
Sous le programme DEBUG du 8086, la commande r permet
d afficher le contenu de tous les registres du 8080
d’afficher le contenu de tous les registres du 8080
La commande r <reg> permet d’afficher et de modifier le
contenu du registre <reg>
Architecture –Chap. 1
20
© A. Khouas, 2009
1.1 Microprocesseur : Registres
)
La taille des registres du 8086 est de 16 bits (2 octets)
g
(
Les registres généraux du 8086 sont : AX, BX, CX, DX
Chaque registre général est composé de deux registres
é é
é
de 8 bits (1 octet)
(cid:138) AX = AH-AL
(cid:138) BX = BH-BL
(cid:138) CX = CH-CL
(cid:138) DX = DL-DL
AH, BH, CH, et DH sont les registres de poids fort, et AL, BL, CL, et DL
sont les registres de poids faible
sont les registres de poids faible
Architecture –Chap. 1
21
© A. Khouas, 2009
1.1 Microprocesseur : Registres
Exemple : Sous DEBUG du 8086
Exemple : Sous DEBUG du 8086
(cid:138) La commande r donne le résultat suivant :
AX=0011 BX=0000 CX=0001 DX=0000
SP=FFF0 BP=0000 SI=0000 DI=0000
DS=180D ES=180D SS=0000 CS=180D IP=010F
NV UP EI NG NZ NA PE NC
(cid:138) La commande r ax donne le résultat suivant :
AX 0011
: -- on peut entrer ici la nouvelle valeur pour AX
Architecture –Chap. 1
22
© A. Khouas, 2009
1.2 MÉMOIRE
La mémoire centrale est l élément ou sont sauvegardés les
La mémoire centrale est l’élément ou sont sauvegardés les
programmes à exécuter par l’ordinateur et les données
e
nécessaires à l’exécution des programme
écessa es à e écut o des p og a
La mémoire est organisée en plusieurs cellules de n bits
La mémoire est organisée en plusieurs cellules de n bits
chacune et chaque cellule à une adresse fixe permettant
d accéder en écriture ou en lecture à la cellule en question
d’accéder en écriture ou en lecture à la cellule en question
Pour le 8086, la mémoire est organisée en 220 cellules de 8
P
d 8
l 8086 l
220
i é
é
ll
l
i
bits (1 octet) ce qui donne une capacité de 1Go=256 Gbits
Architecture –Chap. 1
23
© A. Khouas, 2009
1.2 MÉMOIRE
données
255
254
253
253
BB
B6
2F
2F
FFh
FEh
FDh
FDh
Adresses en décimal
Adressesendécimal
Adresses en hexadéciml
Adressesenhexadéciml
4
3
2
2
1
0
9C
78
FA
FA
5D
3E
04h
03h
02h
02h
01h
00h
Organisation d’une mémoire de 256*8 bits (2048 bits ou 2kbits)
Architecture –Chap. 1
24
© A. Khouas, 2009
1.2 MÉMOIRE
p g
Sous le programme DEBUG du 8086, la commande d
<adr> permet d’afficher le contenu des 128 octets
(
(128*8 bits) de la mémoire à partir de l’adresse
spécifiée <adr>
p
)
,
La commande e <adr> permet de modifier le contenu
des cellules mémoires une à une à partir de l’adresse
à
l
d
spécifiée <adr>
ti d l’ d
é
à
ll
i
Remarque: Sous DEBUG, toutes les adresses sont en hexadécimal.
Architecture –Chap. 1
25
© A. Khouas, 2009
1.2 MÉMOIRE
UG du 8086
Exemple : Sous DEBUG du 8086
e p e Sous
(cid:138) Après avoir entrer le programme précédant, la commande d 100 a donné
le résultat ci-dessous
180D:0100 B8 01 00 BB 10 00 B9 01-00 01 D8 21 CB CD 20 00 ...........!.. .
180D:0110 00 00 00 00 00 00 00 00-00 00 00 00 34 00 FC 17 ............4...
180D 0110 00 00 00 00 00 00 00 00 00 00 00 00 34 00 FC 17
4
180D:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
180D:0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
180D:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
180D:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
180D:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
180D:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
180D:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Architecture –Chap. 1
26
© A. Khouas, 2009
2.2 MÉMOIRE
Exemple : Mémoire du 8086
(cid:138)13B0:0100 10 FF 00 05 01 00 BB FF-FF 83 C3 01 29 C0 21 D8 ............).!.
Adresse 100h
Segment 13B0de la mémoire
(La notion de segment sera vue
dans le chapitre sur les mémoires)
é
Advertisement
.
.
.
.
.
.
.
.
.
.
.
.
.
.
01
05
00
FF
FF
10
FFFFh
FFFEh
FDh
FDh
.
.
.
.
.
104h
0103h
0102h
0101h
0101h
0100h
.
.
0001h
0000h
Architecture –Chap. 1
27
© A. Khouas, 2009
1.3 Périphériques d’entrée/sortie
Le bloc E/S permet de faire communiquer le microprocesseur
avec les périphériques pour :
(cid:138) Entrer les données (clavier, souris, modem, …etc)
(cid:138) Sortir des résultats (écran, imprimante, modem, …etc)
Architecture Von Newmann
Architecture –Chap. 1
28
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
1.4 Bus de communication
Le bus permet de faire circuler les données entre les
Le bus permet de faire circuler les données entre les
différents blocs d’un ordinateur
Architecture Von Newmann
Architecture –Chap. 1
29
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
1.4 Bus de communication
Un bus permet de transférer N bits simultanément
(cid:138) N est la taille du bus
Il existe des bus :
(cid:138) 8 bits
(cid:138) 8 bits,
(cid:138) 16 bits,
(cid:138) 20 bits,
(cid:138) 20 bits
(cid:138) 24 bits,
32 bits,
(cid:138) 32 bits,
(cid:138) 64 bits.
Architecture –Chap. 1
30
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
1.4 Bus de communication
Il existe 3 types de bus :
1. Bus d’adresses : bus unidirectionnel pour le transfert des adresse
2. Bus de données : bus pour les transferts des données
3. Bus de commandes : Bus pour le transfert des signaux de commandes (e.g.
3. Bus de commandes : Bus pour le transfert des signaux de commandes (e.g.
signaux d’écriture et de lecture)
Architecture –Chap. 1
31
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
© A. Khouas, 2009
Plan
Introduction
1. Architecture des ordinateurs
1. Microprocesseur
2. Mémoire
/
q
3. Périphériques d’entrée/sortie
4. Bus de communication
p
2. Programmation en assembleur
1
1. Programme assembleur
Programme assembleur
2. Les instructions
3.
4. Codage en mémoire des instructions
Jeux d’instructions
é
3. Utilisation de DEBUG
1. Lancement de DEBUG
1. Lancement de DEBUG
2. Les paramètres des commandes de DEBUG
3. Les commandes de DEBUG
Conclusion
Conclusion
Architecture –Chap. 1
32
© A. Khouas, 2009
2. Programmation en assembleur
Le fonctionnement d’un microprocesseur (μP) consiste
à exécuter séquentiellement les instructions du
programme assembleur
programme assembleur
un programme assembleur est un ensemble
d instructions à exécuter séquentiellement par le μP
d’instructions à exécuter séquentiellement par le μP
Architecture –Chap. 1
33
© A. Khouas, 2009
2. Programmation en assembleur
Le fonctionnement d’un microprocesseur (μP) consiste
à exécuter séquentiellement les instructions du
programme assembleur
programme assembleur
un programme assembleur est un ensemble
d instructions à exécuter séquentiellement par le μP
d’instructions à exécuter séquentiellement par le μP
Architecture –Chap. 1
34
© A. Khouas, 2009
2.1 Programme assembleur
Exemple d un programme en assembleur du 8086
Exemple d’un programme en assembleur du 8086
MOV AX,0001
AX 0001
MOV
MOV BX,0010
MOV CX,0001
MOV
CX 0001
ADD AX,BX
AND BX,CX
BX CX
AND
20
INT
Ce programme permet de faire l’addition et un ET logique des
deux valeurs 0001 et 0010
Architecture –Chap. 1
35
© A. Khouas, 2009
2.2 Les instructions
L’instruction est une opération de base qui peut être
décodée et exécutée par le μP
Chaque instruction représente une opérations de base
qui peut être exécutée par le μP
qui peut être exécutée par le μP
Exemple d instructions du 8086
Exemple d’instructions du 8086
(cid:138) ADD AX, BX -- instruction d’addition
(cid:138) SUB CX DX
(cid:138) SUB CX, DX
(cid:138) AND AX, CX
(cid:138) OR BX, DX
(cid:138) OR BX DX
-- instruction de soustraction
instruction de soustraction
-- instruction de ET logique
instruction de OU logique
-- instruction de OU logique
Architecture –Chap. 1
36
© A. Khouas, 2009
2.3 Jeu d’instructions
Le jeux d instructions d un ordinateur est l ensemble des
Le jeux d’instructions d’un ordinateur est l’ensemble des
instructions qui peuvent être exécutées par le μP
Il existe plusieurs types d’instructions (voir Annexe B)
(cid:138) Les instructions de transfert de données
(cid:138) Les instructions logiques et arithmétiques
(cid:138) Les instruction de décalage et rotation
(cid:138) Les instructions de saut et de branchement
(cid:138) Les instructions de comparaison
(cid:138) Les instructions d’incrémentation et de décrémentation
Architecture –Chap. 1
37
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instructions de transfert de données
Instructions de transfert de données
MOV dest, orig
(cid:153) dest == registre (R) ou adresse mémoire (M)
(cid:153) orig == R ou M ou immédiat (I) sauf dest/orig=M/M
Exemples :
(cid:138) MOV
MOV AX,BX
AX,BX
(cid:138) MOV AX,FF00
(cid:138) MOV AX,[FF00]
(cid:138) MOV [00FF],BX
(cid:138) MOV BYTE PTR [00FF],1A
(cid:138) MOV WORD PTR [00FF],1A
(cid:138) MOV
WORD PTR [00FF] 1A
Architecture –Chap. 1
38
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instructions logique et arithmétiques
OR dest, op
AND dest, op
XOR dest, op
op
XOR dest
NOT dest
ADD dest, op
ADC dest, op
SUB dest, op
SBB dest, op
op
SBB dest
NEG dest
INC dest
DEC dest
OU logique
ET logique
XOR logique
XOR logique
inverse logique
addition
addition avec retenue
soustraction
soustraction avec retenue
soustraction avec retenue
Advertisement
inverse arithmétique
incrémentation
décrémentation
dé é
(cid:153) dest == registre ou adresse mémoire
(cid:153) op == registre ou adresse mémoire ou immédiat sauf dest/op=M/M
Architecture –Chap. 1
39
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instructions de décalage et de rotation
Instructions de décalage et de rotation
SHL dest, op
SHR dest, op
SHR dest op
SAR dest, op
ROL dest, op
ROL dest op
ROR dest, op
RCL dest, op
RCL d t
RCR dest, op
décalage logique gauche dest.0
décalage logique droite 0.dest
décalage logique droite 0 dest
décalage arithmétique droite S.dest
rotation gauche dest
rotation gauche dest
rotation droite dest
rotation gauche avec carry dest.C
rotation gauche avec carry dest C
rotation droite avec carry C.dest
(cid:153) dest == registre ou adresse mémoire
ou C
(cid:153) op == 1 ou CL
op
Architecture –Chap. 1
40
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instruction de comparaison
CMP op1, op2
comparaison op1-op2
2
1
i
(cid:138) L’instructions de comparaison permet seulement de mettre
à jour les drapeaux (Flags) du microprocesseur
(cid:138) L’instruction de comparaison est souvent utilisée avec les
p
instructions de sauts
Architecture –Chap. 1
41
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instructions de sauts inconditionnels :
Instructions de sauts inconditionnels :
JMP addr
CALL addr
RET
saut inconditionnel
appel sous-programme
retour sous-programme
Instructions de sauts conditionnels / carry:
JC addr
JNC addr
saut si carry=1
saut si carry=0
Instructions de sauts conditionnels / entiers :
Inst ctions de sa ts conditionnels / entie s
saut si =
saut si /
saut si =/
saut si = 0
saut si =/ 0
JE addr
JNE addr
JNE addr
JZ addr
JNZ addr
Architecture –Chap. 1
42
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Instructions de sauts conditionnels / entiers non signés:
I
l /
diti
ti
d
é
t
i
ti
t
JB addr
JA addr
JBE addr
JAE addr
JAE dd
saut si <
saut si >
t
i
saut si <=
saut si >=
saut si >
Instructions de sauts conditionnels / entiers signés :
JL addr
JG addr
JLE addr
JGE addr
saut si <
saut si >
saut si <=
i
saut si >=
Architecture –Chap. 1
43
© A. Khouas, 2009
2.3 Jeu d’instructions du 8086
Autres instructions de sauts conditionnels :
Autres instructions de sauts conditionnels :
JCXZ addr
JO addr
JNO addr
JP addr
JNP addr
JS addr
JNS addr
JNS addr
Les boucles :
saut si CX vaut 0
saut si débordement (O =1)
saut si pas de débordement (O =0)
saut si parité (P =1)
saut si pas de parité (P =0)
ité (P 0)
saut si signe (S =1)
saut si pas de signe (S 0)
saut si pas de signe (S =0)
d
t
i
LOOP addr
LOOP addr
LOOPE addr
LOOPNE addr
saut court si le compteur CX est différent de 0
saut court si le compteur CX est différent de 0
saut court si compteur CX différent de 0 et Z =1
saut court si compteur CX différent de 0 et Z =0
Architecture –Chap. 1
44
© A. Khouas, 2009
2.4 Codage en mémoire d’une instruction
Comme le microprocesseur ne comprend que le
Comme le microprocesseur ne comprend que le
langage binaire (0 et 1), chaque instruction est
placée en mémoire sous forme d’un code binaire pour
placée en mémoire sous forme d’un code binaire pour
qu’elle puisse être décodée et exécutée par le
microprocesseur
Le codage de l’instruction est effectué suivant une
méthode donnée qui sera présentée dans les
chapitres suivants
éth d d
té d
é
é
i
l
Architecture –Chap. 1
45
© A. Khouas, 2009
2.4 Codage en mémoire d’une instruction
Sous DEBUG la commande u <adr> permet d’afficher les
instructions et leurs codes du programme assembleur qui
se trouve à l’adresse <adr>
Une instruction du 8086 peut être codée sur 1 ou plusieurs
octets
t t
La taille d un programme correspond à la somme des tailles
La taille d’un programme correspond à la somme des tailles
de toutes les instructions du programme
Remarque: Sous DEBUG, les codes binaires des instructions sont donnés en
hexadécimal.
hexadécimal.
Architecture –Chap. 1
46
© A. Khouas, 2009
2.4 Codage en mémoire d’une instruction
Exemple :
Exemple :
(cid:138) Après avoir entrer le programme précédant, la commande u 100
a donné le résultat ci-dessous
Adresses
Codes
Instructions
180D:0100
180D:0103
180D:0106
180D:0109
180D:010B
180D:010D
B80100 MOV AX,0001
BB1000 MOV BX,0010
B90100 MOV CX,0001
01D8 ADD AX,BX
21CB AND BX,CX
CD20 INT 20
Architecture –Chap. 1
47
© A. Khouas, 2009
Plan
Introduction
1. Architecture des ordinateurs
1. Microprocesseur
2. Mémoire
/
q
3. Périphériques d’entrée/sortie
4. Bus de communication
p
2. Programmation en assembleur
1
1. Programme assembleur
Programme assembleur
2. Les instructions
3.
4. Codage en mémoire des instructions
Jeux d’instructions
é
3. Utilisation de DEBUG
1. Lancement de DEBUG
1. Lancement de DEBUG
2. Les paramètres des commandes de DEBUG
3. Les commandes de DEBUG
Conclusion
Conclusion
Architecture –Chap. 1
48
© A. Khouas, 2009
3. Utilisation de DEBUG
DEBUG est un programme utilitaire de MS_DOS
p
permettant un contrôle total du microprocesseur
p
Advertisement
DEBUG permet :
(cid:138) D’entrer, d’afficher et d’exécuter des instructions ou un
é
(cid:138) D’afficher et de modifier le contenu des registres du
l
difi
i t
d
d
t
programme assembleur
t d
D’ ffi h
microprocesseur
(cid:138) D’afficher et de modifier le contenu de la mémoire
(cid:138) D afficher et de modifier le contenu de la mémoire
(cid:138) De débugger et d’exécuter pas à pas les programmes
Architecture –Chap. 1
49
© A. Khouas, 2009
3.1 Lancement de DEBUG
Sous MS-DOS, on peut lancer DEBUG de plusieurs façons:
Sous MS DOS on peut lancer DEBUG de plusieurs façons:
(cid:138) En tapant debug : pour lancer DEBUG sans charger de programme.
En tapant debug <programme avec extension> : pour lancer
(cid:138) En tapant debug <programme avec extension> : pour lancer
DEBUG en chargeant un programme.
(cid:138) En tapant debug <programme avec extension> <paramètres> :
pour lancer DEBUG en chargeant un programme et en donnant des
pour lancer DEBUG en chargeant un programme et en donnant des
paramètres au programme.
(cid:138) En tapant debug < <fichier.txt> : pour lancer DEBUG avec
redirection de l entrée à partir d un fichier au lieu du clavier.
redirection de l’entrée à partir d’un fichier au lieu du clavier
(cid:138) En tapant debug > <fichier.txt> : pour lancer DEBUG avec
(cid:138) En tapant des combinaisons des commandes précédentes pour lancer
redirection de la sortie vers un fichier au lieu de l’écran.
E t
é éd t
DEBUG avec redirections des entrées et/ou des sorties et avec ou sans
chargement d’un programme.
t d
bi
d
d
l
i
Architecture –Chap. 1
50
© A. Khouas, 2009
3.1 Lancement de DEBUG
Sous WINDOWS, il est préférable d ouvrir une fenêtre DOS
Sous WINDOWS, il est préférable d’ouvrir une fenêtre DOS
et ensuite lancer DEBUG. Il est aussi possible de lancer le
programme DEBUG an allant dans Démarrer (cid:198)
programme DEBUG an allant dans Démarrer (cid:198)
Exécuter, et ensuite taper debug.
Une fois lancé, DEBUG nous donne un tiret d’invite nous
permettant d’entrer les commandes de DEBUG.
Remarques :
(cid:138) Les commandes de DEBUG sont toutes composées d’une lettre avec en
p
option une suite de paramètres.
(cid:138) Il n'y a pas de différences entre les majuscules et les minuscules.
Toutes les valeurs numériques sont en hexadecimal.
Architecture –Chap. 1
51
© A. Khouas, 2009
3.2 Les paramètres des commandes de DEBUG
Les paramètres des commandes de DEBUG peuvent être :
Les paramètres des commandes de DEBUG peuvent être :
(cid:138) <adresse> : L'adresse peut s'écrire sous un seul nombre <offset> ou
sous un couple de nombres <segment>:<offset>. Il est possible de
donner comme segment le mot DS ou CS. Si on ne précise pas de
donner comme segment le mot DS ou CS Si on ne précise pas de
segment, c'est DS qui est pris par défaut, sauf pour certaines
commandes.
(cid:138) <bloc> : C'est un ensembles d'adresses dans un même segment. Il y a
y
deux formes: <adresse début> <adresse fin> ou <adresse début> L
<longueur en octet>. Seulement l’adresse de début peut avoir un
segment.
g
(cid:138) <port> : C'est une adresse d'un port d'entrée/sortie. Par exemple 378
l 378
t é /
t d'
C'
d'
ti
d
P
t
t
pour les données de l'imprimante.
(cid:138) <octet> : C'est une donnée sur 1 ou 2 chiffres hexadécimal.
(cid:138) <liste d’octets> : C'est une suite d'octets séparés par des espaces (ou
it d'
t t
C'
d
é
é
(
t
li t d’
t t
des virgules).
(cid:138) <mot> : Nombre de 1 à 4 chiffres hexadécimal.
Architecture –Chap. 1
52
© A. Khouas, 2009
3.2 Les paramètres des commandes de DEBUG
Les paramètres des commandes de DEBUG peuvent être :
Les paramètres des commandes de DEBUG peuvent être :
(cid:138) <nom de fichier> : Donne au moins le nom et l'extension d'un fichier.
On peut y mettre le chemin.
U
h î
déli
h î
(cid:138) <chaîne> : Une chaîne est délimitée par des apostrophes ou des
i é
guillemets (e.g. ‘bonjour’ ou "bonjour"). Pour mettre une apostrophe
dans une chaîne, il faut utiliser les guillemets comme délimiteurs (e.g.
"ceci est un exemple pour l’apostrophe").
"
h ")
t
(cid:138) <registre> : Nom d'un registre.
(cid:138) <disque> : 0 représente le lecteur A:, 1 le lecteur B:, 2 le disque C: et
q
h
d
p
q
d
l’
t
,
,
i
l
ainsi de suite.
(cid:138) <secteur> : le numéro de secteur.
(cid:138) <nombre de secteurs> : Nombre de secteur entre 1 et 80 (on ne
(cid:138) <nombre de secteurs> : Nombre de secteur entre 1 et 80 (on ne
peut pas lire ou écrire en une fois plus de 80 secteurs. Les secteurs
sont de 512 octets.
Architecture –Chap. 1
53
© A. Khouas, 2009
3.3 Les commandes de DEBUG
Ci-dessous la syntaxe et la signification de certaines commandes
Ci dessous la syntaxe et la signification de certaines commandes
de DEBUG :
(cid:138) ? : La commande ? permet d afficher la liste des commandes de
(cid:138) ? : La commande ? permet d’afficher la liste des commandes de
DEBUG.
(cid:138) A <adr> : La commande A (assemble) permet d’entrer ligne par ligne
des instructions d’un programme à partir de l’adresse <adr> On
des instructions d un programme à partir de l adresse <adr>. On
termine les lignes par un retour chariot supplémentaire.
(cid:138) C <bloc> <adr> : La commande C (compare) permet de comparer le
bloc <bloc> au bloc qui débute à l adresse <adr> (e.g. C F100 F200
bloc <bloc> au bloc qui débute à l’adresse <adr> (e g C F100 F200
F400 ou C F100 L100 F200 compare les blocs F100-F200 et F400-F500).
Si les blocs sont identiques, la commande ne renvoie aucun message.
D < d >
(cid:138) D <adr> ou D <bloc> : La commande D (dump) permet d’afficher la
l
suite d’octets du bloc de 128 octets qui commence à l’adresse <adr>
ou du bloc <bloc>. D sans paramètre affiche les 128 octets suivants.
D <bl > L
t d’ ffi h
d D (d
)
Architecture –Chap. 1
54
© A. Khouas, 2009
3.3 Les commandes de DEBUG
(cid:138) E <adr> <liste d’octets> : La commande E (enter) permet de
mettre en mémoire une liste d’octet à partir de l’adresse <adr>. E sans
mettre en mémoire une liste d octet à partir de l adresse <adr>. E sans
la liste d’octets permet d’afficher un à un les anciens octets et d’entrer
les nouveaux octets en tapant l’octet suivi d’un espace. Un espace tout
seul permet de garder l’ancien octet et de passer à l’octet suivant. On
termine la commande par un retour chariot. La touche ‘-‘ permet de
termine la commande par un retour chariot La touche ‘ ‘ permet de
revenir en arrière.
(cid:138) F <bloc > <liste d’octets> : La commande F (fill) remplit le bloc
<bloc> avec la liste d’octets La liste d’octet est répétée jusqu’à ce que
<bloc> avec la liste d octets. La liste d octet est répétée jusqu à ce que
tout le bloc soit rempli.
(cid:138) G <=adr1> <adr2>…. : La commande G (go) permet d’exécuter un
programme à partir de l’adresse <adr1>. Les adresses suivantes
programme à partir de l adresse adr1 . Les adresses suivantes
représentent des points d’arrêt. Si aucune adresse n’est spécifiée, la
commande exécute le programme à partir de l’adresse définie par
CS:IP. CS est le registre de segment de donnée et IP est le registre du
pointeur d instruction.
pointeur d’instruction
(cid:138) H < mot1> <mot2> : La commande H (hexa) permet d’afficher la
somme et la soustraction des deux nombres (i.e. <mot1> + <mot2> et
<mot1> <mot2>.
<mot1> - <mot2>
Architecture –Chap. 1
55
© A. Khouas, 2009
3.3 Les commandes de DEBUG
(cid:138) M <bloc> <adr> : La comande M (move) déplace le bloc dans la
d
mémoire à partir de l’adresse <adr>.
ti d l’ d
é
à
i
(cid:138) P <=adr> <mot> : La commande P (proceed) exécute <mot>
p
instructions à partir de l’adresse <adr>. Si aucun mot n’est spécifié, la
commande exécute une instruction. Si aucune adresse n’est spécifiée,
la commande exécute le programme à partir de l’adresse définie par
CS:IP La commande P considère les boucles comme si c’était une seule
CS:IP. La commande P considère les boucles comme si c était une seule
instruction.
p
,
(cid:138) Q : La commande Q (quit) permet de terminer la session de DEBUG.
(cid:138) R <reg> : La commande R (register) permet de modifier le contenu
g
du registre <reg >. Si aucun registre n’est spécifié, R affiche le contenu
de tous les registres. R F permet de modifier individuellement le
registre des flags. OV, DN, EI, NG, ZR, AC, PE, CY permet de mettre à 1
les flags, et NV, UP, DI, PL, NZ, NA, PO, NC permet de mettre 0 les
flags.
flags.
p
Architecture –Chap. 1
56
© A. Khouas, 2009
3.3 Les commandes de DEBUG
(cid:138) T <adr> <mot> : La commande T (trace) exécute <mot>
instructions à partir de l’adresse <adr>. Si aucun mot n’est spécifié, la
instructions à partir de l’adresse <adr> Si aucun mot n’est spécifié la
commande exécute une instruction. Si aucune adresse n’est spécifiée,
la commande exécute le programme à partir de l’adresse définie par
CS:IP. T ressemble à la commande P, sauf qu’elle entre dans les
d
Advertisement