Académique Documents
Professionnel Documents
Culture Documents
Le jeu d’instructions
assembleur 8086
L1 I.EEEA
2020/2021
Science du Numérique 2 97
+ 98
Introduction
L’instruction MOV
MOV reg,reg
MOV mem, reg
MOV reg, mem
MOV mem, immediate data
MOV reg, immediate data
MOV ax/al, mem
MOV mem, ax/al
MOV segreg, mem16
MOV segreg, reg16
MOV mem16, segreg
MOV reg16, segreg
Deux détails sont à noter quant à l’instruction MOV. Tout d’abord, on remarque qu’il
n’est
Science du Numérique 2 pas possible de copier le contenu d’une case-mémore dans une autre case-mémoire.
L1 I.EEEA 2020/2021
Les opérandes sont soit deux registres soit un registre et une case-mémoire. Ensuite, il n’est
+ 101
L’instruction MOV
n Exemples:
n mov AX,BX
n mov CL, AH
L’instruction MOV
n La cellule mémoire peut être désigné par son adresse ou par un nom de variable
associée
n Exemples:
n mov DS:[0002], DX
n mov var1, AL ; (en supposant que var1 a été déclarée dans le segment
de données avec la directive DB)
n mov [var1], AL
n mov [var2], BX ; (en supposant que var2 a été déclarée dans le segment
de données avec la directive DW)
n mov var2, BX
L’instruction MOV
n La cellule mémoire peut être désigné par son adresse ou par un nom de variable
associée
n Exemples:
n mov DS:[0002], 2
n mov var1, 223 ; ( en supposant que var1 a été déclarée dans le
segment de données avec la directive DB)
n mov [var1], 223
n mov [var2], 260 ; (en supposant que var2 a été déclarée dans le
segment de données avec la directive DW)
n mov var2, 260
L’instruction MOV
n Exemples:
n mov AL, 10011111b
n mov CX, 223
n mov AX,data ; une étiquette de segment est une
constante
L’instruction MOV
n Exemples:
n mov ES,DS:[0004]
n mov ES,var1 ;( en supposant que var1 a été déclarée
dans le segment de données avec la directive DW)
L’instruction MOV
n Exemples:
n mov DS,AX
n mov ES,SI
L’instruction MOV
n Exemples:
n mov DS:[0004],ES
n mov var1,ES ;( en supposant que var1 a été déclarée
dans le segment de données avec la directive DW)
L’instruction MOV
n Exemples:
n mov AX,DS
n mov SI,ES
L’instruction MOV
L’instruction DeuxMOV
détails sont à noter quant à l’instruction MOV. Tout d’abord,
n’est pas possible de copier le contenu d’une case-mémore dans une au
Les opérandes sont soit deux registres soit un registre et une case-mémoir
pas possible d’e⌧ectuer un adressage immédiat dans un registre de seg
dernière raison qu’un programme en assembleur nécessite les lignes suivan
n Les opérandesdu peuvent
registre être
DS : de taille 8 ou 16 bits, mais ils
doivent être de MOV
même AX,@data
taille
MOV DS,AX
n Il peut être nécessaire dedes
La taille spécifier
opérandesla de
taille de l’opération
l’instruction MOV peuvent être au format
pour lever desqu’ils
ambiguïtés (cas de
sont de meme l'écriture
taille. de valeursils peut être necessaire d
En cas d’ambiguité,
immédiates): de l’opération par exemple dans le case de MOV [BX],0 :
MOV byte ptr [BX],0
MOV word ptr [BX],0
Les drapeaux d’états du micro-processeur restent inchangés après
n L’exécution d’une instruction
instruction MOV. MOV ne modifie pas les
drapeaux d’état du microprocesseur
5.2.2 Instruction LEA
L’instruction LEA (Load E⌧ective Address) permet de charger dan
LEA dest, source
adresse donnée. Elle prend la forme suivante : L1 I.EEEA 2020/2021
Science du Numérique 2 LEA reg16 ,mem
instruction stocke dans le registre destinataire l’adresse e⌧ective de la cas
+ 111
L’instruction XCHG
uction LEA
n Permet de charger une adresse donnée dans un registre
L’instruction LEA
L’instruction LEA (Load E⌧ective Address) permet de charger dan
LEA dest, source
adresse donnée. Elle prend la forme suivante :
LEA reg16 ,mem
instruction stocke dans le registre destinataire l’adresse e⌧ective de la cas
par source.
n Exemples:
Exemple 9
LEA AX, DS :1234h
LEA AX, [BX]
LEA BX, [BX+3]
LEA AX, [BX+3]
LEA BX, [BP+SI+4]
Parmi ces 5 exemples, les 4 premières instructions stockent dans A
1234h, le contenu de BX et le contenu de BX +3. Ces opérations auraie
n Exemples:
n Avec SHL, SAL et SHR, les bits qui sont expulsés sont stockés dans le bit
CF
n Avec SAR le bit de signe (MSB) n’est pas concerné par le décalage,
mais est conservé
n Exemples:
n Les bits expulsés sont replacés dans les trous formés par ce
décalage
n Exemples:
n Si une addition ou une soustraction sont codées sur 16 bits, alors leurs
résultats seront codés sur au plus 16 + 1 bits soit 16 bits de résultat + 1
bit de retenue (le bit CF)
n Les opérations ADD et SUB sont effectuées sans tenir compte de l’état
initial du bit CF du registre d’état mais l’état de ce bit peut être modifié
à l’issue de l’opération
n Les registres utilisables sont: AX, BX, CX, DX, AH, AL, BH, BL,
CH, CL, DH, DL, DI, SI, BP et SP
Exemple 11
n Exemple:
debut :
5.4. INSTRUCTIONS DE BRANCHEMENT
MOV AX, 0
boucle : MOV [0140h], AX
JMP debut
boucle: MOV AX, 0
MOV boucle
AX,1 : MOV [0140h], AX
JMP boucle
MOV AX,1
5.4.2
Science Saut2conditionnel
du Numérique L1 I.EEEA 2020/2021
+ 134
Les Les
sauts conditionnels
instructions de saut conditionnels sont des instructions permettant de créer des
boucles conditionnées par une valeur booléenne en assembleur. Ces instructions testent un
ou plusieurs drapeaux du registre d’état et e!ectue le branchement si le test est vérifié. si
le test n’est pas verifié, le processeur exécute normalement la prochaine instruction dans
le programme.
n Les principales instructions de saut conditionnel:
Le tableau ci-dessous décrit un certain nombre d’instructions de saut conditionnel.
Instruction Description Condition Aliases opposé
JC Jump if carry Carry = 1 JB, JNAE JNC
JNC Jump if no carry Carry = 0 JNB, JAE JC
JZ Jump if zero Zero = 1 JE JNZ
JNZ Jump if not zero Zero = 0 JNE JZ
JS Jump if sign Sign = 1 JNS
JNS Jump if no sign Sign = 0 JS
JO Jump if overflow Ovrflw=1 JNO
JNO Jump if no Ovrflw Ovrflw=0 JO
JP Jump if parity Parity = 1 JPE JNP
JPE Jump if parity even Parity = 1 JP JPO
JNP Jump if no parity Parity = 0 JPO JP
JPO Jump if parity odd Parity = 0 JNP JPE
+ 137
n Exemple de programme
5.5. CONCLUSION 45
n Exemple 2: calcul factorielle
Etiquette Instruction Commentaires
5.5 Conclusion
Science du Numérique 2 L1 I.EEEA 2020/2021
Les instructions que nous avons décrites ci-dessous sont les instructions de base de