0% ont trouvé ce document utile (0 vote)
19 vues16 pages

Guide 1 Emu8086

Ce document présente un guide pour utiliser l'émulateur EMU8086 et se familiariser avec les éléments de base de la programmation du microprocesseur 8086. L'objectif est d'identifier les composants de l'environnement de programmation d'EMU8086 et de comprendre des concepts tels que les registres, les modes d'adressage et la création de fichiers COM en exécutant de petits programmes d'exemple. Les étapes pour ouvrir EMU8086, créer et compiler du code, et observer l'exécution en reliant les informations de l'assembleur sont expliquées.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues16 pages

Guide 1 Emu8086

Ce document présente un guide pour utiliser l'émulateur EMU8086 et se familiariser avec les éléments de base de la programmation du microprocesseur 8086. L'objectif est d'identifier les composants de l'environnement de programmation d'EMU8086 et de comprendre des concepts tels que les registres, les modes d'adressage et la création de fichiers COM en exécutant de petits programmes d'exemple. Les étapes pour ouvrir EMU8086, créer et compiler du code, et observer l'exécution en reliant les informations de l'assembleur sont expliquées.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université

Sainte Catholique
María
Faculté des Sciences E
Ingénieries physiques et
Formelles
Programme Professionnel d'Ingénierie
Électronique

Guide 1 : emu8086

Enseignant :
Ing. Pedro Alex Rodríguez Gonzales

Élève :
Manuel Aronés Vargas
Sergio Granados Quezada

Cours :
Microprocesseurs

Arequipa -2018
Introduction à l'EMU8086 Faculté : Études Technologiques.
École: Électronique.
Matière : Microprocesseurs

Objectif Général

Utiliser le programme émulateur EMU8086 et le relier aux éléments de base qui


conforment le modèle de programmation du microprocesseur 8086.

Objectifs spécifiques

•Identifier les principaux éléments qui composent l'environnement de programmation


du logiciel EMU8086.
•Identifier les enregistrements du modèle de programmation du 8086.
•Observer la relation qui existe entre les langages d'assemblage et le langage machine.
•Reconnaître de manière intuitive les modes d'adressage de base du micro
8086.
•Imprimer un caractère sur l'écran de l'utilisateur, en modifiant ses paramètres.
•Utilizar el emulador en la creación y ejecución un archivo tipo COM.

Matériaux et équipements

•Guide de laboratoire
Ordinateur PC avec le programme EMU8086

Procédure

1) Exécutez le programme émulateur de microprocesseurs EMU8086 en double-cliquant


Cliquez sur l'icône du bureau, une fenêtre apparaîtra comme dans la Figure 1.
Figure 1 : Fenêtre initiale de l'emu8086

2) Appuyez sur le bouton qui indique « Nouveau ».

3) Vous verrez une fenêtre où vous écrirez vos futurs programmes, appelés en
code source général

4) Depuis là, vous pouvez créer un nouveau document. Observez la figure 2 "Choisissez le code
modèle
Figure 2

On vous présentera six options, choisissez "espace de travail vide". Vous remarquerez (appuyez-vous sur
la Figure 3) une fenêtre avec la barre de menu classique (Fichier, Édition, etc.) avec quelques
éléments distinctifs (Compile, Emulateur, Math, etc.) ainsi qu'une série de
boutons qui vous permettent d'ouvrir un nouveau fichier, de compiler, d'émuler et d'autres
fonctions utiles. Dans le texte, vous observerez deux lignes de commande qui sont un
en-tête nécessaire pour créer un fichier de type COM.

Figure 3

5) Sélectionnez dans la barre de menu l'option "ÉMULATEUR" et dans celle-ci "MONTRER"


EMULATEUR”. Une fenêtre s'ouvrira où vous pourrez observer différents éléments
(appuyez-vous sur la Figure 4 pour interpréter l'information). Certains boutons qui
permettent de réaliser des actions telles que : charger, recharger, exécuter
pas à pas (étape unique) et exécuter. Vous pourrez également voir, dans la partie
central, trois colonnes dans lesquelles est détaillé le
contenu des registres du 8086, le contenu de la mémoire et le programme
désassemblé. Vous pouvez accéder à l'écran utilisateur en bas,
código fuente(actual source), la Unidad Aritmética y Lógica(ALU), la Pila
(pile) et le registre des drapeaux (flags) ou états.

6) Fermez la fenêtre de l'émulateur, mais ne fermez pas la fenêtre du code source.

REMARQUE : les adresses mémoire sont écrites au format segment et décalage

Figure 4

7) Maintenant, analysez le code source suivant (appelé PREMIER PROGRAMME),


s'aidant des commentaires et du diagramme de flux qui l'accompagne. Essayez
prédire chaque changement que subiront les données hexadécimales dans les enregistrements de
microprocesseur.
PREMIER PROGRAMME
#FAIRE_COM#

ORG 100h
DÉBUT

déplacer AH, 7Ah carga AH avec 7Ah


AH=7Ah mov BL, 99 ;charge BL avec 99
BL=99
CL=11001111b mov CL, 11001111b ;charge CL avec 11001111b

AX=100 déplacer AX, 100 ;charge AX avec 100


BX= A mov BX, 'A' ; charge BX avec le caractère A
CX=0ABCDh
déplacer CX, 0ABCDh ;charge CX avec ABCDh
DX=6540
mov DX, 6540 ;charge DX, avec 6540

FIN
ret ;terminer le programme

8) Ouvrez le fichier source nommé [Link], comme vous le remarquerez c'est le même programme
que précédemment analysé.

9) En utilisant le bouton respectif, compilez le code source, notez que le programme vous
informe qu'il créera un fichier avec l'extension COM.
Quel nom le système attribue-t-il au fichier .COM ? P1

10) Si aucune erreur de compilation n'est signalée, procédez à l'émulation du programme. Analysez le
informations qui sont présentées en s'aidant de la Figure 5.

11) Vous pouvez consulter une copie du code source dans laquelle la ligne est marquée.
instruction qui sera exécutée. Vous pouvez également voir dans la fenêtre de l'émulateur
le contenu des enregistrements, la mémoire et le programme désassemblé. Si vous avez
problèmes pour interpréter cette information, veuillez demander de l'aide par
partie de son instructeur.
Figure 5

12) Copiez les données stockées dans les registres avant d'exécuter le programme :

AX : 0064 BX : 0041 CX : ABCD DX : 198C

CS : F400 DS : 0700 0700 SS : 0700

BP : 0000 IP : 0154 SP FFFA

DI : 0000 SI: 0000

13) Exécutez complètement le programme (EXÉCUTER) et notez les données résultantes. Vérifiez si
concordent avec les données que vous attendiez.

AX: 00 00 BX : 00 00 CX : 00 13 DX : 00 00

CS : 0700 DS : 0700 0700 SS : 0700

BP: 0000 IP: 0100 FFFE

DI : 0000 SI : 0000

14) Rechargez à nouveau le programme, observez le contenu des registres, sur


tout le contenu de CS et IP. Analysez vos observations en les comparant à ce que
apparait dans le TABLEAU 1. Si vous avez des doutes, veuillez demander l'assistance de votre
instructeur.
CHANGE SON ENREGISTREMENT
CS:F400 IP:0154
15) Exécutez uniquement la première instruction (Pas à pas).
Observez les changements (surtout dans CS et IP) le données attendue a-t-elle été chargée dans AH ?

Si je charge 7A

16) Interprete la información de la TABLA 1 respecto de sus resultados

17) Continuez à exécuter le programme étape par étape jusqu'à l'instruction RET, au même
temps remplissez les espaces vides du TABLEAU 1. Si vous avez des doutes sur cette activité,
Veuillez demander l'assistance de votre instructeur.

18) Continuez à exécuter les instructions jusqu'à ce que le programme soit terminé.

ADRESSES LANGAGE DE LANGAGE


MACHINE ENSEMBLEUR
SEGM(CS) DÉCALAGE(IP) CHAMPS LIGNE
0700 0100 B4 7ème mov AH, 7A
0700 0102 B3 63 déplacer BL, 99

0700 0104 B1 CF déplacez CL, 11001111b

0700 0106 B8 64 00 déplacer AX, 100

0700 0109 BB 41 00 déplacer BX, 78

0700 010C B9 CD AB mov CX, 0ABCDh


0700 010F BA 8C 19 mov DX, 6540
0700 0112 C3 ret
NOTA : À partir de ce point, le programme exécute une procédure prédéterminée
appel Interruption.
0700 0000 CD 20 INT 20H
F400 0150 FF FF BIOS DI
TABLEAU 1

19) Fermez la fenêtre de l'émulateur, mais ne fermez pas la fenêtre du code source.

20) Créez un nouveau fichier, type COM, et écrivez le code appelé DEUXIÈME
PROGRAMA, après son en-tête respectif, n'oubliez pas les tabulations.
DEUXIÈME PROGRAMME
NOTA : Remarquez que l'instruction MOV a été écrite de différentes manières.
DÉBUT #FAIRE_COM#
ORG 100h
DX = 112 h
BX=DX

MOV DX, 0112h ; Charge une valeur immédiate dans DX

AL= A
MOV BX, DX ; Copie DX en BX, mouvement entre
AH = 61h
M [BX] = AH
;enregistrements
MOV AL, 'A' Stocke le caractère dans AL
MOV AH, 61h ; Sauvegarde la donnée dans AH
M [BX +1] = AL
CX = M [BX ]] MOV [BX], AH ; Stocke à l'adresse indiquée par
; DS:BX, indirect

FIN MOV [BX+1], AL ; Stocke les données relatives à la base, DS:BX+1


MOV CX, [BX] ; Copie les données de l'adresse dans CX
;enregistrement, indirect
RET ; fin du programme

21) Émulez le programme et avant de l'exécuter, notez dans le TABLEAU 2 le contenu des
directions qui ont un déplacement 0112h et 0113h, ainsi que le contenu de
CX en la columna Inicio. Más adelante se retomará este punto para comparar los
changements dans les données.

22) Corrige étape par étape le programme juste avant d'exécuter la cinquième instruction,
essayant de prédire les actions qui seront réalisées, en s'aidant des
Commentaires de chaque instruction, si vous avez des problèmes, consultez l'instructeur.

23) Observez et notez dans le TABLEAU 2 les résultats de votre observation

24) Exécutez la cinquième instruction, notez les résultats.

25) Exécutez étape par étape le reste des instructions, en prenant note des résultats.

SEG DÉCALAGE Début du Avant de Après Après Après


(DS) programme 5ª de 5ª de 6ème de 7ème
0700 0112h 90 90 61 61 61
0700 0113h 90 90 90 41 41
REGISTRE CX 00 11 00 11 00 11 00 11 41 61
TABLEAU 2

26) Rechargez à nouveau le programme.

27) Exécutez le programme étape par étape, en notant dans le TABLEAU 3 la valeur de chaque donnée
que l'on lui demande, en prenant comme référence la procédure qu'il a suivie
la TABLE 1.
28) Fermez la fenêtre de l'émulateur, mais ne fermez pas la
fenêtre du code source.

ADRESSES LANGAGE MACHINE LANGAGE ASSEMBLEUR


SEGM DÉCALAGE CAMPS LIGNE
(IP)
0700 0103 8B DA MOV DX, 0112h
0700 0105 B0 41 MOV BX, DX
0700 0107 B4 61 MOV AL,'A'
0700 0109 88 27 DÉPLACER AH,61h

0700 010B 88 47 01 MOV [BX], AH


0700 010E 8B 0F MOV [BX+1], AL
0700 0110 C3 MOV CX ,[BX]
0700 0000 CD 20 RET
TABLEAU 3

29) Écrivez un nouveau programme .COM et tapez le code appelé TROISIÈME PROGRAMME.
30) Émulez et exécutez le programme (exécuter) et notez les informations qui s'affichent dans la
écran utilisateur, doit observer un caractère 'A' avec une couleur pour le fond et
pour le caractère. Notez cette information.

__________________________________________________________________

__________________________________________________________________
TROISIÈME PROGRAMME
#faire_com#
DÉBUT
Org 100h

AX = 0B800h
DS = AX MOUV AX, 0B800h
MOV DS, AX

CL = A MOV CL, 'A'


CH = 1101111b
MOV CH, 11011111b
BX = 15Eh
MOV BX, 15Eh

M [BX] = CX
MOUV [BX], CX ; Copier le contenu de CX dans le
; adresse (B800:015E) DS:BX

FIN
RET

31) Modifiez le programme en remplaçant la donnée stockée dans BX (15Eh) par


10Eh et faites fonctionner le programme.

32) Observez et décrivez comment le changement a affecté le fonctionnement du programme.

Dans le registre BX, la donnée 010E est stockée au lieu de 015E, la donnée de CX est remplacée.
parce que BX est à un autre endroit de la mémoire qui est 15EH.

33) Modifiez maintenant les données stockées dans CH en les remplaçant par 11010000b et
observez son effet, notez vos observations.

Dans le registre CH, la valeur de 11010000b est en hexadécimal D0.

34) Remettez CH, maintenant par 10011110b, observez et décrivez le changement.

__________________________________________________________________

__________________________________________________________________

35) Essayez d'apporter quelques modifications à CH, CL et BX, notez vos observations :

__________________________________________________________________

__________________________________________________________________
36) Informez votre instructeur que vous avez terminé la pratique.
Analyse des résultats

a) Premier programme.

Dans l'en-tête du programme, pourquoi la ligne "org 100h" est-elle incluse ?

C'est la directive qui :

ORG Mets le compteur de position à zéro

En introduisant des données dans les registres du microprocesseur, on utilise différents formats.
(bases de numération) combien et lesquelles sont-elles ?
La syntaxe de l'instruction MOV définit trois champs : instruction, donnée1 et donnée2. Au
déplacer les données, quelle est la source et quelle est la destination ?
En observant le tableau 1, on remarque que la même instruction MOV se voit assigner différentes
codes hexadécimaux, à quoi cela est-il dû ?
Quelle est la fonction de l'enregistrement IP dans le PREMIER PROGRAMME ?
Dans la colonne OFFSET du tableau1, ceux-ci ne s'incrémentent pas à un rythme constant. Pourquoi ?
quoi?

b) Deuxième programme.

En comparant les deux premières instructions, quelles différences y a-t-il en les exécutant, étant
que les deux sont MOV ?
Dans les trois dernières instructions, des crochets (parenthèses carrées) ont été inclus dans les
instructions Quelles différences avez-vous remarquées dans son exécution par rapport aux deux premières
instructions ?
Pourquoi, en exécutant la septième instruction, les données sont-elles stockées dans CX dans cet ordre
spécifique?

c) Troisième programme.

En exécutant le programme, au fur et à mesure que je faisais les modifications, quel effet concret
logra el cambio en el registro BX?
En modifiant CH, quels bits spécifiques ont été modifiés pour apporter des changements en arrière-plan et
couleur des caractères ?

Recherche complémentaire

Cette activité doit se dérouler après l'exécution du guide de laboratoire.


et a pour objectif de compléter et d'élargir le thème développé en gardant à l'esprit
les activités futures.

Investigue :
Qu'est-ce que les modes d'adressage ?
Los modos de direccionamiento indican la manera de obtener los operandos
Combien de modes d'adressage le microprocesseur 8086 a-t-il et lesquels sont-ils ?

Ces processeurs ont 27 modes d'adressage (un nombre assez plus


plus grand que les microprocesseurs précédents) ou des règles pour localiser un opérande d'une
instruction. Trois d'entre eux sont communs aux microprocesseurs précédents :
1. Adressage inhérent (l'opérande est implicite dans l'instruction, par
exemple, dans la multiplication un des opérandes est toujours AX).
2. Adressage à un registre (l'opérande est un registre du microprocesseur)
3. Adressage immédiat (l'opérande est un numéro qui se trouve dans le
même instruction),

Quels modes d'adressage possède l'instruction MOV ?

Admet tous, mais nous allons prendre par exemple ceux-ci ci-dessous.

Adressage de registre : lorsque les deux opérandes sont un registre. Exemple :


MOV AX,BX ;transfère le contenu de BX dans AX

Direccionamiento inmediato: cuando el operando origen es una constante. Ejemplo:


MOV AX,500 ;charge dans AX la valeur 500.

Adressage direct : lorsque l'opérande est une adresse mémoire. Celle-ci peut être
spécifiée avec sa valeur entre [ ], ou bien par une variable définie au préalable (comment
définir des étiquettes se verra plus tard). Exemple :
MOV BX,[1000] ;stocke dans BX le contenu de l'adresse mémoire DS:1000.

MOV AX,TABLA ;almacena en AX el contenido de la dirección de memoria DS:TABLA.

Adressage indirect par registre : lorsque l'opérande se trouve en mémoire dans une
position contenue dans un registre (BX, BP, SI ou DI). Exemple :
MOV AX,[BX]; stocke dans AX le contenu de l'adresse mémoire DS:[BX].
MOV [BP],CX ; stocke dans l'adresse pointée par BP le contenu de CX.

Adressage par registre de base : lorsque l'opérande est en mémoire à une position
pointée par le registre BX ou BP auquel on ajoute un certain déplacement Exemple :

MOV AX, [BP] + 2 ; stocke dans AX le contenu de la position mémoire qui en résulte
de sumar 2 au contenu de BP (dans le segment de pile). Équivalent à MOV AX, [BP
+ 2]

Adressage indexé : lorsque l'adresse de l'opérande est obtenue comme la somme de


un déplacement plus un indice (DI, SI). Exemple :
MOV AX, TABLA[DI] ; stocke dans AX le contenu de la position mémoire pointée
pour le résultat d'ajouter à TABLA le contenu de DI.
Adressage indexé par rapport à une base : lorsque l'adresse de l'opérande se
obtient de la somme d'un registre de base (BP ou BX), d'un indice (DI, SI) et éventuellement d'un
déplacement. Exemple :
MOV AX, TABLA[BX][DI] ;stocke dans AX le contenu de la position de mémoire
pointé par la somme de TABLE, le contenu de BX et le contenu de DI.

Quelles sont les différences entre l'instruction XCHG et l'instruction MOV ?

Instrucciones de transferencia de datos


Les instructions de transfert de données copient des données d'un site à un autre et sont : MOV, XCHG,
XLAT, LEA, LDS, LES, LAHF, SAHF, PUSH, PUSHF, POP, POPF.
MOV
Réalisez le transfert de données de l'opérande source vers la destination. Comme nous l'avons déjà vu dans la
parmi les modes d'adressage, MOV accepte tous les types d'adressage. Les deux
Les opérandes doivent être de la même taille et ne peuvent pas être tous deux en mémoire.
MOV reg, reg ; reg est n'importe quel registre.
MOV mem, reg ; mem indique une position de mémoire
MOV reg, mem
MOV mem, dato ; dato est une constante
MOV reg, donnée
MOV seg-reg, mem ;seg-reg es un registre de segment
MOV seg-reg, reg
MOV mem, seg-reg
MOV registre, registre-seg

XCHG
Réalisez l'échange entre les valeurs des opérandes. Il peut y avoir des opérandes dans les registres et
en mémoire
XCHG reg, mem
XCHG reg, reg
XCHG mem, reg
Bibliographie

Brey, B. [Link] microprocesseurs Intel 8086 / 8088, 80186, 80286, 80386 et 80486.
Architecture, programmation et interfaces Prentice Hall, Mexico DF, 19953
Bibliothèque UDB001.6404 B847 1997

Vous aimerez peut-être aussi