Chapitre - 3 Jeux D - Instructions
Chapitre - 3 Jeux D - Instructions
Chapitre - 3 Jeux D - Instructions
Exemples :
MOV AX, BX ; Transfert d'un registre de 16 bits vers un registre de 16 Bits
MOV AH, CL ; Transfert d'un registre de 8 bits vers un registre de 8 bits
MOV AX, 1234h ; Transfert d’une constante vers AX
Remarque 1 :
Il n’est pas possible de transférer le contenu d'une case mémoire vers une autre case mémoire
Remarque 2 : MOV AL, BX ; BX AL (erreur!! taille des registres)
Remarque 3 : MOV [DI], AH (copie un octet) et MOV [SI], AX (copie un mot avec convention little
Endian pour les microprocesseurs Intel comme le 8086)
Exemples :
ADD AX, BX ; AX = AX + BX (addition sur 16 bits) ADD AL,BH
; AL = AL + BH (addition sur 8 bits )
ADD AL, [SI] ; AL = AL + le contenu de la case mémoire pointé par SI
ADD [DI], AL ; le contenu de la case mémoire pointé par DI est additionnée avec AL, le
résultat est mis dans la case mémoire pointé par DI
CHAPITRE 3 Jeux d’instructions
Remarque :
On n’a pas le droit d'additionner deux cases mémoires sans utiliser un registre de données.
B. SUB : (Soustraction)
Syntaxe : SUB Destination, source
Elle permet de soustraire la destination de la source (octet ou un mot) le résultat est mis dans
la destination Destination <--------- Destination -- source
C. INC : (Incrémentation)
Syntaxe : INC Destination
Elle permet d'incrémenter le contenu de la destination Destination <---------- Destination + 1
Exemples :
INC AX ; AX = AX + 1 (incrémentation sur 16 bits).
INC AL ; AL = AL +1 (incrémentation sur 8 bits).
INC [SI] ; [SI] = [SI] + 1 le contenu de la case mémoire pointé par SI sera incrémenter
D. DEC : (Décrémentation)
Syntaxe : DEC Destination
Elle permet de décrémenter le contenu de la destination Destination <----------- Destination - 1
E. MUL : (Multiplication)
Elle a la forme : MUL Reg/Var
Dans sa première forme qui prend une donnée 8 bits en opérande (donc le résultat est sur 16
bits), l’instruction mul effectue le produit de la valeur contenue dans le registre al avec la valeur
de l’opérande fourni. Le résultat est placé dans le registre ax.
Dans sa deuxième forme qui prend une donnée 16 bits en opérande (donc le résultat est sur 32
bits), l’instruction mul effectue le produit de la valeur contenue dans le registre ax avec la
valeur de l’opérande fourni. Le résultat est placé dans la paire de registres dx et ax. dx contient
le poids fort du résultat, ax le poids faible.
Donc on aura :
(AX) <------------- (AL) x Source (octet)
(AX)(DX) <------------ (AX) x Source (mot)
Exemples :
mov al, 4 mov bx, 435
mov ah, 25 mov ax, 2372
imul ah imul bx
AND est souvent utilisé pour forcer certains bits à 0. Après AND AX, FF00, l’octet de poids
faible de AX vaut 00, tandis que l’octet de poids fort est inchangé.
Exemples :
0011 0011 0011
OU 0101 ET 0 1 0 1 OU EX 0 1 0 1
----------- ----------- -----------
0111 0001 0110
V. Instruction de comparaison
CMP permet de comparer deux valeurs. C’est l’instruction la plus utilisée pour positionner les
indicateurs avant d’effectuer une instruction de saut conditionnel. Sa forme :
CMP permet de comparer deux valeurs. Pour cela CMP soustrait le second opérande du premier, sans
modifier l’opérande destination, mais en positionnant les indicateurs en fonction du résultat.
Exemple :
mov al, 10
cmp al, 12
le registre AL n’est pas modifié par l’exécution de l’instruction CMP et contient toujours la valeur 10.
L’indicateur ZF est égal à 0, cela indique que les deux données sont différentes. L’indicateur CF est
positionné à 1, ce qui indique que le deuxième opérande est supérieur à la valeur du premier opérande.
Le bit de signe S est également mis à 1 car 10 − 12 donne un nombre négatif.
A. Sauts conditionnels
L’instruction JMP effectue un saut inconditionnel à l’étiquette spécifiée. Sa syntaxe est :
JMP étiquette
CHAPITRE 3 Jeux d’instructions
B. Sauts conditionnels
Les instructions de branchements conditionnels effectuent un saut (comme JMP) si une certaine
condition est vérifiée. Si ce n’est pas le cas, le processeur passe à l’instruction suivante.
Les conditions s’expriment en fonction des valeurs des indicateurs. Les instructions de
branchement conditionnel s’utilisent en général immédiatement après une instruction de
comparaison CMP.
SHL et SHR peuvent être utilisé pour multiplier/diviser des entiers naturels (et non des relatifs car le
bit de signe est perdu).
RCL et RCR sont utiles pour lire bit à bit le contenu d’un registre (On pourra utiliser l’instruction JB
pour brancher si CF=1 après RCL ou RCR).
2. Adressage immédiat
Le champ opérande contient la donnée
Ex assembleur : MOV AX, 2550h ADD BL, 40h (sauf CS, DS, SS)
4. Adressage direct
Le champ opérande contient l’adresse de la donnée en mémoire principale
Ex assembleur : MOV DL, [2550]
Remarque :
MOV [100h],34 est un adressage direct
calcul de la condition
JmpCondit SINON ; utilisation d’une instruction de branchement conditionnel
action-alors
...
JMP FSI
SINON: action-sinon
...
FSI : ...
REPETER
action
JUSQUA (condition vraie)
L’instruction LOOP fonctionne avec le registre CX qui joue le rôle de compteur de boucles. LOOP
décrémente le compteur sans modifier aucun des indicateurs. Si le compteur est différent de 0, un saut à
l’étiquette opérande de l’instruction LOOP est réalisé.
Exemple de fonction :
Numéro Fonction
01H Lecture caractère. Met le code ascii lu dans AL
02H Affiche caractère. Le code ascii dans registre DL