Académique Documents
Professionnel Documents
Culture Documents
TD3 - Up Et Uc
TD3 - Up Et Uc
TD 3 : Le microprocesseur 8086-(partie 2)
Exercice 1 :
1. Tracer un organigramme pour calculer la moyenne de 3 nombres A, B et C ?
2. Tracer un organigramme pour calculer la moyenne de 100 nombres X1, X2,…X100 ?
Solution :
1. La moy de 3 nombres :
2 . La moy de 100 nombres :
Début
Initialisation A,
B, C
Moy = (A+B+C)/3
Fin
Exercice 2 :
Réduire le programme suivant au minimum utile :
MOV CX, 03
Solution :
MOV AX, 09
Il faut excuter le programme pas/pas pour
NOP voir le contenue de chaque registre, le
programme devient après réduction:
NOP
MOV CX, 03
NOP
MOV [memory], CX
MOV BX, 01
END
ADD CX, AX
ADD CX, BX
SUB CX, 0A
MOV [memory], CX
END
1
Université 20 Aout 1955 Skikda License 3ème année Automatique - 2021/2022
Département de Génie électrique Module : Microprocesseur et microcontrôleur
Exercice 3 :
Ecrire un programme autour du 8086 pour faire fonctionner le registre AX en :
1. Compteur de 1 à 1000.
2. Compteur de 1 à 100000.
Solution :
Exercice 4 :
Ecrire un programme autour de 8086 pour calculer la valeur de Y = 2X2 + 3X + 1, sachant que X
est une donnée de 8 bits stockée dans la mémoire d’adresse 4000h, le résultat sera stocker dans
l’adresse 7000h.
Solution :
MUL AL AX = X2
ADD AX, AX 2X2
MUL BL AX = 3X
ADD AX, DX AX = 2X2 + 3X
INC AX AX = 2X2 + 3X + 1
MOV [7000h], AX
END
2
Université 20 Aout 1955 Skikda License 3ème année Automatique - 2021/2022
Département de Génie électrique Module : Microprocesseur et microcontrôleur
Exercice 5 :
Ecrire un programme en assembleur 8086 qui fait la somme du contenu des deux cases 1000h et
1010h où le contenu est codées sur 1 octet et puis :
Si la somme est supérieure à 100, on range le résultat dans la case 1020h.
Sinon, on range le résultat dans la case 1030h.
Solution :
Organigramme Algorithme
Algorithme Somme
Début
Variables :
A, B, S : Entiers
Lire A, B
S0
Initialisation S 0 Début
S A+ B
S A+ B Si S > 100 Alors
[1020] S
NON Sinon
S>100
[1030] S
Oui FinSi
Fin
Assembleur
MOV AL, [1000h]
MOV BL, [1010h]
ADD AL, BL
CMP AL, 64h
JG Sup
MOV [1030h], AL
JMP Fin
Sup: MOV [1020], AL
Fin: END
3
Université 20 Aout 1955 Skikda License 3ème année Automatique - 2021/2022
Département de Génie électrique Module : Microprocesseur et microcontrôleur
Exercice 6 :
Ecrire un programme qui permet de calculer le PGCD (plus grand commun diviseur) de deux
nombres a et b se trouvant respectivement aux offsets [1000h] et [1001h], en tenant compte de
l’algorithme suivant :
Le PGCD doit ranger dans la case mémoire [1002h].
Algorithme : Solution :
Répéter MOV AL, [1000h]
C = a/b (r : le reste de cette division) MOV BL, [1010h]
Si r 0 Alors Répéter : DIV BL
ab CMP AH, 0
br JZ Fin
FinSi MOV AL, BL
Exercice 7 :
On veut additionner deux nombres signés N1 et N2 se trouvant respectivement aux offsets
[1100h] et [1101h]. Le résultat est rangée à l’adresse 2000h s’il est positif, à l’adresse 3000h s’il est
négatif, et dans le registre BX s’il est nul.
Solution : Assembleur
4
Université 20 Aout 1955 Skikda License 3ème année Automatique - 2021/2022
Département de Génie électrique Module : Microprocesseur et microcontrôleur
Exercice 8 :
Ecrire un programme autour du 8086 pour déclarer les tableaux suivants :
1. TAB de nombres suivants : 1, 3, 8, 7, 9, 100, 13.
2. SAB de nombres suivants : 1000, 300, 50, 700, 90, 1100, 130.
Solution :
L’instruction DB (Define Byte) permet de déclarer un nombre de taille de 8 bits (Byte octet).
L’instruction DW (Define Word) permet de déclarer un nombre de taille de 16 bits (Word doubles
octets).
1. TAB
TAB DB 1,3,8,7,9,100,13 ; TAB[0] = 1, TAB[1]=3,… TAB[6]=13
2. SAB
SAB DW 1000,300,50,700,90,1100,130 ; SAB[0] = 1000, SAB[6] = 130
Exercice 9 :
Ecrire un programme qui sera implanté en mémoire à partir de l’adresse 4000h, pour déclarer le
tableau X de nombres suivants : 1,3,5,7,1,5,1 puis déterminer la plus grande valeur de X est
stocker le résultat dans le registre DL.
Solution :
L’algorithme de ce programme est le suivant :
X = [1,3,5,7,1,5,1] on cherche de déterminer la valeur maximal de ce tableau (Max) qui est 7. Pour cela :
(2) On suppose que la première case contient le maximum : Max X(0) puis :
(4) Si celui-ci (l’l’élément de la 2ème case) est supérieur, il devient le maximum, pour ce faire on doit
vérifier la condition suivante : Max < X(1)