Spécialité : Electrique
Module : Microprocesseur Année universitaire : 20162017
Solution de la Série de TD : 3+4
Programmation du Microprocesseur 8086 en Assembleur
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é
Ecrire des programmes en assembleur 8086 qui permettent de :
2.
Evaluer l’expression suivante et stocker le résultat en mémoire à l’adresse
0300H
:
Y = 2x
2
+ 3x - 1
.
Tel que
x
est un nombre positif (1 octet) stocké en mémoire à l’adresse
0100H
.
Le programme :
MOV AL, [0100H]
MUL [0100H]
MOV BX, 2
MUL BX
XCHG AX, BX
MOV AX, 3
MUL [0100H]
DEC AX
ADD AX, BX
ADC DX, 0
MOV [0300H], AX
MOV [0302H], DX
HLT
Solution de la Série de TD N° : 3
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 :
Le programme :
MOV CX, 100
MOV SI, 200H
MOV BL, 0
B1: CMP [SI], 0
JNE Next
INC BL
Next: INC SI
LOOP B1
MOV [400H], BL
HLT
CX
100
SI
200H
BL
0
Début
[SI] = 0
BL
BL + 1
SI
SI + 1
CX
CX - 1
CX = 0
[400H]
BL
Fin
Oui
Oui
Non
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 :
Le programme :
MOV CX, 16
MOV BL, 0
B1: SHR AX, 1
JNC Next
INC BL
Next: LOOP B1
MOV [1200H], BL
HLT
CX
16
BL
0
Décaler AX à droite d’une position
Début
CF = 1
BL
BL + 1
CX
CX - 1
CX = 0
[1200H]
BL
Fin
Oui
Oui
Non
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 :
Le programme :
MOV CX, 50
MOV SI, 300H
B1: MOV AL, [SI]
PUSH CX
DEC CX
CMP CX, 1
JL Fin
CX
50
SI
300H
Début
AL > [BX + SI]
AL
AH
CX
CX - 1
CX = 0
CX
CX - 1
Fin
Oui
Oui
Non
AL
[SI]
Empiler CX
CX
CX - 1
BX
CX
Dépiler CX
SI
SI + 1
[BX + SI]
AL
[SI]
AH
AH
[BX + SI]
CX = 0
Oui
CX < 1
Solution de la Série de TD N° : 3
B2: MOV BX, CX
CMP AL, [BX + SI]
JNG Next
XCHG AL, [BX + SI]
MOV [SI], AL
Next: LOOP B2
INC SI
Fin: POP CX
LOOP B1
HLT
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 :
Le programme :
MOV CX, 100
MOV BX, 0
MOV DX, 0
B1: MOV AX, 1
CX
100
BX
0
Début
AX = 0
BX
BX + CX
CX
CX - 1
CX = 0
Fin
Oui
Non
AX
1
DX
0
AX
AX et CX
DX
DX + CX
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !