;        ANDA / ANDX          ; ET bit à bit du registre A ou X sur 16 bits.

Rappel: un AND est vrai("1") si et seulement si les 2 bits sont vrais("1").

Nous voulons voir au terminal 4 caractères par ligne:

00 01 02 03
04 05 06 07
08 09 0A 0B
0C 0D 0E 0F
10 11 12 13
14 15 16 17
18 19 1A 1B
1C 1D 1E 1F
20 21 22 23
24 25 26 27
28 29 2A 2B
2C 2D 2E 2F
...........
F0 F1 F2 F3
F4 F5 F6 F7
F8 F9 FA FB
FC FD FE FF

Avec un langage évolué, nous devons utiliser un compteur qui, une fois rendu à 4 va commander un changement de ligne.

En assembleur, nous allons optimiser ce processus de changement de ligne.

Les caractères 03,07,0B,0F,13,17,1B,1F,...,F3,F7,FB,FF ont tous un dénominateur commun:
si on examine leurs codes binaires, leurs 2 derniers bits se terminent par 11
2.

03: 0000 0000 0000 0011
07: 0000 0000 0000 0111
0B: 0000 0000 0000 1011
0F: 0000 0000 0000 1111
13: 0000 0000 0001 0011
17: 0000 0000 0001 0111
.......................
FF: 0000 0000 1111 11
11

Il s'agit d'isoler ces 2 derniers bits.
S'ils contiennent "11" alors on doit commander un changement de ligne.

ANDA      0x0003,i    ; élimine tous les bits mais conservent les 2 derniers
CPA       3,i         ; les 2 derniers bits contiennent-ils "11"
BRNE      pas_saut    ; si non, on ne doit pas demander un changement de ligne
CHARO     '\n',i      ; nouvelle ligne
pas_saut: ....

exemple: 1216

      0000 0000 0001 0010
ANDA  0000 0000 0000 0011
      -------------------
      0000 0000 0000 0010 n'est pas un bon candidat pour une nouvelle ligne

exemple: 4B16

      0000 0000 0100 1011
ANDA  0000 0000 0000 0011
      -------------------
      0000 0000 0000 0011 est pas un bon candidat pour une nouvelle ligne