Indicateur de demi-retenue

L'indicateur de demi-retenue (également appelé indicateur auxiliaire ou indicateur d'ajustement décimal) est un des bits du registre d’état de nombreuses familles de processeur avec, entre autres, l'Intel 8080, le Zilog Z80, le x86[1], et la série Motorola 68000[2]. Il indique qu'une retenue ou un emprunt a été généré sur les quatre bits de poids faible de l'accumulateur à la suite de l’exécution d'une instruction arithmétique. Il est principalement utilisé dans les instructions arithmétique décimal (DCB).

Usage

Normalement, un processeur qui utilise l'arithmétique binaire (soit presque tous les processeurs modernes) additionnera deux octets de 8 bits en suivant les règles de l'addition binaire. Par exemple, l'addition de 2516 et 4816 donne 6D16. L'addition est cependant plus compliqué pour les valeurs décimales codé binaire (DCB) où chaque bout de 4 bits représente un chiffre décimal. Par exemple, le résultat de l'addition des valeurs décimales 25 et 48, encodé 2516 et 4816 en DCB, donne 6D16. Dans la mesure ou le bout faible de cette valeur est un chiffre non décimal (D), il doit être ajusté en y ajoutant 0616 pour donner le DCB corrigé 7316, ce qui représente la valeur décimale 73.

  0010 0101   25
+ 0100 1000   48
-----------
  0110 1101   6D, résultat intermédiaire
+      0110   06, ajustement
-----------
  0111 0011   73, résultat ajusté

De même, additionner les valeurs DCB 3916 et 4816 donne 8116. Ce résultat n'a pas de bout faible non décimal, mais il entraîne une retenue du chiffre de poids faible (les quatre bits de poids faible) dans le chiffre de poids fort (les quatre bits de poids fort). Le processeur l'indique en mettant l'indicateur de demi-retenue. Cette valeur est également corrigé par l'addition de 0616 à 8116 pour donner le DCB corrigé 8716.

  0011 1001   39
+ 0100 1000   48
-----------
  1000 0001   81, résultat intermédiaire
+      0110   06, ajustement
-----------
  1000 0111   87, résultat ajusté

Enfin, si le résultat d'une addition est un chiffre de poids fort non décimal, alors 6016 doit être ajoutée à la valeur pour donner bon DCB. Par exemple, l'addition de 7216 et 7316 donne E516. Dans la mesure ou le chiffre de poids fort du résultat de cette somme est non décimal (E), y ajouter 6016 donne le DCB corrigé 14516. (Notez que le chiffre 1 à l'avant est en fait un bit de retenue.)

  0111 0010   72
+ 0111 0011   73
-----------
  1110 0101   E5, résultat intermédiaire
+ 0110        60, ajustement
-----------
1 0100 0101  145, résultat ajusté

En résumant, pour pouvoir produire une valeur en DCB correcte:

  • Si le résultat d'une addition binaire contient un chiffre de poids faible non décimal ou entraîne l'indicateur de demi-retenue, le résultat doit être corrigé par l'ajout de 0616.
  • Si le résultat d'une addition binaire contient un chiffre de poids fort non décimal, le résultat doit encore être corrigé par l'ajout de 6016.

Voir aussi

Références

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.