Un masquage est une opération binaire qui permet de modifier certains bits d'un registre sans en changer les autres. On retrouve ce type d'opérations dans la programmation des microcontrôleurs et dans de nombreuses bibliothèques. Il existe 3 types de masquages :
Supposons un registre 8 bits nommé PORTA qui permet de piloter des leds.

Nous supposerons que ce registre est accessible en lecture et en écriture.
Voici quelques exemples d'écritures dans le registre :
PORTA = 0x00; éteind toutes les ledsPORTA = 0x01; allume la led n°0PORTA = 0x08; allume la led n°3PORTA = 0x0F; allume les 4 leds de droitePORTA = 0xFF; allume les 8 leds Supposons que l'on désire éteindre la led n°2, sans modifier les autres. On comprend
rapidement que si l'on écrit PORTA = 0x00;, nous allons bien éteindre la led n°2, mais aussi toutes
les autres !
C'est là qu'interviennent les masquages. La solution consiste à réaliser un
ET logique bit à bit entre le PORTA et un mot binaire (masque). Voici une représentation
imagée de l'opération de masquage :

L'opération binaire est détaillées ci-dessous. On constate que le résultat du ET logique
entre PORTA et le masque correspond bien à l'extinction de la led n°2
sans modification des autres bits :
$$ \begin{array}[t]{r} 0101\:0101 \\ \& \; 1111\:1011 \\ \hline 0101\: 0001 \end{array} $$
En C, nous écrirons :
PORTA = PORTA & 0xFB;
Modifiez le programme de l'exemple ci-dessus pour mettre le bit 6 à zéro à la place du bit n°2.
Quel est l'intérêt fondamental des masquages ?
Quels sont les types de masquages élémentaires ?
Dans le masquage suivant, comment s'appelle l'opérande 0xFE ?
reg = reg & 0xFE;
mask qui sert à définir le masque.
Essaie encore ...