Revenir au plan du site


Instructions de manipulation de bits


On peut tester, effacer ou positionner chaque bit individuellement d'un registre ou d'un octet en mémoire avec ces opérations.

SET
L'instruction SET sert à positionner à 1 n'importe quel bit d'un registre ou d'un octet en mémoire.

SET n,reg8 ; positionner un bit (sauf XH,XL,YH,YL,F,I)
SET n,(HL) ; positionner un bit de l'octet situé à l'adresse HL
SET n,(IX+d) ; positionner un bit de l'octet situé à l'adresse IX+d
SET n,(IY+d) ; positionner un bit de l'octet situé à l'adresse IY+d

RES
L'instruction RES (abréviation de RESet) sert à effacer n'importe quel bit d'un registre ou d'un octet en mémoire.

RES n,reg8 ; effacer un bit (sauf XH,XL,YH,YL,F,I)
RES n,(HL) ; effacer un bit de l'octet situé à l'adresse HL
RES n,(IX+d) ; effacer un bit de l'octet situé à l'adresse IX+d
RES n,(IY+d) ; effacer un bit de l'octet situé à l'adresse IY+d

BIT
L'instruction BIT sert à tester n'importe quel bit d'un registre ou d'un octet en mémoire. La valeur du bit est copié dans le flag Z, qui peut ensuite être utilisé dans une instruction conditionnelle.

BIT n,reg8 ; tester un bit (sauf XH,XL,YH,YL,F,I)
BIT n,(HL) ; tester un bit de l'octet situé à l'adresse HL
BIT n,(IX+d) ; tester un bit de l'octet situé à l'adresse IX+d
BIT n,(IY+d) ; tester un bit de l'octet situé à l'adresse IY+d

super instruction avec copie du résultat dans un autre registre
Les instructions RES et SET possèdent un mode d'exécution qui copie le résultat dans un autre registre. La syntaxe a alors besoin de deux opérandes. Seuls les assembleurs Rasm et Sjasm les supportent.

Les combinaisons possibles de registres sont :
RES n,(IX+d),A : SET n,(IX+d),A : RES n,(IY+d),A : SET n,(IY+d),A
RES n,(IX+d),B : SET n,(IX+d),B : RES n,(IY+d),B : SET n,(IY+d),B
RES n,(IX+d),C : SET n,(IX+d),C : RES n,(IY+d),C : SET n,(IY+d),C
RES n,(IX+d),D : SET n,(IX+d),D : RES n,(IY+d),D : SET n,(IY+d),D
RES n,(IX+d),E : SET n,(IX+d),E : RES n,(IY+d),E : SET n,(IY+d),E
RES n,(IX+d),H : SET n,(IX+d),H : RES n,(IY+d),H : SET n,(IY+d),H
RES n,(IX+d),L : SET n,(IX+d),L : RES n,(IY+d),L : SET n,(IY+d),L