Jeu d’instructions
1. Introduction
2. Modes d’adressage
- Adressage immédiat
- Adressage registre
- Adressage direct
- Adressage inderce
+ Adressage basé
+ Adressage indexé
+ Adressage basé indexé
Introduction
Défenition du jeu d’instrution
Chaque microprocesseur reconnait un ensemble
d’instructions machine appelé jeu d’instructions
(Instruction Set) fixé par le constructeur et supporté
par le processeur.
- Une instruction est définie par son code
opératoire, valeur numérique binaire difficile à
manipuler par l’être humain.
- Une notation symbolique est utilisée pour
représenter les instructions: les mnémoniques.
Le jeu d'instruction précise aussi quels sont les
registres du processeur manipulables par le
programmeur.
Introduction
L’architecture CISC & RISC
Actuellement l’architecture des microprocesseurs
se composent de deux grandes familles de jeu
d'instructions:
L’architecture CISC (Complex Instruction Set Computer) et
l’architecture RISC (Reduced Instruction Set Computer).
L’architecture CISC est utilisée en particulier par les CPUs
80x86.
Introduction
Format d’instruction
L’instruction est composée de deux champs:
– Code d'opérat ion représentant l'action que
le processeur doit accomplir
– Champ d e s o p é r a n d e s définissant les
paramètres de l'action.
– Lataille d'une instruction dépend
du type de l'instruction et du type
de l'opérande.
Exemple du Format d’instruction
Instruction à trois opérandes: il faut
préciser le premier et le deuxième
opérande et l'emplacement du résultat
Exemple : ADD A,B,C
Exemple du Format d’instruction
Instruction à deux opérandes: il faut préciser
le premier et le deuxième opérande. Le résultat est
implicitement mis dans le deuxième opérande
Exemple: ADD A,B
Exemple du Format d’instruction
Instruction à un opérande: il faut
préciser uniquement le
deuxième opérande
premier opérande. le
existe dans le registre
Accumulateur. résulta est mis dans
Le l'accumulateur. t
Exemple :ADD B
Type d’opérandes
===> Modes d'adressage
Exemple introductif aux modes d’adressage
- Utilisation de MOV -
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
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 MOV possibles
Les transferts MOV possibles
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 ou se trouve la donnée
Les transferts MOV possibles
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 ou la
donnée va être transférer.
Exemple 4:
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.
Les transferts MOV possibles
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 ou la donnée va être
transférer.
Modes d'adressage
L’adressage est la méthode de localisation des
opérandes des opérations
Le mode d’adressage est la manière d’interpréter les
bits d’un champs d’adresse en vue de la localisation de
l’opérande
Le mode d'adressage définit la manière dont le processeur
va accéder à l'opérande d'une instruction.
Les modes d'adressage les plus utilisés sont: mode
immédiat, mode registre, mode direct, mode indirect
(basé, indexé, basé-indexé)
Liste des abréviations utilisées
Rseg : Registre Segment
Roff : Registre d’offset
Off : Offset de l’adresse
Ri : Registre d'indexe
Mode immédiat
Un des opérandes est une constante
(valeur).
Exemple
MOV AH,12 (donnée de 8 bits)
MOV BX,FFFF (donnée de 16 bits)
Adressage registre
L'opération se fait sur un ou 2 registres.
Exemples:
INC AX ; incrémenter le registre AX
MOV AX, BX ; Copier le contenu de BX dans AX
Remaraue:
Il est important de noter qu’il n’existe pas
d’instruction MOV pour transférer le contenu d’un
registre de segment vers un autre registre de
segment.
Donc, il est indispensable de passer par un registre
de données pour transférer les registres de segment.
Adressage direct
Un des deux opérandes se trouve en mémoire. L’adresse de la
case mémoire ou plus précisément son Offset est précisé
directement dans l’instruction. L’adresse Rseg: Off doit être
placée entre [ ], si le segment n’est pas précisé, DS est pris
par défaut.
Exemples:
MOV AX, [243]; Copier le contenu de la mémoire d'adresse
DS:243 dans AX
MOV [123], AX; Copier le contenu de AX dans la mémoire
d'adresse DS:123
MOV AX, [SS:243]; Copier le contenu de la mémoire SS:243
dans AX
Adressage indirect
Un des deux opérandes se trouve en mémoire. L’offset de
l’adresse n’est pas précisé directement dans l'instruction, il se
trouve dans l’un des 4 registres d’offset BX, BP, SI ou DI et
c’est le registre qui sera précisé dans l’instruction:
[Rseg: Roff]. Si Rseg n'est pas spécifié, le segment par
défaut sera utilisé selon le tableau suivant:
Exemples:
MOV AX, [BX] ;Charger AX par le contenu de la mémoire d'adresse DS:BX
MOV AX, [BP] ;Charger AX par le contenu de la mémoire d'adresse SS:BP
MOV AX, [SI] ;Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [DI] ;Charger AX par le contenu de la mémoire d'adresse DS:DI
MOV AX,[ES:BP] ;Charger AX par le contenu de la mémoire d'adresse
ES:BP
Adressage indirect
L’adressage indirect est divisé en 3 catégories selon le registre
d’offset utilisé. On distingue ainsi:
- l’adressage basé (avec/sans déplacement) ;
- l’adressage indexé (avec/sans déplacement) ;
- l’adressage basé indexé (avec/sans déplacement).
Adressage basé
L’offset se trouve dans l’un des deux registres de base BX ou
BP. On peut préciser un déplacement qui sera ajouté au contenu
de Roff pour déterminer l’offset.
Exemples:
MOV AX, [BX] ;Charger AX par le contenu de la mémoire
d'adresse DS:BX
MOV AX, [BX+3] ;Charger AX par le contenu de la mémoire
d'adresse DS:BX+3
MOV AX, [BP-100] ;Charger AX par le contenu de la mémoire
d'adresse SS:BX-100
MOV AX, [ES:BP] ;Charger AX par le contenu de la mémoire
d'adresse ES:BP
Adressage Indexé
L’offset se trouve dans l’un des deux registres d’index SI ou DI.
On peut préciser un déplacement qui sera ajouté au contenu de Ri
pour déterminer l’offset.
Exemples:
MOV AX, [SI] ;Charger AX par le contenu de la mémoire
d'adresse DS:SI
MOV AX, [SI+200] ;Charger AX par le contenu de la mémoire
d'adresse DS:SI+200
MOV AX, [DI-7] ;Charger AX par le contenu de la mémoire
d'adresse DS:ID-7
MOV AX, [ES:SI+4] ;Charger AX par le contenu de la mémoire
d'adresse ES:SI+4
Adressage basé indexé
L'offset de l’adresse de l'opérande est la somme d'un registre de
base, d'un registre d'index et d'un déplacement optionnel. Si
Rseg n'est pas spécifié, le segment par défaut du registre de
base est utilisé:
Exemples:
MOV AX,[BX+SI] ;Charger AX par le contenu de la mémoire
d'adresse DS:BX+SI
MOV AX,[BX+DI+7] ;Charger AX par le contenu de la mémoire
d'adresse DS:BX+DI+7
MOV AX,[BP+SI-3] ;Charger AX par le contenu de la mémoire
d'adresse SS:BP+SI-3
MOV AX,[BP+DI] ;Charger AX par le contenu de la mémoire
d'adresse SS:BP+DI