Pour obtenir le complément d’un nombre on utilisera le compteur.
Compteur.
Pour Symfor ont été prévus 4 compteurs de 32 bits : c, d, k, l.
Deux registres de débordement de 4 bits : z qui est implicite, v.
C’est par les instructions logicielles qu’ils sont associés au cours d’une opération avec les autres registres pour servir de débordement.
Ecrire INV c, v : c’est inverser le contenu du compteur c et mettre le débordement dans v.
Ecrire INV c : c’est inverser le contenu de c et mettre le débordement dans z qui est implicite.
Ecrire INC c, v : c’est augmenter de 1 le contenu de c et positionner le
débordement de c dans v.
Ecrire INC c : c’est augmenter de 1 le contenu de c et positionner le débordement dans z qui est implicite.
L’objectif est de pouvoir aller de N>0 à 0 sans utiliser l’additionneur.
De pouvoir aller de 0 à N> 0 sans utiliser l’additionneur.
Cas d = N, 0. Procède ainsi :
LOAD c, N : c = N = 3.
INV c : c=99996 z=9
INV d, c : d= 3 z=0
INC c : c=99997 z=9
INV d, c : d= 2 z=0
INC c : c=99998 z=9
INV d, c : d= 1 z=0
INC c : c=99999 z=9
INV d, c : d= 0 z=0
INC c : c=00000 z=1
Avec d on suit la progression qui peut servir de pointeur.
Si l’on groupe deux instructions par DEC = décrémenter de 1:
DEC d, c :INV d, c
:INC c
La séquence précédente peut s’écrire :
LOAD c, N : c = N = 3.
INV c : c=99996 z=9
DEC d, c : d= 3 c=99997 z=0
DEC d, c : d= 2 c=99998 z=0
DEC d, c : d= 1 c=99999 z=0
DEC d, c : d= 0 c=00000 z=1
Cas d = 0, N. Procède ainsi :
LOAD c, N : c = N = 3.
INV c : c=99996 z=9
CLEAR d : d = 0 z=0
INC c : c=99997 z=9
INC d : d = 1 z=0
INC c : c=99998 z=9
INC d : d = 2 z=0
INC c : c=99999 z=9
INC d : d = 3 z=0
INC c : c=00000 z=1
Avec d on suit la progression qui peut servir de pointeur.
Pour obtenir le complément à 2 d’un nombre nous n’avons besoin que de 3 opérations :
LOAD c, N
INV c
INC c
Ces trois instructions peuvent se traduire par une seule : CMPL c, N.
Le décodeur d’instruction la rencontre et la décompose en la séquence précédente.
Ci dessous le circuit du compteur qui permet de réaliser cela. Voir compteur.gif
Schéma de principe.
