Architecture des ordinateurs TD n°3 : Architecture des

publicité
Faculté des Sciences
Département de physique
Option : Infotronique
Architecture des ordinateurs
TD n°3 : Architecture des microprocesseurs
1. Questions de cours
1.1. Donner l’architecture générale d’un microprocesseur ? Donner le nom et le rôle des
différents modules d’un microprocesseur ?
1.2. C’est quoi une UAL ?
1.3. C’est quoi un séquenceur ?
1.4. Quelle est la différence entre un registre et une mémoire ?
1.5. Quelle est la différence entre un séquenceur câblé et un séquenceur microprogrammé ?
1.6. Quels sont les différents types de registres dans les microprocesseurs ? Expliquer le rôle
de chaque type de registre.
1.7. Donner les différents types de formats des instructions.
1.8. Donner les différentes façons de stockages des opérandes utilisés par les instructions.
1.9. Donner les différentes étapes d’exécution d’une instruction par un microprocesseur.
2. Les registres du 8086
En exécutant la commande r sous debug on obtient le résultat ci-dessous :
AX=FF11 BX=FF00 CX=1712
DS=1816 ES=1816 SS=1816
1816:010C 8B1E00FF MOV
DX=0000 SP=FFEE
CS=1816 IP=010C
BX,[FF00]
BP=0000 SI=0000 DI=0000
NV UP EI NG NZ NA PE NC
DS:FF00=3210
2.1. Expliquer le rôle de la commande r de debug.
2.2. Donner les noms des registres d’index, des registres de segments et des registres de
pointeur ?
2.3. D’après les résultats affichés, donner les contenus des différents registres.
2.4. Lequel est le registre d’instruction ?
2.5. Quel est le rôle du registre d’instruction ?
2.6. Quelle est l’adresse de la prochaine instruction à exécuter ?
2.7. Quelle est l’adresse de l’instruction suivante à exécuter ?
3. Codage et format des instructions
En exécutant la commande u sous debug, on obtient le résultat ci-dessous :
1816:0100
1816:0103
1816:0106
B81100
BB00FF
01D8
MOV AX,0011
MOV BX,FF00
ADD AX,BX
____________________________________________________________________________________________________________
o
Architecture des ordinateurs – TD-TP N 3
1/3
A. Khouas
1816:0108
1816:010C
1816:0110
1816:0112
1816:0113
1816:0115
3.1.
3.2.
3.3.
3.4.
8B0E1100
8B1E00FF
01D9
40
FFC0
CD20
MOV
MOV
ADD
INC
INC
INT
CX,[0011]
BX,[FF00]
CX,BX
AX
AX
20
Expliquer le rôle de la commande u de debug.
Quelle est la taille de ce programme ?
Donner le format des instructions 1,3,4 et 7.
Donner l’opcode des instructions MOV, ADD, INC et INT, sachant que le format général
des instructions du 8086 est le suivant :
N° du bit dans l'octet
N° d'octet
7
6
5
4
3
2
1
0
1
opcode
d
w
2
mod
reg
r/m
3
[optionel : déplacement (Low), adresse ou donnée]
4
[optionel : déplacement (High), adresse ou donnée]
5
[optionel : donnée (Low)]
6
[optionel : donnée (High)]
Opcode : code opération de l’instruction.
d = 1 pour données trasférée de R/M ver REG et = 0 pour REG vers R/M.
w = 0 pour donnée sur 8 bits et =1 pour donnée sur 16 bits.
mod : mode d’interprétation du champ r/m (e.g. 11 pour registre registre).
reg : sélection des registres (e.g. 000=AX ou AL, 001=CX ou CL, 010=DX ou DL, ...)
r/m : mode d’adressage registre/mémoire
3.5. Quel est le nombre de cycles nécessaire pour l’exécution de ce programme ? Le tableau
ci-dessous donne le nombre de cycles pour certaines instructions du 8086.
Instruction
Nombre de cycles
mov reg imm
mov reg mem
Add reg reg
inc reg
int
4
8
3
3
71
4. La machine virtuelle
Soit une machine virtuelle avec :
& Un bus d’adresse de 8 bits.
& Un registre d’instruction de 16 bits.
& Un registre général de 16 bits nommé A.
& Une mémoire organisé en cellules de 16 bits.
& Le format des instructions sur 16 bits est le suivant :
Opcode (8 bits)
15 14 ………9 8
Opérande (8 bits)
76………10
____________________________________________________________________________________________________________
o
Architecture des ordinateurs – TD N 3
2/3
A. Khouas
& Le jeu d’instructions de la machine est donné dans le tableau ci-dessous :
Nom de l’instruction
Code opération (hexa)
Description
LOAD XX
01XX
A <-- XX
LOAD [XX]
02XX
A <-- [XX]
STR [XX]
03XX
[XX] <-- A
ADD XX
11XX
A <-- A + XX
ADD [XX]
12XX
A <-- A + [XX]
SUB XX
21XX
A <-- A – XX
SUB [XX]
22XX
A <-- A – [XX]
MUL XX
31XX
A <-- A * XX
MUL [XX]
32XX
A <-- A * [XX]
END
3021
Fin du programme
[XX] représente le contenu de la cellule mémoire d’adresse XX.
4.1.
4.2.
4.3.
4.4.
Quelle est l’espace d’adressage de cette machine ?
Quelle est la taille maximale de la mémoire que la machine peut utiliser ?
Sur combien de bits cette machine travaille-t-elle ?
Donner les instructions du programme qui se trouve à l’adresse 10h de la mémoire cidessous.
Adresse
(hexa)
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
Contenu
0220
1221
0322
0221
2220
0323
3021
0120
0221
1021
1220
0120
0221
1021
0F00
00EF
Adresse
(hexa)
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
Contenu
0F00
00EF
0FEB
0FEC
0FED
0FEE
0FEE
0F01
0F00
00EF
0F00
00EF
0FEB
0FEC
0FED
0FEE
4.5. Quelles sont les cellules mémoires qui sont modifiées après exécution du programme ?
Donner le contenu de ces cellules après exécution du programme.
4.6. Écrire pour cette machine un programme assembleur permettant de faire l’opération
suivante : 008F + 00CD – (000F * 0008). Le résultat sera sauvegardé à l’adresse 30h.
4.7. On suppose qu’on a saisi le programme de la question 4.6 à l’adresse 20h de la mémoire,
donner sous forme d’un tableau le contenu de la mémoire avant et après exécution du
programme.
5. Travail pratique (à faire chez soi)
5.1. Écrire et exécuter sous debug un programme assembleur permettant d’identifier parmi
tous les flags (NV, UP, EI, PL, ZR, AC, PE, et CY) celui de la retenu, de débordement,
de zéro et de signe.
____________________________________________________________________________________________________________
o
Architecture des ordinateurs – TD N 3
3/3
A. Khouas
Téléchargement