Vous êtes sur la page 1sur 4

1.

Format général des instructions

Les formats typiques des instructions machines sont donnés dans ce qui suit :

1) Instruction sans champs d’opérandes :

Code opération

2) Instruction avec un champ d’opérande :


En général, le deuxième opérande se trouve dans l’accumulateur et le résultat est mis dans ce dernière.
Accumulateur Code opération (Accumulateur, opérande)

Code opération opérande

3) Instruction avec deux champs d’opérandes :


On a un opérande « source » (Opérande 2) et un opérande « destination » (Opérande 1).

Opérande 1 Code opération (Opérande 1, opérande 2)

Code opération opérande 1 opérande 2


«destination » « source »

2. Format des instructions machines des processeurs INTEL 16bits


Si on a un processeur ou machine de type 16 bits, ça veut dire que la taille du mots mémoire est 16 bits . Ceci
implique que la pluparts des registres de ce processeur ont une taille de 16 bits .
Dans les processeurs INTEL, les instructions à deux opérandes peuvent être :
de type registre-registre (c'est-à-dire opérande 1=registre et opérande 2= registre).
de type registre-mémoire (c'est-à-dire opérande 1=registre et opérande 2= variable)
de type mémoire-registre (c'est-à-dire opérande 1= variable et opérande 2= registre)
mais pas de type mémoire-mémoire (c'est-à-dire impossible d’avoir : opérande 1=variable et
opérande 2=variable)

Une instruction machine dans le cas des processeurs INTEL 16 bits contient plusieurs parties (voir figure
A.1):
Partie « Préfixe » : Cette partie opère une influence sur le déroulement de l’opération.
Partie « Code opération » : Cette partie contient le code de l’opération à réaliser ainsi que les deux bits
d(direction) et s(size).
Partie « Mode » : Cette partie spécifie et précise le mode d’adressage (champ MOD combiné en général
avec le champ R/M) et les opérandes (les deux champs REG et R/M) utilisés par l’instruction.
Partie « déplacement » (offset) : Cette partie contient l’adresse logique l’opérande (offset) dans le cas où
l’opérande se trouve dans la M.C (c'est-à-dire dans le cas du mode d’adressage direct : MOD=00 et
R/M=110 (voir figure A.3)
Partie « valeur immédiate » (un opérande immédiat): utilisé uniquement dans le cas où on a un
opérande immédiat (valeur constante).

0---------3octets 1 octet 1 octet 0-----2 octets 0---------2 octets

Préfixe Code Mode Déplacement Valeur


operation immédiate

Code instruction Bit Bit MOD REG R/M


(6bits) d s (2 bits) (3 bits) (3 bits)

Direction : mode d’adressage


d=0  REG opérande source opérande opérande
d=1  REG opérande destination

Size (taille) :
s=0  opérandes de 8 bits
s=1  opérandes de 16 bits

Figure A.1. Format des instructions machines des processeurs INTEL 16 bits

Register Register if data Register if data


codage size=8 bits size=16 bits
000 Al Ax
001 Cl Cx
010 Dl Dx
011 Bl Bx
100 Ah Sp
101 Ch Bp
110 Dh Si
111 Bh Di

Figure A.2. Codage des registres

2
MOD
00 01 10 11
000 M[BX+SI] M[BX+SI+DEP8] M[BX+SI+DEP16] AX ou AL
001 M[BX+DI] M[BX+DI +DEP8] M[BX+DI +DEP16] CX ou CL
010 M[BP+SI] M[BP+SI+ DEP8] M[BP+SI+ DEP16] DX ou DL
R/M 011 M[BP+DI] M[BP+DI+ DEP8] M[BP+DI+ DEP16] BX ou BL
100 M[SI] M[SI+ DEP8] M[SI+ DEP16] SP ou AH
101 M[DI] M[DI+ DEP8] M[DI+ DEP16] BP ou CH
110 Adressage M[BP+ DEP8] M[BP+ DEP16] SI ou DH
direct
111 M[BX ] M[BX+DEP8 ] M[BX+DEP16] DI ou BH

M[…] est une référence mémoire


DEP8 est une valeur de déplacement codée sur 8 bits
DEP16 est une valeur de déplacement codée sur 16 bits
Figure A.3. Codage des modes d’adressages

Exemple (Le codage machine de l’instruction ADD CL, AL : 2 codes machines):


On suppose que le code binaire de l’opération ADD (addition) = 0. On a deux codages binaires
(machine) de l’instruction assembleur ADD CL, AL :

CODAGE 1 :

Code opération (1octet) mode (1 octet)

0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1
d s
code de ADD

R/M opérande destination


Opérandes de 8 bits
MOD=11 : adressage par registre
Size=8bits et REG=000  REG est AL
Size=8bits et R/M=001  R/M est CL

Ou bien :

CODAGE 2 :

0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0
d s

REG destination REG= CL R/M= AL

3. Les modes d’adressages

Dans cette section, on présente quelques modes d’adressages :

3
Adressage immédiat :
La valeur de l’opérande est précisée directement dans l’instruction. On appel ce type d’opérande « un
opérande immédiat » (constante). Dans ce cas on n’a pas besoin d’un accès à la M.C.

Exemple :
ADD AL,1 (l’opérande 1 est l’opérande immédiat)

Adressage direct :
Dans ce cas, l’opérande est précisé au niveau de l’instruction à travers son adresse logique en M.C (offset).

Exemple:
ADD DL, [var] ( var DB 2,3 / offset Var=128)

( [var] peut être écrit d’une manière équivalente par : [var+0] ou tout simplement var[0] )

Il est à noter que lors de la traduction d’une instruction, le nom de la variable (par exemple « var » ) sera
remplacé par son adresse logique.

Codage machine (binaire) de l’instruction :

Code op + mode + déplacement (sur 8 bits)


0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0

d MOD =00 et R/M=110  Adressage direct 128

Adressage par registre :


Dans ce cas, l’opérande est précisé à travers un registre.

Exemple :
ADD CL, AL
Il existe deux codages binaires

Vous aimerez peut-être aussi