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.
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...).
|
|
|