Vous êtes sur la page 1sur 4

Université de Jijel

Faculté des sciences exactes et Informatique


Dép. Informatique
Module : Électronique des composant de base
Année 2022–2023

Série de TD 4 Mr. Z. MAHROUK


Exercice 1

Soit un processeur, muni de trois registres Ax, Bx et Cx initialisés à zéro, qui reconnait le jeu
d’instruction suivant :

Le code registre de Ax est 0000 0001, de Bx est 0000 0010 et de Cx est 0000 0011. Toutes les
valeurs sont entières. Soit le code (en Hexadécimal) suivant qui commence à l’adresse 0000 0000 :

91 9E 02 01 91 87 03 01 9E 01 02 85 A6 01 92 03

1. Convertissez le code du programme précédent du hexaécimal vers le langage assembleur.


2. Que fait ce programme ? quelle serait la sortie si l’utilisateur écrit : 4, 3, 4, 2, 1 ?
3. Si chaque instruction prend 3 cycles d’horloge pour s’exécuter. Combien de cycles d’horloges
faut-il pour exécuter le programme avec les entrées de la question (2) ?
4. Calculez le temps d’exécution si le processeur est cadencé à 2.4 GHz, et que l’utilisateur prend
une seconde pour introduire une donnée.

Page 1 sur 4
Exercice 2

Soit un processeur (8 bits de données, 16 bits d’adresse).

On suppose que les instructions sont codées sur 1 ou 2 octets, suivi éventuellement d’un opérande sur
un ou deux octets. On dispose des instructions suivantes (AL désigne l’accumulateur) :

Instruction Codage Signification

MOV AL, [ adr ] A0 adr Lis l’emplacement mémoire adr et le charge dans AL.

MOV [ adr ], AL A2 adr Stocke la valeur de AL dans la mémoire d’adresse adr.

ADD AL, [ adr ] 0206 adr Ajoute dans AL la valeur lue à adr.

1. Combien d’octets occupent chacune de ces instructions ?


2. Ecrivez avec ces instructions un programme qui ajoute le contenu des cases mémoires d’adresses
130H et 131H, puis range le résultat à l’adresse 132H. Donner sa traduction en hexadécimal.
3. Donnez l’adresse de chaque instruction du programme, sachant que la première instruction est
implantée à l’adresse 1000H.
4. Donnez après chaque instruction le contenu de chaque registre (CO, RI, AL, RTA) en
supposant que la valeur rangée à l’adresse 0130H est 88H, et la valeur 5H en 0131H.
5. Avec les instructions vues plus haut, écrivez un programme qui échange le contenu des cases
mémoires 0130H et 0131H.

NB : H signifie que le code est en Hexadécimal.

Exercice 3

Supposez que vous voulez multiplier deux variables a et b, stockées dans les positions de mémoire
M[20] et M[21], respectivement, pour affecter cette valeur à la variable X, stockée à la position de
mémoire M[40] C'est à dire, vous voulez effectuer l'opération:

X = a*b ou : M[40] = M[20]*M[21]

Le processeur possède 8 registres (R0...R7). Le registre R0 contient initialement la valeur 0.

Les instructions du langage machine du processeur sont :

Page 2 sur 4
Instruction Description
LOAD Rd, M[adr] Rd  M[adr]
STORE M[adr], Rs M[adr]  Rs
ADD Rd, Rs1, Rs2 Rd  Rs1 + Rs2
SUB Rd, Rs1, Rs2 Rd  Rs1 - Rs2
DEC R RR-1
JMP adr Sauter à adr (adr est une adresse)
JZ Rs, adr Si Rs = zero alors sauter à adr

1. Quel est types d’adressage utilisés dans l’instruction LOAD ?


2. Donnez le programme assembleur permettant d’effectuer le calcul demandé en supposant que
la première instruction est stockée à l’adresse (0010)2, et que les parties de l’instruction
(mnémonique et opérandes) sont de 1 octet chacune.
Exercice 4

Soit une carte mère d’un ordinateur contenant les éléments suivants : un processeur de fréquence 2GHz
et une mémoire centrale de 256 MO. Le tableau suivant résume les instructions utilisées par son
microprocesseur :

Instruction Désignation Codage du code opération

ADD X Acc  (Acc) + (X) B5

SUB X Acc  (Acc) - (X) C8

DIV X Acc  (Acc) / (X) F3

MUL X Acc  (Acc) * (X) E9

MOV Acc,X Acc  (X) F1

MOV X, nombre (X)  nombre A3

MOV X, Acc X  (Acc) 3C

CMP X,Y Comparaison de x et y suivi d’une D6


instruction de saut

JE étiquette Aller à étiquette si x=y 66

Page 3 sur 4
JL étiquette Aller à étiquette si x<y 27

JG étiquette Aller à étiquette si x>y 77

JMP étiquette Allez à étiquette sans condition E8

END Fin de programme FF

1. Calculer la taille d’une adresse mémoire exprimée en bits sachant que la case mémoire est de
1 octet.
2. Soit le programme p suivant :
Z = A*B +C+D
C= A + D/Z – C
Si Z>C
ALORS A =2*C
SINON A = C+Z
FINSI

En utilisant les instructions du tableau, écrire le programme p en assembleur.

3. Traduisant le code assembleur de la question 2 en code machine écrit en hexadécimal.


4. Quelle la taille en octets de ce programme assembleur ?
5. Si l’adresse de la première instruction est 0h, quelle sera l’adresse de la dernière instruction ?

Page 4 sur 4

Vous aimerez peut-être aussi