Вы находитесь на странице: 1из 2

USTHB/ GTR401/L2/S4

Bentoumi

TTPP11:: IInniittiiaattiioonn àà llaa pprrooggrraammmmaattiioonn ssuurr EEMMUU88008866

BBUUTT DDUU TTPP ::

Familiarisation avec l’EMU8086 et manipulation des différents registres du 8086

EXERCICE1:

1- Lancez l'environnement Emu8086 et appuyer NEW pour ouvrir un nouveau fichier « COM template » a)Saisissez les instructions suivantes et sauvegardez le sous Tp1Exo1.asm

MOV DH, 0F3 MOV DH, 0FF3h MOV DH, F3h MOV BX, 9A0100 MOV CS, 1200 MOV SI, CL MOV AX, DL MOV DX, [AX]

b) Dans la fenêtre emu8086\Mysource\ ont ete glissées dasn chaque instruction

emu8086\Mysource\ ont ete glissées dasn chaque instruction Appuyer sur “ Emulate et corriger au fur et

Appuyer sur “Emulate et corriger au fur et à mesure les erreurs qui

2- Une fois toutes erreurs corrigées, familiarisez vous avec les Deux nouvelles fenêtres qui viennent de s’ouvrir ; il s’agit du mode exécution de l’émulateur :

Fenêtre Emulateur

du mode exécution de l’émulateur : Fenêtre Emulateur Zone registre Zone Mémoire Zone code désassemblé

Zone registre

Zone Mémoire

Zone code désassemblé

Fénêtre Code Source

Zone Mémoire Zone code désassemblé Fénêtre Code Source - La fenêtre « original source code »

- La fenêtre « original source code » contient le code tel que vous l’avez écrit. La ligne surlignée en jaune est la prochaine instruction qui va être exécutée. il est possible d’interagir avec ce code en cliquant dessus. - La fenêtre « emulator : » contient3 zones : la zone des registres , la zone mémoire octet par octet. Sur une ligne, on retrouve l’adresse mémoire sur 20 bits, la valeur de l’octet en hexadécimale, en décimale et sa représentation en ASCII,La zone du code désassemblé, qui n’ a plus aucune étiquette ni nom de variable. Il s’agit du code réellement exécuté

3- Appuyer alors sur « Single step » pour executer les codes pas a pas . Noter dans la zone registres la valeur de CS et IP à chaque pas ainsi que le contenu des différents registres. Retrouver les valeurs de CS et IP dans la zone mémoire

4- Appuyer sur Reload pour recharger le programme et en exécutant le programme pas à pas à nouveau , donner le

nombre d’octets de chacune des instructions

a partir de la zone mèmoire

USTHB/ GTR401/L2/S4

EXERCICE2

Bentoumi

Ouvrir un nouveau fichier de type « COM template » et saisir le code suivant :

ORG 100h MOV AL,80h MOV BL, 81h ADD AL,BL

a) Enregistrer ce programme sous tp1exo2.asm, puis émuler

b) Exécuter le programme pas à pas et vérifier le contenu des registre et zone mémoire a cahque pas

c) Appuyer sur Flags pour voir les bits d’état à chaque pas

d) Interpréter les flags dans le cas de nombre signés et non signés

e) Refaire de même (ad ) avec le programme suivant :

ORG 100h MOV AL,F0h MOV BL, 81h SUB AL,BL

EXERCICE3

Saisir le code suivant dans un nouveau fichier Tp1exo3.asm

MOV [110h],80h MOV SI,110h ADD [SI], 7Fh MOV AL, [SI]

a) Exécuter ce programme pas

à pas et à chaque pas vérifier le contenu des registres, le nombre

d’octets des instructions , et le contenu des cases mémoire concernées ,puis lesflags

Pour voir le contenu de la mémoire [110h], appuyer sur AUX puis memory Donner la valeur de AX a la f in du programme et expliquer cette valeur

b) Modifier la dernière instruction par MOV AX ,[SI]

cette valeur

c) Modifier le programme comme suit

et donner le contenu de AX et expliquer

MOV word ptr [110h],80h MOV SI,110h ADD word ptr [SI], 7Fh MOV AX, [SI]

d) Exécuter ce programme pas

à pas et à chaque pas vérifier le contenu des registres, le nombre

d’octets des instructions , et le contenu des cases mémoire concernées , puis les flags

e)Refaire plusieurs exemples avec des valeurs différentes afin de vous familiariser avec l’emulateur et les différents registres

EXERCICE4

Ecrire un programme qui fait la somme des deux nombres de l’exercice2 mais cette fois ci les nombres seront déclares en tant que variables var1 var2

a) Donner le nombre d’ octets de chacune des instructions

b) Dans la « zone du code dèsassemble »à quoi correspont les adresses entre crochets qui suivent les instructions : MOVAL , MOVBL

c) Quelles valeurs contiennent ces adresses . Que représente donc l’identifiant var1 et var2

d) Executer le programme pas a pas et donner à chaque pas les modifications des registres

e) Aller à « View Variable »pour voir les différentes variables utilisées . Modifier le contenu des var1et var2 en appuyant sur Edit , et vérifier dans les adresses adéquates que la modification a bien eu lieu