Les instructions arithmétiques et logiques sont effectuées par l'unité arithmétique et logique. Il s'agit d'opération directement effectuées sur les bits de la donnée que l'on traite.
Sont comprises dans cette appellations:
Les opérations arithmétiques et logiques modifient l'état des indicateurs.
Instructions d'addition |
Les opérations arithmétiques se font de la même façon en binaire qu'en base décimale. C'est-à-dire que lorsque l'on dépasse la valeur maxi au niveau du bit n (lorsque l'on dépasse la valeur 1) on a une retenue ou un report au bit n+1.
Voyons voir cela sur un exemple:
0 | 0 | 0 | 1 | |
+ | 0 | 0 | 0 | 1 |
- | - | - | - | |
0 | 0 | 1 | 0 |
Sur un exemple un peu plus compliqué:
0 | 0 | 1 | 0 | |
+ | 0 | 0 | 1 | 1 |
- | - | - | - | |
0 | 1 | 0 | 1 |
Décalage et rotation |
Ces instructions permettent de décaler d'un côté ou de l'autre les bits des registres accumulateurs (AX et BX, et donc AH, AL, BH, BL). Cette opération qui semble inuile a en fait plusieurs applications très intéressantes, dont:
Une opération de décalage déplace chacun des bits d'un nombre binaire sur la gauche (ou la droite), mais ceux-ci
sortent, c'est-à-dire qu'ils sont définitivement perdus, lorsqu'ils arrivent au bit de poids fort (ou de poids faible).
exemple:
0001110000
0011100000 (on décale d'un bit à gauche)
0111000000 (on décale d'un bit à gauche)
1110000000 (on décale d'un bit à gauche)
1100000000 (on décale d'un bit à gauche)
1000000000 (on décale d'un bit à gauche)
Une opération de rotation agit comme une opération de décalage à la différence près que les
bits qui sortent d'un côté rentrent de l'autre...
exemple:
0001110000
0011100000 (on effectue une rotation d'un bit à gauche)
0111000000 (on effectue une rotation d'un bit à gauche)
1110000000 (on effectue une rotation d'un bit à gauche)
1100000001 (on effectue une rotation d'un bit à gauche)
1000000011 (on effectue une rotation d'un bit à gauche)
Les opérations courantes de rotation et de décalage sont les suivantes:
Les instructions RCL et RCR permettent de faire une lecture bit-à-bit du contenu du registre.
Les instructions SHL et SHR permettent de faire une multiplication par 2n sur des entiers naturels (pas sur des entiers relatifs car
le bit de poids fort disparait dès la première rotation).
Instructions logiques |
Les instructions logiques sont au nombre de trois (ET, OU et OU Exclusif). Elles permettent de faire des opérations bit-à-bit sur des nombres binaires (c'est-à-dire en considérant chacun des bits indépendamment des autres, sans se soucier de la retenue).
Ce type d'instruction ce note de la manière suivante:
INSTRUCTION destination, source
destination désigne le registre ou l'adresse de la case mémoire qui contiendra le résultat de l'opération.
source peut ê aussi bien un registre, une constante ou une adresse.
0 | 1 | 0 | 1 | |
ET | 0 | 1 | 1 | 0 |
- | - | - | - | |
0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | |
OU | 0 | 1 | 1 | 0 |
- | - | - | - | |
0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | |
0 | 1 | 1 | 0 | |
- | - | - | - | |
0 | 0 | 1 | 1 |
Chacune de ces instructions a de très nombreuses applications, il serait impossible de toutes les énumérer. En voici quelques unes: