Vous êtes sur la page 1sur 4

Module microprocesseurs et microcontrôleurs

TP N°1
Introduction :
Deux objectifs sont assignés à ce TP :
1-Initiation au langage assembleur –plutôt langage d’assemblage – relatif au
microprocesseur INTEL 8086 à travers des exemples simples.
2-Prise en main de EMU8086 émulateur logiciel qui simule le processeur 8086.
EMU8086 présente un environnement de travail avec un éditeur de texte, un
débogueur, en plus du suivi de la mémoire, des registres, des drapeaux.
La prise en main de cet outil se fera durant le TP.
Éléments d’un programme
Un programme est composé d’un ensemble d’instructions exécutées par le
processeur et des directives qui sont des commandes spéciales du programme
d’assemblage.
Durant la séance de T.P nous introduisons quelques directives indispensables.

Structure d’un programme assembleur 8086

.model small
.Stack < taille de la pile>
.data
; Initialisation des données utilisées par le programme.
; Déclaration des variables.

.code
; Instructions
End
Exercice N°1 :
Le but de l’exercice est de comprendre la notion de codage des instructions à travers
quelques exemples.
1- 1 Exécuter le bout du programme suivant pas à pas

Page 1/4
Exercice N°1 :le codage d’instructions
org 100h
mov al,23h ; Charger le registre AL par la valeur immédiate(23h)
mov ah,45 ; Charger le registre AH par la valeur immédiate(2Dh)
mov ax,6789h; Charger le registre AX par la valeur immédiate(26505)
mov al,0ABh ; Charger le registre AL par la valeur immédiate(ABh)
mov ah,0CDH ; Charger le registre AH par la valeur immédiate(CDh)
mov ax,0E10AH; ; Charger le registre AX par la valeur immédiate(E10Ah)
mov [140h],al; Transférer le contenu de AL la case mémoire d’offset(adresse) 140h
inc [140h] ; incrémenter le contenu de [140h]
mov al,[140h]; Transférer le contenu de la case mémoire d’offset(adresse) 140h vers AL
mov [160h],ax; Transférer le contenu de Ax la case mémoire d’offset(adresse) 160h
mov ax,[160h]; Transférer. les contenus des cases mémoires
d’offset(adresses) ;160h et 161h vers AX
hlt ; arrêter l’exécution du programme.
ret

1- 2. Relever le code de chaque instruction.


1- 3. Relever la taille en octets de chaque instruction.
1- 4. Visualiser la zone mémoire de votre code.
1- 5. Exécuter une deuxième fois le programme en visualisant les cases mémoires
concernées par votre programme.
1- 6. Relever l’adresse de chaque instruction
1- 7. Exécuter une autre fois le programme et relever le contenu du registre IP.
Quel est son rôle.
1- 8. Afficher le contenu du fichier listing générer par emu8086.Que contient-il ?
1- 9. Exécuter une troisième fois le programme en modifiant les données à votre
convenance.
1- 10. Si au lieu d’utiliser le registre AX alors choisir un autre registre et refaire le
programme.
1- 11. Transcrire à la main l’image (en binaire) de la zone mémoire contenant le code
du programme.
Donner votre conclusion.

Exercice N°2 : Modes d’adressage


La manière dont un opérande source est indiqué dans une instruction est appelé
mode d’adressage. Il existe 8 modes d'adressage différents dans la programmation
du 8086 mais nous les traitons pas tous ici.

Page 2/4
Copier et coller le programme de l’Exercice N°2-1 dans emu8086.
Cliquer sur :emulate →view →memory et inscrire dans les cases mémoires 160h
164h respectivement les valeurs 77h et 88h .
Exécuter le programme pas à pas et modifier les commentaires du programme.
Exercice N°2-1 
Exercice N°2-1 : Exemples d’adressage
org 100h
mov si,160h ;insérer un commentaire ici
mov di,160h ;insérer un commentaire ici
mov dl,99H ;insérer un commentaire ici
mov [140h],dl ;insérer un commentaire ici
mov bh,45h ; Charger le registre BH par la valeur immédiate(45h)
mov al,23h ; Comment est chargé AL
mov al,bh; Comment est chargé AL
mov al,[140h]; Comment est chargé AL
mov al,[si]; Comment est chargé AL
mov al,[di+4h]; Comment est chargé AL
hlt ; arrêter l’exécution du programme.
ret

Dans chacune des instructions mov al,….. Ou se trouve l’adresse offset de la source ?

Exercice N°2-2 : le mode d'adressage indirect


Le mode d'adressage indirect : Ce mode d'adressage permet d'adresser les données
à n'importe quel emplacement mémoire via une adresse offset conservée dans l'un
des registres suivants: BP, BX, DI et SI.
Copier et coller le programme de l’Exercice N°2-2 dans emu8086.
Cliquer sur :emulate →view →memory et remplir les cases mémoires allant de 160h
à 16Fh respectivement les valeurs de votre choix et exécuter le programme .
Remarque : Pour chercher de l’aide sur une instruction cliquer sur : touche F1 → 8086
Instruction Set 
Exercice N°2-2: Modes d’adressage indirect
org 100h
mov si,160h ;insérer un commentaire ici
mov cx ,16 ; insérer un commentaire ici
boucle:
mov ah,[si] ; insérer un commentaire ici
inc si ; insérer un commentaire ici
loop boucle ; insérer un commentaire ici
nop ; insérer un commentaire ici
hlt ; arrêter l’exécution du programme.
ret

Page 3/4
-Documenter chacune des instructions.
-Que réalise ce programme ?
- À quoi peut servir ce mode d’adressage.
-Exécuter une deuxième fois le programme en observant le flag FZ.
-Quand est-ce FZ est positionné.
- Quel est le rôle du registre CX dans ce programme.
-Refaire le programme en remplaçant le registre SI par un des registres DI, BX ou BP
-En se basant sur l’exemple de cet exercice ; écrire un programme qui transfère une
table d’une zone mémoire vers une autre.

Exercice N°3 :
Soit une table de données d’une certaine taille qui occupe une zone mémoire.
En s’inspirant des exercices précédents alors proposer une solution qui donne la
somme de tous les éléments de cette table.

Exercice N°4 :
Soit une table de données d’une certaine taille qui occupe une zone mémoire.
On désire créer une deuxième table à partir de la première où à chaque élément de la
première table sera ajouté la valeur 5.
Donner votre programme.

Page 4/4

Vous aimerez peut-être aussi