Académique Documents
Professionnel Documents
Culture Documents
ArchiCtrl 2003-01-30 Correction PDF
ArchiCtrl 2003-01-30 Correction PDF
I. Architecture
1. Dans un ordinateur, quelle est la diffrence entre un registre et une mmoire ?
(comparez la nature, la taille, la vitesse et le moyen daccs aux information)
Un registre est une petite mmoire (quelques octets).
Il fait partie du processeur processeur,
qui le connat directement (adressage implicite).
Les accs sont trs rapides.
Une mmoire est un bloc fonctionnel hors du processeur
et gnralement hors du chip.
Elle prsente une plus grande capacit
(au minimum quelques ko).
On y accde par lintermdiaire dun bus
en prcisant une adresse (donc cest lent).
2. Listez les registres d'un processeur 8 bits accumulateur pouvant adresser 64 ko; prcisez leur taille.
Compteur ordinal ou pointeur dinstruction, 16 bits
Registre dinstruction, 8 bits
Accumulateur, 8 bits
Registre tampon de lAccumulateur, 8 bits
Registre tampon dadresse, 16 bits
3. Dtaillez les oprations lmentaires* (ou micro-instructions) effectues par le processeur 8086 (processeur 16
bits) lors de l'excution de l'instruction ADD AX,[0000] (code instruction 03 06 00 00).
(*micro-instructions du type transfert de registre bus, calculs ou passage dans un blocs de dcodage)
Chargement code opration dans RI partir du bus de donnes,
dcodage de linstruction, avance de IP (deux)
Dpose du contenu de IP sur le bus dadresse, dcodage @mem,
chargement de ladresse dans RTA partir du bus de donnes
Dpose du contenu de RTA sur le bus dadresse, dcodage @mem,
chargement de la donne dans RTAX partir du bus de donnes,
avance de IP (deux)
Ajout de RTAX AX,
Dpose du contenu de IP sur le bus dadresse, dcodage @mem
II. Assembleur
1. Compltez la dclaration assembleur pour les donnes suivantes : le caractre espace, le caractre retour la ligne
(code ASCII 13), un masque pour ne regarder que le bit 5 des caractres, une chane de caractres "Stop!", un entier
X, un tableau T de 32 entiers comme X, un entier N donnant la taille du tableau et un autre I pour stocker l'indice
dans le tableau (initialis 0).
Donnees SEGMENT
Espace DB
NewLine DB 13
Masque DB 00100000b
Chaine Stop!
X DW ?
T DW 32 dup(?)
N DB 32
I DB 0
Donnees ENDS
2. Sur la reprsentation ci-contre de la mmoire, faites figurer les donnes (nom et valeurs ventuelles).
Prcisez les adresses mmoire correspondant aux diffrentes variables que vous avez dclar.
Espace [0000]
NewLine [0001]
Masque [0002]
Chaine [0003]
X [0008]
T [000A]
N [002A]
I [002B]
3. Ecrire un programme qui range dans X le nombre de valeurs non nulles dans le tableau T.
Utilisez les variables I et N dclares prcdemment. Attention, linstruction CMP @,@ nexiste pas !
Seuls deux registres sont utiliss : AL et BX.
MOV BX,OFFSET T
MOV X,0
bcl: MOV AL,I
CMP AL,N
JGE fini
MOV AL,[BX]
CMP AL,0
JNE next
INC X
next:INC BX
INC I
JMP bcl
fini: