Revenir au plan du site


Instructions logiques de base


Les opérations logiques de base affectent uniquement le registre A. Il n'existe pas de version 16 bits de ces opérations.

AND
Effectuer un ET logique sur le registre A.
AND im8
AND reg8
AND (HL)
AND (IX+d)
AND (IY+d)

Effet sur les flags :
table de vérité du AND
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

L'utilisation pratique du AND est le masquage, ne conserver que certains bits, en enlever d'autres. Le AND permet de réaliser facilement des modulos sur toutes les puissances de deux moins un.

OR
Effectuer un OU logique sur le registre A.
OR im8
OR reg8
OR (HL)
OR (IX+d)
OR (IY+d)

Effet sur les flags :
table de vérité du OR
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

L'utilisation pratique du OR est la fusion de deux octets. On s'en sert aussi pour tester le zéro du registre A sans le modifier.

XOR
Effectuer un OU exclusif logique sur le registre A.
XOR im8
XOR reg8
XOR (HL)
XOR (IX+d)
XOR (IY+d)

Effet sur les flags :
table de vérité du XOR
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

L'utilisation pratique du XOR est le chiffrement car son utilisation deux fois de suite avec la même valeur permet de retrouver la valeur initiale de A. Certains jeux ont utilisé le XOR pour afficher des sprites à l'écran, afficher à nouveau le sprite au même endroit effaçait le sprite. Seul problème : C'est moche.

CPL
Effectue le complément à un du registre A (inverse tous les bits).

NEG
Le registre A devient A soustrait de zéro (inverse le signe mathématique).

SCF
Cette instruction met à 1 le flag C et remet à zéro les flags H et N. Les autres flags ne sont pas modifiés.

CCF
Cette instruction inverse les flags C et H. Le flag N est mis à zéro. Les autres flags ne sont pas modifiés.