Indicateur de demi-retenue
# 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, et la série Motorola 68000. 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 $25_{16}$ et $48_{16}$ donne $6D_{16}.$ 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é $25_{16}$ et $48_{16}$ en DCB, donne $6D_{16}.$ Dans la mesure où le bout faible de cette valeur est un chiffre non décimal (D), il doit être ajusté en y ajoutant $06_{16}$ pour donner le DCB corrigé $73_{16},$ ce qui représente la valeur décimale 73.

De même, additionner les valeurs DCB $39_{16}$ et $48_{16}$ donne $81_{16}.$ 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 $06_{16}$ à $81_{16}$ pour donner le DCB corrigé $87_{16}.$

Enfin, si le résultat d'une addition est un chiffre de poids fort non décimal, alors $60_{16}$ doit être ajoutée à la valeur pour donner bon DCB. Par exemple, l'addition de $72_{16}$ et $73_{16}$ donne $E5_{16}.$ Dans la mesure où le chiffre de poids fort du résultat de cette somme est non décimal (E), y ajouter $60_{16}$ donne le DCB corrigé $145_{16}.$ (Notez que le chiffre 1 à l'avant est en fait un bit de retenue.)

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 $06_{16}.$
* 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 $60_{16}.$
