Vous êtes sur la page 1sur 7

Filière : Génie Informatique (GI)- S1 Élément 2 : École Supérieure de

Module : Architecture des ordinateurs Programmation Assembleur Technologie - Kenitra


Année universitaire : 2021/2022 Univ. Ibn Tofail
Travaux pratique

TP N°1
Premiers pas en programmation Assembleur 8086
Parmi les opérations de base qu’on réalise en programmation Assembleur 8086, le
transfert de données. Ceci se fait grâce aux instructions : MOV.
1. L’instruction MOV :
L’instruction MOV (En anglais : move est la traduction de mot français déplacer). En
assembleur, Cette instruction réalise un transfert d’une source vers une destination :

MOV destination, source


Les transferts possibles :
Destination Source
Registre Registre
Registre Mémoire
Mémoire Registre
Registre Valeur immédiate
Mémoire Valeur immédiate

Exemple 1 :

mov ax,bx
Charge le contenu du registre bx dans le registre ax. Dans ce cas, le transfert se fait
du registre bx (source) vers un autre registre ax (destination).
Exemple 2 :

mov bl, [1200H]


Cette instruction réalise le transfert du contenu de la case mémoire (source)
d’adresse effective (offset) 1200H vers le registre bl (destination).
L’instruction comporte l’adresse de la case mémoire où se trouve la donnée.
Exemple 3 :

mov [1200H], al
Cette instruction réalise le transfert du contenu du registre al (source) vers la case
mémoire (destination) d’adresse effective (offset) 1200H.
L’instruction comporte l’adresse de la case mémoire où la donnée va être transférer.
Exemple 4 :

1
mov al, 12H
Charge le registre al (destination) avec la valeur immédiate (source) 12H.
La donnée est fournie immédiatement avec l’instruction.
Exemple 5 :

mov [1200H], 12H


Cette instruction réalise le transfert de la valeur immédiate (source) 12H vers la
case mémoire (destination) d’adresse effective (offset) 1200H.
L’instruction comporte l’adresse de la case mémoire où la donnée va être transférer.
2. Débuter avec Emu8086 :
1 – Installer, puis ouvrir l’émulateur emu8086.

2 – Choisir un nouveau document en cliquant sur New dans le menu affiché.

3 – En suite, cliquer sur empty workspace dans la liste affichée afin d’avoir un
document vide.
4 – Saisir, alors, le code assembleur suivant :

MOV AL, 10H


2
MOV AH, 09H
5 – Émuler le code en cliquant sur emulate se trouvant sur la barre de taches
principale.

6 - Deux fenêtres s’afficheront :


 Une fenêtre (Original souce 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.

7 – Exécuter le code ainsi écrit en cliquant sur run.


8 – Que remarquez-vous sur le contenu des différents registres ?
………………………………………………………………………………………………….……………………………………………………………………………………………
…….………………………………………………………………………………………………….………………………………………………………………………………………
………….………………………………………………………………………………………………….…………………………………………………………………………………

9 – Maintenant, sur la fenêtre emulator :

3
 Cliquer sur reload afin de recharger le code (c.à.d : Le mettre à nouveau en
mémoire pour le ré-exécuter).
 Puis cliquer plusieurs fois sur single step et remarquer à chaque fois les
changements dans les registres.
10 – Donner les résultats dans le tableau suivant :

10 – Quel est le rôle de single step ?


………………………………………………………………………………………………….……………………………………………………………………………………………
…….………………………………………………………………………………………………….………………………………………………………………………………………
………….………………………………………………………………………………………………….…………………………………………………………………………………

11 – Enregistrer ce code sous le nom : monprog1.asm.


3. Manipulation des registres et de la mémoire :
1 – Saisir, alors, le code assembleur suivant :

mov ax, 05h


mov [100], ax
2 – émuler le code en cliquant sur emulate se trouvant sur la barre de taches
principale.
3 – Exécuter le code ainsi écrit en cliquant sur run.

4 – Que remarquez-vous sur le contenu des différents registres ?


………………………………………………………………………………………………….……………………………………………………………………………………………
…….………………………………………………………………………………………………….………………………………………………………………………………………
………….………………………………………………………………………………………………….…………………………………………………………………………………
……………….………………………………………………………………………………………………….……………………………………………………………………………
…………………………………………………………………....……………….………………………………………………………………………………………....……………

4
5 – Que remarquez-vous sur la mémoire ?
………………………………………………………………………………………………….……………………………………………………………………………………………
…….………………………………………………………………………………………………….………………………………………………………………………………………
………….………………………………………………………………………………………………….…………………………………………………………………………………
……………….………………………………………………………………………………………………….……………………………………………………………………………
…………………………………………………………………....……………….………………………………………………………………………………………....……………
….………………………………………………………………………………………....……………….………………………………………………………………………………

Indication :
– Après exécution, on aura la fenêtre suivante (fenêtre de l’émulateur), plusieurs
informations sont présentes sur : les registres, la mémoire, le programme, …
Registres mémoire Programme

Adresse physique Hexadécimal Décimal Code ASCII

– Remarquer qu’il existe plusieurs lignes de codes qui se termine par HLT, et
l’adresse correspondante est 0101A. Ceci est simplement dû au fait que le
programme lui-même est stocké en mémoire.

6 – Taper maintenant 100 dans la zone indiquant l’adresse mémoire et appuyer sur
entrée du clavier.

5
7 – Observer maintenant la case correspondant à 01001 et compléter le tableau

Valeur Signification
01100
05
005

8 – Saisir, alors, le code assembleur suivant :


mov ah, 05h
mov [100], ah
9 – Emuler le code en cliquant sur emulate se trouvant sur la barre de taches
principale.
10 – Exécuter le code ainsi écrit en cliquant sur run.
11- Quelle est la différence entre l’utilisation de ax et ah ?
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
…………………………………………………………………………………………………
12 – De même Saisir, Emuler et Exécuter les codes assembleur suivant 1er cas :

mov ax, 55h


mov [100], ax

Et 2eme cas :
mov ax, 55
mov [100], ax

6
13 – Compléter le tableau ci-après.
Valeur 1er cas 2eme cas
Adresse physique
Valeur en Hexadécimal
Valeur en Décimal
Valeur en Code ASCII

14 – Commentaire :
…………………………………………………………………………………………………
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….

15 – Saisir, alors, le code assembleur suivant et refaite le même travail.

mov al, 55h


mov ah, 36
mov [100h], al
mov [104h], ah

16 – Saisir, alors, le code assembleur suivant et refaite le même travail.

mov ax, 55h


mov [100h], ax
mov bx, 100h
mov cx, [bx]

17- Saisir, alors, le code assembleur suivant et refaite le même travail.

mov [100h], 36h


mov [104h], 52h
mov [106h], 69h
mov bx, 100h
mov cx, [bx]
mov dx, [bx+4]
mov ax, [bx]+6

Vous aimerez peut-être aussi