Tp2 : instructions et modes d’adressage en 8086... - informa

Informatique Industrielle : TP2 : Instructions et modes d’adressage en 8086...

Télécharger PDF

TP Systèmes à Microprocesseur – Instructions et Modes d'Adressage en 8086

I/ Préparation théorique

A/ Rappel sur le 8086

Le 8086 est un microprocesseur 16 bits. Il ne peut pas manipuler des adresses mémoires de 20 bits (5 chiffres en hexadécimal). La solution adoptée est :

  • Diviser la mémoire en segments.
  • Représenter une adresse relative (offset) sur 16 bits (4 chiffres en hexadécimal) parcourant un segment.
  • Utiliser une adresse composée de deux parties : un segment et un offset (exemple : 2000:350 au lieu de 20350).

Analogie : Dans un hôtel, la chambre 213 signifie l'étage 2, chambre 13.

B/ Adresses absolues

Convertir les adresses suivantes en adresses absolues :

  • Adresse absolue : 3500 : AB00
  • Adresse absolue : 0022 : FFFF
  • Adresse absolue : 2000 : 0350
  • Adresse absolue : 4055 : 3192

C/ Instructions correctes et corrections

Instruction Correction
MOV AX, 9 Correcte
MOV 9, AX Invalide (l'adressage immédiat ne peut pas être la destination)
MOV AX, BX Correcte
MOV AX, [BX] Correcte
MOV AX, [BX+2] Correcte
PUSH AL Correcte
MOV AX, N1 Invalide (N1 n'est pas défini comme variable)
MOV AX, [1] Correcte (adressage direct)
ROL AX, 2 Correcte
CMP [1000], 2 Correcte
MOV AX, TAU Invalide (TAU n'est pas défini comme variable)
MOV AX, BL Correcte

II/ Opérations en 8086

1/ Code assembleur à saisir

MOV AX, 05h
MOV BX, 15h
ADD AX, BX

2/ Tableau des opérations

Opération réalisée Registres modifiés Résultat Registre du résultat
MOV AX, 05h AX AX = 0005h AX
MOV BX, 15h BX BX = 0015h BX
ADD AX, BX AX, BX AX = 001Ah (05h + 15h) AX

3/ Code assembleur et tableau

MOV AX, 195h
MOV BX, 911h
ADD AX, BX
Instruction Modification apportée Explication
MOV AX, 195h AX = 0195h Chargement immédiat de AX avec 195h
MOV BX, 911h BX = 0911h Chargement immédiat de BX avec 911h
ADD AX, BX AX = 0A46h (195h + 911h) Addition des valeurs de AX et BX
MOV AX, 195h
ADD AL, 02
Instruction Modification apportée Explication
MOV AX, 1002h AX = 1002h Chargement immédiat de AX avec 1002h
MOV BH, 02h BH = 02h Chargement immédiat de BH avec 02h
SUB AX, BX AX = 0FFEh (1002h - 0002h) Soustraction des valeurs de AX et BX
SUB AH, 03h AH = 0FCh (10h - 03h) Soustraction immédiate de 03h de AH
MUL BH AX = 0004h (02h * 02h) Multiplication de AL par BH, résultat stocké dans AX

4/ Code assembleur et observation

nombre dw ?
MOV AX, 04h
MOV nombre, 05h
MUL nombre

5/ Que représente « nombre » ?

« nombre » est une variable de 16 bits (dw) déclarée en mémoire pour stocker une valeur.

6/ Commenter le résultat

Après exécution : AX contient le produit de AL et de la valeur stockée dans « nombre » (05h).

III/ Modes d'Adressage

Les modes d'adressage en assembleur 8086 permettent de définir comment les opérandes sont accédés dans les instructions. Ils sont :

  • Adressage immédiat : Chargement d'une constante dans un registre (exemple : MOV AH, 12h).
  • Adressage registre : Opération entre deux registres (exemple : MOV AX, BX).
  • Adressage direct : Chargement d'une variable déclarée en mémoire (exemple : MOV CH, surface).
  • Adressage base : Accès à la mémoire via un registre (BX ou BP) avec un segment (DS ou SS).
  • Adressage indexé : Accès à la mémoire via un registre d'index (SI ou DI) avec un segment (DS).

Exemples de modes d'adressage

Instruction Mode d'adressage Résultat
MOV [100h], 10h Adressage direct Mémoire à DS:100h = 10h
MOV [101h], 11h Adressage direct Mémoire à DS:101h = 11h
MOV [102h], 12h Adressage direct Mémoire à DS:102h = 12h
MOV [103h], 13h Adressage direct Mémoire à DS:103h = 13h
MOV [104h], 14h Adressage direct Mémoire à DS:104h = 14h
MOV [107h], 17h Adressage direct Mémoire à DS:107h = 17h
MOV AX, 100h Adressage immédiat AX = 0100h
MOV BX, AX Adressage registre BX = 0100h
MOV CX, BX Adressage registre CX = 0100h
MOV DL, CH Adressage registre DL = 00h (valeur basse de CX)
MOV DH, [100h] Adressage direct DH = 10h (valeur stockée à DS:100h)
MOV CX, [102h] Adressage direct CX = 0120h (valeur stockée à DS:102h)
MOV BX, 103h Adressage immédiat BX = 0103h
MOV BP, 103h Adressage immédiat BP = 0103h
MOV DL, [BX] Adressage base (via BX) DL = valeur à DS:103h
MOV DL, [BP] Adressage base (via BP) DL = valeur à SS:103h
MOV DH, [BX]+4 Adressage base avec offset DH = valeur à DS:107h (103h + 4)
MOV DH, [BP]+4 Adressage base avec offset DH = valeur à SS:107h (103h + 4)
MOV SI, 4 Adressage immédiat SI = 0004h
HLT Arrêt du processeur Arrêt du programme

Partie BC : Code Assembleur

MOV AX, 55h
MOV BX, 88h
MOV DX, AX
MOV CX, BX
ADD BL, AL
MUL BL, AL ; Utiliser MUL AX, BL pour multiplier AX par BL

FAQ

1/ Qu'est-ce qu'un offset en 8086 ?

Un offset est une adresse relative à l'intérieur d'un segment mémoire de 16 bits. Il permet de localiser une donnée dans un segment.

2/ Pourquoi utiliser des segments en 8086 ?

Le 8086 utilise des segments pour gérer une mémoire plus grande que 16 bits, en combinant un segment et un offset pour former une adresse de 20 bits.

3/ Quels registres sont utilisés pour l'adressage base ?

Les registres BX et BP sont utilisés pour l'adressage base, respectivement avec les segments DS et SS.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne