Académique Documents
Professionnel Documents
Culture Documents
Jeu d’instructions
Du Microprocesseur
8086
Introduction :
Définition microprocesseur d’un ordinateur :
Automate qui exécute une suite d’actions élémentaires en suivant des règles précises qui lui sont dictées et
tel que l’ensemble des ces actions aboutisse à la résolution d’un problème donné.
L’automate exécute un programme.
Programme :
Suite précises d’I qu’une machine est capable d’exécuté en suivant un ordre déterminé, à chaque instruction
correspondant une instruction particulière.
Son exécution permet d’obtenir des données résultats à partir de données de départ.
Données départ MACHINE Données résultat
↑
PGM
OU
⇒ Un pgm directement exécutable est une suite d’I machine ∊ à une certaine jeu d’I et qu’un agent peut lire
et exécuter dans un ordre précis.
Dans un pgm en langage machine une erreur peut très vite se produire et il est assez difficile de la corriger
du fait que le pgm est plutôt illisible, donc on va introduire un nouveau langage symbolique pour faciliter la
rédaction de pgm, il faudra donc une phase supplémentaire de traduction.
Pgm-source - ORDINATEUR - pgm-objet
(En lg symb.) (En lg mach.)
↑
PGM assembleur
(Traducteur=compilateur) =Phase de compilation
Plus un langage est dit évolué (de haut niveau) plus il est proche de notre façon de penser et plus il est
Loing du langage machine (de bas niveau) .Les instructions machines ne manipulent que des bytes ou des
mots.
Les registres :
Petites zones mémoires pour mémoriser des infos. à fin d’y accéder plus rapidement que si on allait les
rechercher en mc
Les registres généraux :
AX, BX, CX et DX sont à usage général et servent à stocker temporairement une info. De 16bits.
Chacun de ces registres est divisible en deux registres de 8bits une partie haute (AH) et une partie base (AL)
AX (accumulateur) : instructions d’I/O et certaines op. Arithm.
BX (registre de base) : peut être utilisé comme registre d’adressage lors de l’adressage direct à la mémoire.
CX (compteur) : compteur de boucles
DX : contient les adresses des ports pour les instructions I/O
Les registres d’index et pointeurs :
SI et DI peuvent être utilisés comme reg. Gén. De données Mais le plus souvent sont utilisés avec les
instructions spécialisées de manipulation des chaînes de caractères et aussi comme reg. D’adressage
(indexé).
SP et BP accèdent aux données de la pile (SS : SP = sommet de la pile et BP accède à des données dans la
pile)
IP pointer d’instruction CS : IP = l’adresse de l’instruction suivante
Les registres de segments :
CS, DS, ES et SS font partie du BIU il les utilise pour calculer l’ad. Phys.
Les instructions peuvent être soit codées sur 1,2,3,4,5,6 octets et présentées sous la
forme suivante :
Mnémonique Op1, Opération réalisée
Chaque indicateur est représenté par une lettre suivant la correspondance suivant :
Dimensions des
opérandes
BYTE 8 bits 1 octet
WORD 16 bits 2
octets
En cas d’incertitude non résolue par les opérandes, les mots clés BYTE PTR ou
WORD PTR devront être utilisés.
Concernant l’ordre de rangement en mémoire des nombres codés sur plus d’un octet,
les processeurs Intel sont de type « petit-boutien » : L’octet contenant les bits
les moins significatifs est rangé à l’adresse la plus basse.
1000 1110
1000 1100
XCHG = Exchange r/m <-> reg 1000 011w mod reg r/m ------
LEA = Load EA to reg <- adr de 1000 1101 mod reg r/m ------
mem
Register Chargement
d’une adresse effective mod = 11
interdit
------
LDS = Load Pointer reg <- mem 1100 0101 mod reg r/m
to DS mod = 11
interdit
Chargement d’un
pointeur utilisant DS
LES = Load Pointer reg <- mem 1100 0100 mod reg r/m ------
to ES mod = 11
interdit
Chargement d’un
pointeur utilisant ES
STC
à1
Efface le flag de
retenue
acc <-
acc+imm+CF
SUB = Subtract reg <- reg-reg 0010 10dw mod reg r/m
NEG = Change
sign 1111 011w mod 011 r/m OSZAPC
Complémentation à
2 d’un octet ou d’un
mot (changement de
signe)
toWord
Conversion d’octet
en mot
CWD = Convert
Word to Double AX -> DX-AX 1001 1001 ------
Word
Conversion de mot
en double mot
CMP = Compare reg-reg 0011 10dw mod reg r/m
Ajustement ASCII de
l’addition
DAS = Decimal
Adjust for 00101111 ------
Subtract
Ajustement décimal
de la soustraction
MUL = Multiply
(Unsigned) Reg 1111 011w mod 1 0 0 r/m O----C
Multiplication non
signée d’octets ou
de mots
Multiply (Signed)
Multiplication
signée d’octets ou
de mots
DIV = Divide
(Unsigned) Reg 1111 011w mod 1 1 0 r/m ------
IDIV = Integer
Divide (Signed) Reg 1111 011w mod 1 1 1 r/m ------
Division signée
d’octets ou de mots
SHL/SAL = Shift
Logical/Arithmetic r/m << 1,CL 1101 00vw mod 100 r/m OSZ?PC
Left
Décalage à gauche
arithmétique ou
logique (octet ou
mot)
SHR = Shift
Logical Right r/m >> 1,CL 1101 00vw mod 101 r/m OSZ?PC
Décalage logique à
droite d’un octet ou
d’un mot
SAR = Shift
Arithmetic Right r/m >> 1,CL 1101 00vw mod 111 r/m OSZ?PC
Décalage
arithmétique à
droite d’un octet ou
d’un mot
Rotation à droite
d’un octet ou d’un
mot
RCL = Rotate
Through Carry r/m 1,CL 1101 00vw mod 010 r/m O----C
Flag Left
Rotation à gauche
incluant CF (octet
ou mot)
RCR = Rotate
Through Carry r/m 1,CL 1101 00vw mod 011 r/m O----C
Right
Rotation à droite
incluant CF (octet
ou mot)
00 10 1
1
ES SS D
S
Function to Flags, r/m AND imm 1111 011w mod reg r/m OSZ-PC
No Result
acc AND imm 1010 100w imm(8/16)
Comparaison, à
l’aide d’un ET,
d’octets ou de mots
XOR = Exclusive reg <- reg XOR 0011 00dw mod reg r/m
reg
or 0011 000w mod 110 r/m
mem <- mem
OU exclusif logique XOR reg 0011 001w imm(8/16) OSZ-PC
de deux octets ou 1000 000w mod reg r/m
reg <- reg XOR
de deux mots
mem 0011 010w mod reg r/m
r/m <- r/m XOR
imm
NOT = Invert
1111 011w mod 010 r/m ------
Complément à 1
d’un octet ou d’un
mot
Interruption
logicielle
Return
Retour d’une
interruption