II Les bases

2. Les opérateurs logiques

 

Encore de la théorie ! Désolé, mais on ne peut pas connaître l'asm sans connaître les opérateurs logiques. Ne vous inquiétez pas, ce n'est pas compliqué du tout ! Si vous savez programmer dans un autre langage, alors vous les connaissez sûrement !

• L'opérateur AND (et)

En entrée, on lui donne deux bits. En sortie, il donne 1 si les deux bits sont égaux à 1 et 0 si ce n'est pas le cas. Voici sa table de vérité (sortie en fonction des entrées) :

Bit 1
Bit 2
AND
0
0
0
1
0
0
0
1
0
1
1
1

• L'opérateur OR (ou)

La sortie vaut 1 si au moins un des deux bits est égal à 1. Table de vérité :

Bit 1
Bit 2
OR
0
0
0
1
0
1
0
1
1
1
1
1

• L'opérateur XOR (ou exclusif)

La sortie vaut 1 si un seul des deux bits est égal à 1.

Bit 1
Bit 2
XOR
0
0
0
1
0
1
0
1
1
1
1
0

• L'opérateur NOT (non)

C'est l'opérateur le plus simple : il inverse l'état de son unique entrée.

Bit
NOT
0
1
1
0

• Technique du "masquage de bits"

Ces opérateurs sont *très* souvent utilisés en asm. Etant donné que le microprocesseur ne peut pas manipuler directement les bits (on peut seulement lire ou écrire 8, 16 ou 32 bits à la fois), on a recours à une technique de "masquage". Par exemple, considérons que nous avons en mémoire une variable. Nous voulons mettre à 1 son premier bit (le bit le plus à droite). Pour cela, on utilise l'opérateur OR.

Avec cette méthode, le premier bit est mis à 1, quel que soit son ancien état, et les autres bits restent inchangés (regardez la table de vérité de la fonction OR : 0 OR 0 = 0, et 1 OR 0 = 1).

Si on voulait forcer le premier bit à 0, alors il suffisait de faire un AND 11111110b.

On agit de manière similaire pour isoler un bit afin de connaître sa valeur : pour savoir si le deuxième bit est égal à 1, on fait un AND 00000010b, on place le résultat dans une mémoire intermédiaire, et si cette mémoire est égale à 2 (2^1), alors cela veut dire que le deuxième bit était égal à 1 ; dans le cas inverse il était égal à 0.

 


 
Copyright 2000 Jean-Rémy Lacharnay. Je ne pourrais être tenu pour responsable des éventuelles conséquences que l'exécution des exemples fournis peut avoir sur votre machine (plantages, pertes de données, etc...).