7. Les instructions arithmétiques
a) l’instruction INC (« Increment »)
Syntaxe :
INC Destination
Description :
Incrémente Destination.
Indicateurs affectés :
AF, OF, PF, SF, ZF
Exemple :
INC CL
b) l’instruction ADD (« Addition »)
Syntaxe :
ADD Destination, Source
Description :
Ajoute Source à Destination
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
Exemple :
ADD byte ptr [VARIABLE + DI], 5
c) l’instruction ADC (« Add with Carry »)
Syntaxe :
ADC Destination, Source
Description :
Ajoute (Source + CF) à Destination.
Indicateurs
affectés :
AF, CF, OF, PF, SF, ZF
d) l’instruction DEC (« Decrement »)
Syntaxe :
DEC Destination
Description :
Décrémente Destination.
Indicateurs affectés :
AF, OF, PF, SF, ZF
e) l’instruction SUB (« Substract »)
Syntaxe :
SUB Destination, Source
Description :
Soustrait Source à Destination.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
f) l’instruction SBB (« Substract with Borrow »)
Syntaxe :
SBB Destination, Source
Description :
Soustrait (Source + CF) à Destination.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
g) l’instruction MUL (« Multiply »)
Syntaxe :
MUL Source
Description :
Effectue une multiplication d’entiers non signés.
Indicateurs affectés : CF, OF
Remarque :
Source ne peut être une valeur
immédiate.
Exemples :
MUL CX
MUL byte ptr [TOTO]
h) l’instruction IMUL (« Integer Multiply »)
Syntaxe :
IMUL Source
IMUL Destination, Source
IMUL Destination, Source, Valeur
Description :
Effectue une multiplication d’entiers signés.
IMUL Source :
IMUL Destination, Source : Multiplie Destination
par Source et place le résultat dans Destination.
IMUL Destination, Source, Valeur : Multiplie
Source par Valeur et place le résultat dans
Destination.
Indicateurs affectés :
CF, OF
i) l’instruction DIV (« Divide »)
Syntaxe :
DIV Source
Description :
Effectue une division euclidienne d’entiers non signés.
Indicateurs affectés :
AF, OF, PF, SF, ZF
Remarque :
Source ne peut être une valeur
immédiate.
j) l’instruction IDIV (« Integer Divide »)
Syntaxe :
IDIV Source
Description :
Effectue une division euclidienne d’entiers signés.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
k) l’instruction NEG (« Negation »)
Syntaxe :
NEG Destination
Description :
Forme le complément à 2 de Destination, i.e.
prend l’opposé de Destination.
Indicateurs affectés : AF,
CF, OF, PF, SF, ZF
Remarque :
A ne pas confondre avec NOT, qui forme le complément à 1.
8. Les instructions logiques
a) l’instruction NOT (« Logical NOT »)
Syntaxe :
NOT Destination
Description :
Effectue un NON logique bit à bit sur Destination (i.e.
chaque bit de Destination est inversé).
b) l’instruction OR (« Logical OR »)
Syntaxe :
OR Destination, Source
Description :
Effectue un OU logique inclusif bit à bit entre Destination
et Source. Le résultat est stocké dans
Destination.
Indicateurs affectés :
CF, OF, PF, SF, ZF
Remarque :
Afin d’optimiser la taille et les performances du programme, on
peut utiliser l’instruction “OR AX, AX” à la
place de “CMP AX, 0”.
En effet, un OU bit à bit
entre deux nombres identiques ne modifie pas Destination et
est exécuté « infiniment » plus
rapidement qu’une soustraction. Comme les flags sont affectés,
les sauts conditionnels sont possibles.
c) l’instruction AND (« Logical AND »)
Syntaxe :
AND Destination, Source
Description :
Effectue un ET logique bit à bit entre Destination et
Source. Le résultat est stocké dans Destination.
Indicateurs affectés :
CF, OF, PF, SF, ZF
d) l’instruction TEST (« Test for bit pattern »)
Syntaxe :
TEST Destination, Source
Description :
Effectue un ET logique bit à bit entre Destination et
Source. Le résultat n’est pas conservé,
donc Destination n’est pas modifié. Seuls les
flags sont affectés.
Cet opérateur est souvent utilisé pour tester certains bits
de Destination.
Indicateurs affectés :
CF, OF, PF, SF, ZF
Exemple :
e) l’instruction XOR (« Exclusive logical OR »)
Syntaxe :
XOR Destination, Source
Description :
Effectue un OU logique exclusif bit à bit entre Destination
et Source. Le résultat est stocké dans
Destination.
Indicateurs affectés :
CF, OF, PF, SF, ZF
Remarque :
Pour remettre un registre à zéro, il est préférable
de faire “XOR AX, AX” que “MOV AX, 0”. En
effet, le résultat est le même mais la taille et surtout
la vitesse d’exécution de l’instruction sont très
largement optimisées.
f) l’instruction SHL (« Shift logical Left »)
Syntaxe :
SHL Destination, Source
Description :
Décale les bits de Destination de Source
positions vers la gauche. Les bits les plus à droite sont
remplacés par des zéros.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
Exemple :
SHL AX, 4 ;permet de multiplier par
16 de façon infiniment plus rapide que MUL
Mnémonique équivalent :
SAL (« Shift Arithmetical Left »)
g) l’instruction SHR (« Shift logical Right »)
Syntaxe :
SHR Destination, Source
Description :
Décale les bits de Destination de Source
positions vers la droite. Les bits les plus à gauche sont
remplacés par des zéros.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
Mnémonique équivalent :
SAR (« Shift Arithmetical Right »)
h) l’instruction ROL (« Rotate Left »)
Syntaxe :
ROL Destination, Source
Description :
Effectue une rotation des bits de Destination de Source
positions vers la gauche. Le dernier bit à être sorti à
gauche et à être rentré à droite est placé
dans CF. OF est mis à 1 si et seulement si le signe de
Destination a changé.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
i) l’instruction ROR (« Rotate Right »)
Syntaxe :
ROR Destination, Source
Description :
Effectue une rotation des bits de Destination de Source
positions vers la droite. Le dernier bit à être sorti à
droite et à être rentré à gauche est placé
dans CF. OF est mis à 1 si et seulement si le signe de
Destination a changé.
Indicateurs affectés : AF,
CF, OF, PF, SF, ZF
j) l’instruction RCL (« Rotate through Carry
Left »)
Syntaxe :
RCL Destination, Source
Description :
Effectue une rotation des bits de Destination de Source
positions vers la gauche. CF est utilisé comme intermédiaire :
chaque bit qui sort à gauche est placé dans CF, et le
contenu de CF est ensuite réinséré à
droite. OF est mis à 1 si et seulement si le signe de
Destination a changé.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
k) l’instruction RCR (« Rotate through Carry Right »)
Syntaxe :
RCR Destination, Source
Description :
Effectue une rotation des bits de Destination de Source
positions vers la droite. CF est utilisé comme intermédiaire :
chaque bit qui sort à droite est placé dans CF, et le
contenu de CF est ensuite réinséré à
gauche. OF est mis à 1 si et seulement si le signe de
Destination a changé.
Indicateurs affectés :
AF, CF, OF, PF, SF, ZF
Sommaire
Suite
|