Vous êtes sur la page 1sur 4

Département Electronique Faculté de Technologie Université Ferhat Abbas

TP 1 : Prise en main de l’emul8086 et


mise en œuvre d’une instruction.

Programme 1: Un programme, une seule ligne, une seule instruction MOV.

MOV : Charger ou Copier le second opérande dans le premier (voir la liste des
instructions).

L’instruction ‘Mov’ utilisant l’opérande ‘immediate’ avec les opérandes REG et SREG.

1- Exécuter l’émulateur Em8086. (File, new, com template,….)


2- Ecrire le programme pour charger l’opérande ‘immediate’ 01 dans le registre AX.
Mov ax, 01
3- Exécuter le programme que vous avez écrit : F5.
Reprendre l’opération avec les 15 REG (02 dans BX, 03 dans CX, etc…) restants.
Voir tableau I

Votre observation ? Mov peut charger tous ces registres.


Reprendre l’opération en inversant les opérandes.
Votre observation  ? L’Assembleur n’accepte pas l’opérande ‘immediate’ comme
première opérande.
Ecrire le programme pour charger l’opérande ‘immediate’ 01 dans le registre segment
(SREG) DS.
4- Exécuter le programme que vous avez écrit : F5.
Reprendre l’opération avec les 3 SREG (02 dans ES, 03 dans SS, etc…).

Votre observation  ? L’Assembleur n’accepte pas D’SREG avec ‘immediate’

Reprendre l’opération en inversant les opérandes.

Votre observation  ? L’Assembleur n’accepte pas ‘immediate’ comme première


opérande.

1- Ecrire le programme pour charger l’opérande ‘immediate’ 268 dans l’opérande


registre AL.
2- Exécuter le programme que vous avez écrit : F5.
3-
Votre observation ? Erreur, 268 ne peut être charge dans Al=255

4- Ecrire le programme pour charger l’opérande ‘immediate’ 04 dans un deuxième


opérande ‘immediate’ 07.
5- Exécuter le programme que vous avez écrit : F5.

Votre observation  ? L’Assembleur n’accepte pas ‘immediate’ comme première


opérande.

L’instruction ‘Mov’ utilisant l’opérande REG avec les opérandes REG et SREG.

Licence électronique 1 Systèmes à microprocesseurs


Département Electronique Faculté de Technologie Université Ferhat Abbas

1- Charger l’opérande AL avec l’opérande ‘immediate’ 12.


2- Charger l’opérande AL dans l’opérande AH.
3- Charger l’opérande AL dans l’opérande BL.
4- Charger l’opérande AL dans l’opérande CL.
5- Charger l’opérande BL dans l’opérande DH.
6- Charger l’opérande BP dans l’opérande BX.
7- Charger l’opérande CH dans l’opérande BL.
8- Exécuter le programme que vous avez écrit : F5.
(Chez vous vous pourrez reprendre l’opération pour vérifier toutes les combinaisons
possibles)
Votre observation : Fonctionne très bien
1- Charger l’opérande ‘immediate’ 09 dans l’opérande AL.
2- Charger l’opérande AL dans l’opérande AX.
3- Charger l’opérande AX dans l’opérande AL.

Votre observation ? Ne marche pas dans le deux sens car on doit pas mélanger les
tailles (16 bits et 8 bits).

L’instruction ‘Mov’ utilisant l’opérande ‘memory’.

Saisir le programme suivant :


Mov [10H], 12
Exécuter le programme.
Votre observation  ? Il faut aller à l’adresse 10 et observer.
Saisir le programme suivant :
Mov BX, 10H ; le H indique que 10 est en hexadécimale c'est-à-dire 16 en décimal.
Mov [BX], 08---------------------------

Votre observation ? Les deux programmes réalise la même chose 1- écrit 12 et 2- écrit 8
dans l’adresse 10h.

Reprendre ce programme en remplaçant BX, par les 15 autres ‘REG’ restants.

Conclusion  : BX, DI, SI réalise la fonction. Le reste ne permette pas d’accéder à la


mémoire.
Pour l’instant je vous conseil de vous limiter à BX

L’instruction ‘Mov’ utilisant l’opérande ‘memory’avec le reste des opérandes .


a-
1- Charger l’opérande ‘immediate’ 09 dans l’opérande AL
2- charger l’opérande ‘AL’ dans la case mémoire 200h
Mov AL,09
Mov [200h],AL
b-
1- Charger l’opérande ‘immediate’ 259 dans l’opérande AX
2- charger l’opérande ‘AX’ dans la case mémoire 200h.
Mov AX, 259

Licence électronique 2 Systèmes à microprocesseurs


Département Electronique Faculté de Technologie Université Ferhat Abbas

Mov [200h],AX
Votre observation ? Une case mémoire = 8bits, si le mot est de 16bits Al sera placé dans la
case mémoire 200h et AH dans la case mémoire 201h.
c-
1- Je souhaiterais charger la valeur 265 à l’adresse mémoire 50 et 266 à l’adresse
suivante.
2- Ecrire le programme et vérifier le.

; COM file is loaded at CS:0100h0


ORG 100h

mov ax, 265


mov [50h],ax
mov bx, 266
mov [52h],bx
hlt

Pour finir, écrire le programme suivant et exécuter le:


Mov AL, 13 ; Charge 0D dans AL
Mov BL, 13H ; Charge 13 dans BL
Mov CL, 00001101B ; Charge 0D dans CL
Mov DL, 00010011b ; Charge 13 dans DL
HLT

Votre observation  ?…13= en décimal ; 13h= en hex = 1, 000 b= en binaire.

Conclusion : Vous devez saisir que le microprocesseur ne manipule que les 24 opérandes,
suivant des règles définies.

1- Ecrire un programme pour additionner 121 et 13 et placer le résultat dans AL.


Les instructions sont Mov et Add.

Mov ax, 121


Add ax,13

2- Ecrire un programme pour soustraire 13 de 121 et placer le résultat dans AL.


Les instructions sont Mov et Sub.

Mov ax, 121


Sub ax, 13

3- Ecrire un programme pour multiplier 13 et 121.


Les instructions sont Mov et mul.

Mov ax, 121


mov bx, 13
mul bx (résultat sur DX (H) et AX (L))

Mov al, 121


mov bl, 13

Licence électronique 3 Systèmes à microprocesseurs


Département Electronique Faculté de Technologie Université Ferhat Abbas

mul bl (résultat sur AX )

4- Ecrire un programme pour diviser 121 par 13.


Les instructions sont Mov et div.

Mov ax, 121


mov cx, 13
mul cx (résultat sur AX reste dans DX )

Mov al, 121


mov cl, 13
mul cl (résultat dans AL reste dans DL )

Remarque 1 : Un bon programme doit ‘tourner’ avec un minimum d’opérandes.

Tableau 1.
ORG 100h ORG 100h ORG 100h
mov ax,01 mov ax, 265 mov DS,01
mov bx,02 mov [50h],ax mov ES,02
mov cx, 03 mov bx, 266 mov SS,03
mov dx, 04 mov [52h],bx mov CS,04
mov ah,05 hlt hlt
mov al,06
mov bh, 07
mov bl, 08
mov ch,09
mov cl,10
mov dh, 11
mov dl, 12
mov di,13
mov si,14
mov bp, 15
mov sp, 16
hlt

Licence électronique 4 Systèmes à microprocesseurs