Académique Documents
Professionnel Documents
Culture Documents
Les formats typiques des instructions machines sont donnés dans ce qui suit :
Code opération
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).
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
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
CODAGE 1 :
0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1
d s
code de ADD
Ou bien :
CODAGE 2 :
0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0
d s
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.
Exemple :
ADD CL, AL
Il existe deux codages binaires