CC2 Ex1
CC2 Ex1
CC2 Ex1
1. Dans l’extrait de programme suivant, préciser pour chacune des instructions le mode
d’adressage :
Instruction Mode d’adressage
MOV AL, [000BH] Mode direct
ADD AL, C4H Mode immédiat
MOV [BX], 00H Mode indirect basé
SUB AL, [BX + SI] Mode indirect basé-indexé
3. Compter le nombre d’éléments nuls dans un tableau de 100 octets stockés en mémoire
à partir de l’adresse 200H. Le résultat sera stocké dans la case mémoire d’adresse 400H.
L’organigramme :
Début
CX ← 100
SI ← 200H
BL ← 0
Oui Non
[SI] = 0
BL ← BL + 1
SI ← SI + 1
CX ← CX - 1
Non Oui
CX = 0
[400H] ← BL
Fin
Le programme :
Par : A. BENMAKHLOUF
Solution de la Série de TD N° : 3
4. Compter le nombre de 1 dans un mot binaire de 16 bits (contenu dans AX). Le résultat
sera stocké dans la case mémoire d’adresse 1200H.
L’organigramme :
Début
CX ← 16
BL ← 0
Oui Non
CF = 1
BL ← BL + 1
CX ← CX - 1
Non Oui
CX = 0
[1200H] ← BL
Fin
Le programme :
MOV CX, 16
MOV BL, 0
B1: SHR AX, 1
JNC Next
INC BL
Next: LOOP B1
MOV [1200H], BL
HLT
Solution de la Série de TD N° : 3
5. Trier par ordre croissant (du plus petit au plus grand) les 50 éléments d’un tableau stocké
en mémoire à l’adresse 300H.
L’organigramme :
Début
CX ← 50
SI ← 300H
AL ← [SI]
Empiler CX
CX ← CX - 1
Non Oui
CX < 1
BX ← CX
Oui Non
AL > [BX + SI]
AH ← [BX + SI]
[SI] ← AH
[BX + SI] ← AL
AL ← AH
CX ← CX - 1
Non Oui
CX = 0
SI ← SI + 1
Dépiler CX
CX ← CX - 1
Oui Non
CX = 0
Fin
Le programme :
MOV CX, 50
MOV SI, 300H
B1: MOV AL, [SI]
PUSH CX
DEC CX
CMP CX, 1
JL Fin
Solution de la Série de TD N° : 3
6. Calculer la somme des nombre entiers pairs (de 0 à 100) et stocker le résultat dans le
registre BX.
Calculer la somme des nombre entiers impairs (de 0 à 100) et stocker le résultat dans le
registre DX.
Le programme doit utiliser une seule boucle.
L’organigramme :
Début
CX ← 100
BX ← 0
DX ← 0
AX ← 1
AX ← AX et CX
Oui Non
AX = 0
BX ← BX + CX DX ← DX + CX
CX ← CX - 1
Non Oui
CX = 0
Fin
Le programme :
AND AX, CX
JZ Pair
ADD DX, CX
JMP Next
Pair: ADD BX, CX
Next: LOOP B1
HLT
7. Calculer le factoriel d’un nombre entier n de 8 bits (stocké en mémoire à l’adresse 0210H)
noté n!. Le résultat doit être stocké en mémoire à l’adresse 0220H.
- Quelle peut être la taille du résultat ?
Pour calculer le factoriel d’un nombre on effectue des opérations de multiplication, le
résultat pourra être un nombre de 32 bits.
- Quelle condition doit satisfaire le nombre n pour qu’il n’y ait pas dépassement de
cette taille ?
Le plus grand nombre qu’on peut représenter sur 32 bits est 232 – 1 = 4294967295.
C’est-à-dire : n ≤ 11.
Début
AX ← [210H]
Non Oui
AX = 0
CX ← AX - 1
DX : AX ← AX * CX AX ← 1
CX ← CX - 1 DX ← 0
Non Oui
CX = 0
[220H] ← AX
[222H] ← DX
Fin
Solution de la Série de TD N° : 3
Le programme :