Exam
Exam
Exam
Département d’Informatique
Module ARCHI1 (section ACAD B,ISIL A)
EXAMEN FINAL
Exercice n°1
On considère une mémoire composée de 3 segments consécutifs dans cet ordre : code,
données et pile. Chaque segment admet une taille de 64Ko.
1° Trouver l’adresse de début et l’adresse de fin de chaque segment sachant que DS=4560H.
2° On suppose qu’une instruction est codée sur 4 octets. Trouver le nombre maximal
d’instructions que peut contenir le code segment.
Exercice n°2:
Soient un data segment contenant trois tableaux (dans cet ordre) Tab1, Tab2 et Tab3. Tab1
est un tableau(DB) d’octets, Tab2 de mots(DW) et Tab3 de double mots(DD). Les trois
tableaux contenant le même nombre d’éléments, i.e.
length(Tab1)=length(Tab2)=length(Tab3).
1° Donner la description du data segment sachant que sa taille est 700 octets.
2° Donner les valeurs remplaçant dans le code machine chacun des opérandes suivants :
Tab1+ 3, Tab1 +12.
3° Calculer les adresses physiques de ces opérandes sachant que DS=0089H.
Exercice n°3
Soit le programme suivant
DATA SEGMENT
TAB DW 10 DUP(AB00H,CD00H)
Data ends
CODE SEGMENT
XOR SI,SI
MOV CX, Length TAB; nombre d’éléments de TAB est mis dans CX
MOV AL,01H
BOUCLE : MOV TAB[SI], AL
INC AL
MOV TAB[SI+1} ,AL
ADD SI,2
INC AL
LOOP BOUCLE
MOV AH,4CH
INT 21H
COD E ENDS
1. Réécrire ce programme sans utiliser l’instruction LOOP
2. Quel est le contenu de TAB (tout le tableau) après exécution de ce programme.
3. Calculer le nombre d’accès mémoire généré par l’exécution de ce programme
4. Simplifier l’écriture de ce programme
Exercice n°4 :
1. La taille d’un segment du 8086 peut elle être supérieure a 64Ko, Justifier votre
réponse.
2. Ou se trouvent les registres segments du 8086 ? Expliquez pourquoi.
3. Citer les rôles des flags de condition (CF,SF,…).
Faculté d’Electronique et d’Informatique Année 2010/2011
Département d’Informatique
Module ARCHI1 (section ACAD B, ISIL A)
EXERCICE N°1
Exercice n°2:
1° La taille du data segment =taille tab1+ taille tab2 + taille tab3=x+2*x+4*x=7x où x est la
longueur commune des trois variables. Il s’ensuit que 7x=100octets, donc x=100.
La description du data segment est :
Data segment
Tab1 DB 100DUP( ?)
Tab2 DW 100DUP(?)
Tab3 DD 100DUP5?)
Data ends
Exercice n°3
Soit le programme suivant
DATA SEGMENT
TAB DW 10 DUP(AB00H,CD00H)
DATA ENDS
1° CODE SEGMENT
XOR SI,SI
MOV CX, Length TAB; nombre d’éléments de TAB est mis dans CX et length
MOV AL,01H
BOUCLE : MOV TAB[SI], AL
INC AL
MOV TAB[SI+1], AL
ADD SI,2
INC AL
DEC CX
JNZ BOUCLE
MOV AH,4CH
INT 21H
CODE ENDS
2° . TAB =(01H,02H . ; il s’agit de la structure de TAB en mémoire centrale
,03H,04H,
05,06H
07H,08H
09H, AH
BH,CH
………)
1. Les seules instructions qui engendrent des accès à la mémoire centrale sont MOV
TAB[SI],AL et MOV Tab[SI+1],AL. Chacune de ces instructions lit un octet, donc
chacune génère un seul accès(la lecture ou écriture d’un octet se fait toujours en un seul
accès quelque soit la parité de l’adresse). Vu que ces deux instructions sont exécutées
chacune 20 fois (voir valeur du CX). Donc le nombre d’accès à la mémoire centrale qui
découle de ce programme est 2*20=40 accès.
4° CODE SEGMENT
XOR SI,SI
MOV CX, Length TAB; nombre d’éléments de TAB est mis dans CX
MOV AX,0201H
BOUCLE : MOV TAB[SI],AX
ADD SI,2
ADD AX,0202H
LOOP boucle
MOV AH,4CH
INT 21H
CODE ENDS
Exercice n°4 :
1. Non, la taille d’un segment sur le 8086 ne peut pas dépasser 64Ko (2 16 octets). Les
segments sont adressés par des registres de 16 bits, donc leurs tailles ne peuvent pas
dépasser 216 octets.
2. Les registres segment se trouvent dans l’unité d’interfaçage bus. Ces registres sont
utilisés lors du calcul des adresses physiques ; ce calcul est effectué par l’unité
d’interfaçage bus. Donc il s’ensuit que ces registres sont affectés à cette unité.