Objectifs :
L’objectif de ce TP est de:
se familiariser le simulateur 8086 simulator.
Débuter avec le langage Assembleur.
.
I. Simulateur « Emu8086 » :
Ce logiciel est très utile pour ceux qui commencent à apprendre le langage Assembleur. Il compile
le code source et l’exécute pas à pas dans un émulateur. Un émulateur est un logiciel permettant
d’exécuter un programme sur une plate-forme.
Il est plus facile de manipuler des interférences graphiques sur PC que de travailler sur du
matériel.
En cliquant deux fois sur l’icône de l’émulateur, l’éditeur du programme assembleur ainsi que
d’autres fenêtres s’ouvrent à savoir : registres A, B, C, D, E, H, L, compteur de programme (CP),
pointeur de pile (SP), flags(F), mémoire, Interfaces d’entrée-sortie, convertisseur binaires-
décimal,…….
II. Programmation :
3- Ensuite, cliquer sur empty workspace dans la liste affichée afin d’avoir un document
vide.
4- Saisir, alors, le code assembleur suivant :
ORG 100h
MOV AX, 0B800h
MOV DS, AX
MOV [02h],’B’
MOV [04h],’O’
MOV [06h],’N’
MOV [08h],’J’
MOV [0Ah],’O’
MOV [0Ch],’U’
MOV [0Eh],’R’
MOV [10h],’,’
MOV [12h],’M’
MOV [14h],’O’
MOV [16h],’N’
MOV [18h],’D’
MOV [1Ah],’E’
MOV [1Ch],’!’
MOV [1Eh],’!’
MOV [20h],’!’
RET
- ----------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
5- Emuler le code en cliquant sur emulate se trouvant sur la barre de taches principale.
6- Deux fenêtres s’afficheront. Une fenêtre (Original sous code) contient le code qu’on vient
d’écrire. Une seconde fenêtre (emulator) qui nous permettra d’exécuter le code, de voir les
contenus des différents registres et beaucoup d’autres choses qu’on verra en fur et à
mesure.
--------------------------------------------------------------------------------------------------------------------
Programme : Correction :
---------------------------------------------------------------------------
a- Emuler le code en cliquant sur emulate se trouvant sur la barre de taches principale.
b- Exécuter le code ainsi écrit en cliquant sur run.
Après exécution, on aura la fenêtre de l’émulateur, plusieurs informations sont présentes :
sur les registres, la mémoire, sur le programme………
Remarquer qu’il existe plusieurs lignes de code qui se termine par HLT, et l’adresse
correspondante est 0101A. Ceci est simplement du au fait que le programme lui-même est
stocké en mémoire.
c- Que remarquez-vous sur le contenu des différents registres ?
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Page 5/9 TP N°1
Microprocesseurs et Microcontrôleur TP N1
----------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
e- Tapez maintenant 100 dans la zone indiquant l’adresse mémoire et appuyez sur entrée du
clavier.
Valeur signification
01100
03
003
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Code 1:
MOV AX, 33h
MOV [100h], AX
HLT
Code 2:
MOV AX, 33h
MOV [100h], AX
HLT
-compléter le tableau ci-dessous:
Valeur Code1 Code2
Adresse physique
Valeur en Hexadécimal
Valeur en Décimal
Valeur en code ASCII
- Commentaires :
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
III- Homework:
- Assume - dup
- Mov - dl
- Debut - jne
- encore : - inc
- Ends - dw
- cmp - ax
TP DW 8086 TP =
Nombre DD ? Nombre =
Matrice DW 12, 54, 30 Matrice =
Chaine DB ‘Ceci est un message’ Chaine =
mille EQU 1000 mille =