Vous êtes sur la page 1sur 3

UNIVERSITE AbouBakr Belkaïd FACULTE des Sciences T.

Haddam
Département d’informatique 16/01/2023 SOLUTION E.F. N°1 : UEF2111
Tlemcen Durée : 1 h 30 mn Année Univ. 2022/2023

NB :
(1) Merci d’inscrire votre N° du groupe de TD sur votre copie.
(2) DOCUMENTS PERSONNELS AUTORISES ( PAS D’ECHANGE !)
(3) CALCULATRICES & TOUS AUTRES EQUIPEMENTS ELECTRONIQUES INTERDITS.

Exercice n° 1 : (09.5 pts) ( Temps / réf : 30 mn )


On considère la procédure ‘ALPHA’
ci-contre. ALPHA PROC
PUSH CX
1/ Indiquer (en justifiant) : PUSH DX
(a) les registres contenant MOV AX,1
les valeurs "passées à" cette CMP CX,0
procédure. (01 pt)  BX & CX JE FIN
(b) les registres contenant BCL: MUL BX, BX
les valeurs "retournées par" la DEC CX
procédure. (01 pt)  BX JNZ BCL
2/ Quel est le résultat de cette FIN: POP DX
procédure pour le cas : CX=5 et POP CX
BX=2 ? (01 pt)  (((((22) 2) 2) 2) 2)
𝟓 RET
= 𝟐𝟐 = 22^5 = (calcul non ALPHA ENDP
recquis)(toutes ces formes/réponses
sont admises)
3/ En déduire la fonction de cette
procédure (c-à-d : que fait cette
𝑪𝑿
procédure) ? (02 pts)  𝑩𝑿𝟐 = BX2^CX

5/ Compléter, en utilisant la liste suivante, la procédure BETA (ci-


dessous) pour qu’elle soit équivalente à la procédure ALPHA (04.5 pt):

liste des "CODOP" et BETA PROC


"registres" : PUSH CX
PUSH, POP, CX, AX, DX, BX, JNZ, PUSH DX
JZ, JLE, JL, JGE, XCHG, SUB,
MOV DX, 1
CMP, DEC, INC.
MOV AX,1
DEC CX
Attention : un CODOP ou
registre peut être utilisé plus BCL: MUL BX, BX
d’une fois ! INC DX
CMP DX, CX
JLE BCL
MUL BX, BX
POP DX
POP CX
RET
BETA ENDP

1/2
UNIVERSITE AbouBakr Belkaïd FACULTE des Sciences T. Haddam
Département d’informatique 16/01/2023 SOLUTION E.F. N°1 : UEF2111
Tlemcen Durée : 1 h 30 mn Année Univ. 2022/2023
Exercice n° 2 : (10.5 pts) ( Temps / réf : 45 mn )
On considère le programme assembleur suivant, dans lequel on s’intéresse
particulièrement à la procédure XXX, qu’on souhaite étudier.
NOTE : La procédure TRI_DATA est la procédure de tri étudiée en TD, à
laquelle certaines modifications ont été apportées, essentiellement la
taille des registres utilisés.
MAIN PROC
XOR DH ; Compteur/Nbres valeurs ds PILE
MOV CL, 49 ; Compteur boucle Interne
MOV DL, CL ; Compteur boucle Externe

CALL XXX
SUB CL, DH ; CL  CL – (Nre de valeurs <0)
CALL TRI_DATA
MOV AX, 4C00h
Int 21h
MAIN ENDP

XXX PROC
MOV BP, SP
ADD BP, 3 ; BP initialisée à (SPinit+1)
PUSH CL ; save CL (origin) pr après ‘CALL’
XOR BL ; index pr balayer « zone SI »
DEB : MOV BH, BL ; (3) index pr boucle « B_AL_NEG »
MOV CL, DL ; inutile au 1er passage, mais
; indispensable aux prochaines itérations
MOV AL, [SI][BL]
ROL AL, 1 ; (1)
AND AL, 1 ; (2)
JNZ DL11 ; DL11 = ”AL_NEG”
JMP AGAIN
DL11 : MOV AL, [SI][BL]
MOV [BP], AL
INC BP
DL12 : MOV AL, [SI][BH][1] ; DL12 = Boucle2_AL_ALN
MOV [SI][BH] , AL
INC BH
DEC CL
JNZ DL12
INC DH ; compteur/datas « <0 »
DEC BL ; Si (bcle B_AL_NEG), reprend depuis 1er élt.
AGAIN : INC BL
DEC DL ; BL + DL = Cte = Nbre / datas
JNZ DEB
EXIT : POP CL
RET
XXX ENDP

1/ Remplacer (1 et 2) par une instruction unique équivalente (01.5 pt)


 AND AL, 80h ( ou 128 en decimal)
2/ Quel(s) registre(s) joue(nt) le rôle de compteur dans cette procédure ? (01.5
pt)
 CL & DL & DH
3/ Que représente ( ‫ )ماذا تمثّل‬la valeur finale de DH ? (02.5 pts)
 compteur des ‘datas <0’ ( dont le 8ème bit = 1)
4/ Peut-on remplacer l’instruction (3) par « XOR BH » ? (justifier) (02 pts)
 NON, car BH suit BL à chaque itération
5/ Parmi les propositions suivantes, indiquer (et justifier) celle qui est vraie
(03 pts) :

2/2
UNIVERSITE AbouBakr Belkaïd FACULTE des Sciences T. Haddam
Département d’informatique 16/01/2023 SOLUTION E.F. N°1 : UEF2111
Tlemcen Durée : 1 h 30 mn Année Univ. 2022/2023
a/ XXX est une procédure de tri par ordre décroissant.
b/ XXX est une procédure pour mettre à zéro une zone de la RAM.
c/ XXX est une procédure pour déplacer toutes les données d’une zone SI
vers la pile.
d/ XXX est une procédure pour copier toutes les données positives d’une
zone SI vers la pile.
e/ XXX est une procédure pour copier toutes les données négatives d’une
zone SI vers la pile.
f/ XXX est une procédure pour extraire toutes les données négatives d’une
zone SI vers la pile.
g/ XXX est une procédure pour extraire toutes les données positives d’une
zone SI vers la pile.
h/ XXX est une procédure pour extraire toutes les données négatives d’une
zone SI vers le dessus de la pile.
i/ XXX est une procédure comportant une ou plusieurs erreur(s).
Dans ce cas, indiquer les erreurs détectées.

Nothing’s impossible & Impossible’s nothing !

3/2

Vous aimerez peut-être aussi