Vous êtes sur la page 1sur 4

UNIVERSITE M’HAMED BOUGARA DE BOUMERDES

FACULTE DE TECHNOLOGIES
Département : Ingénierie des Systèmes Electriques
Master Electronique des Systèmes Embarqués- S1 (2019/2020)

Module : Conception de Systèmes à Microprocesseurs


Série de TD N°2 : Opérations Arithmétiques et Logiques
sous le Microprocesseur 8086

Exercice N°1 :
Ecrire un programme en assembleur 8086 qui permet :
1. Initialiser le registre ax avec la valeur 5h.
2. Décrémenter ax jusqu’à la valeur 0h.
3. Initialiser le registre bx avec la valeur 10h.
4. Décrémenter bx jusqu’à la valeur 3h.
Solution :

MOV AX,05
etq DEC AX
JNZ etq
MOV BX,10
etq2 DEC BX
JNZ etq2
Exercice N°2 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de :
1. Initialiser les cases mémoire comme suite :
@250h=FFh ; @251h=0Fh ;@252h=10h ;@252h=1Eh ;@253h=02h
2. Calculer le résultat de l’opération suivante :
@260h=@250h - @ 251h - @252h - @253h
Exercice N°3 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de :
1. Initialiser les cases mémoire comme suite :
@250h=FFh ; @260h=0Fh ;@270h=10h
2. Multiplier ces cases mémoire par 05h et mettre les résultats dans @251h, @261h et @271h
respectivement.
Exercice N°4 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de :
1. Initialiser les cases mémoire comme suite :
@250h=1Eh ; @251h=0Fh ;@252h=10h
2. Faire le produit de ces cases mémoire et mettre le résultat dans @253h.
Exercice N°5 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de lire le mot
telecommunication, caractère par caractère, à partir du clavier et le sauvegarder dans la mémoire à partir de
l’adresse @250h.
Le programme permet également de faire la somme de @250h jusqu’à @260h et mettre le résultat dans
@300h.
Solution:
mov si,0000
mov bx,0000
mov cx,0011
etq mov ah,08
int 21
mov ah,00
mov [250+si],al
Add bx,ax
inc si
Loop etq
mov [300],bx

Exercice N°6 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de lire le mot UMBB,
caractère par caractère, à partir du clavier et le sauvegarder dans la mémoire à partir de l’adresse @250h.
Le programme permet egalement de faire la multiplication de 16 bits des données sauvegardées à partir de
@250h et mettre le résultat dans l’adresse @400h.
Solution :
mov si,0000
mov cx,0004
mov ah,08
etq int 21
mov [250+si],al
inc si
loop etq
mov ax,[250]
mov bx,[252]
mul bx
mov [400],ax
mov [402],dx
Exercice N°7 :
Ecrire un programme en langage Assembleur du microprocesseur 8086 permettant de calculer la moyenne
celon les tableaux ci-dessous, telque les notes sont enregistrées de @500h à @503h et les coefficients de
@600h à @603h, et sauvegarder le résultat à @550h et le reste à @650h.

@ @500h @501h @502h @503h


Notes 0Fh 0Ah 8h 10h

@ @600h @601h @602h @603h


Coefficients 01h 02 03 01

Exercice N°8 :
Soit un tableau T de 10 valeurs de 8 bits qui commence à partir de l’adresse mémoire @250h, initialisé
comme suit :
@250h=20h @255h=1Ah
@251h=12h @256h=5Ch
@252h=15h @257h=03h
@253h=21h @258h=07h
@254h=0Bh @259h=02h
- Ecrire un programme en langage assembleur du microprocesseur 8086 permettant de :
a. Ajouter la valeur 05h à toutes les cases mémoire du tableau T.
b. Faire la somme de ces nouvelles valeurs du tableau T et la sauvegarder dans la case mémoire
@300h (@300h = @250h + 251h + …. +@259h).

Solution :
mov cx,0A
mov bx,250
mov al,05
etq1 add [bx],al
inc bx
loop etq1

mov cx,0A
mov bx,250
mov ax,00
etq2 mov dx,00
mov dl,[bx]
add ax,dx
inc bx
loop etq2
mov [300],ax

Exercice N°9 :
Soit un tableau T de 10 valeurs de 8 bits qui commence à partir de l’adresse mémoire @250h.
@250h=F5h @255h=1Ah
@251h=12h @256h=5Ch
@252h=15h @257h=03h
@253h=21h @258h=0Ch
@254h=0Bh @259h=22h
1. Ecrire un programme en langage assembleur du microprocesseur 8086 permettant de :
a. Ajouter la valeur 05h à toutes les cases mémoire du tableau T.
b. Faire la soustraction des nouvelles valeurs du tableau T (@250h-@251h-…-@259h) et la
sauvegarder dans la case mémoire @300h.
Exercice N°10 :
1. Ecrire le programme qui permet de mettre à zéro deux zones mémoire qui commence à l’adresse
physique 06302h, sachant que DS=630h.
2. Refaites la même question pour 10 zones mémoires. (utiliser l’instruction LOOP).
Solution :
Offset = Adresse physique – DS * 10h
Offset = 06302h – 0630h * 10h  Offset = 0002h
1. Premier Programme :
MOV AX,630
MOV DS,AX
MOV SI,02
MOV AL,00
MOV [SI],AL
MOV [SI+1],AL
2. 2eme Programme :
MOV CX,0A
MOV AX,630
MOV DS,AX
MOV SI,02
MOV AL,00
adresse MOV [SI],AL
INC SI
LOOP adresse

Vous aimerez peut-être aussi