Comprendre le drapeau de retenue auxiliaire du microprocesseur 8085
Le drapeau de retenue auxiliaire (AC) du microprocesseur Intel 8085 joue un rôle spécialisé dans les opérations arithmétiques, particulièrement lors du travail avec des nombres en BCD (Binary Coded Decimal). Contrairement au drapeau de retenue standard qui surveille le débordement du bit de poids fort, le drapeau AC suit une retenue ou un emprunt du bit 3 au bit 4 — essentiellement la frontière entre les demi-octets (nibbles) inférieur et supérieur de l'accumulateur.
Pourquoi le drapeau AC est important pour l'arithmétique BCD
En représentation BCD, chaque chiffre décimal occupe un nibble de 4 bits (0000–1001). Lors de l'addition ou soustraction de deux valeurs BCD, le résultat binaire peut produire un chiffre BCD invalide (1010–1111) ou générer une retenue entre nibbles que le drapeau de retenue standard ne détecte pas. Le drapeau AC comble cette lacune en signalant exactement quand une retenue ou un emprunt franchit la frontière des nibbles.
Correction des résultats BCD invalides
Après une opération arithmétique, si le drapeau AC est positionné, le résultat contient un chiffre BCD invalide dans le nibble inférieur. La correction est simple :
- Addition : Ajoutez 6 (0110₂) à l'accumulateur pour sauter les six codes invalides et restaurer un chiffre BCD valide, propageant toute nouvelle retenue au nibble supérieur.
- Soustraction : Soustrayez 6 (0110₂) de l'accumulateur pour compenser l'emprunt ayant franchi la frontière des nibbles.
Exemple travaillé
Additionnez les nombres BCD 3 (0011) et 5 (0101) :
- L'addition binaire donne 1000 (8), qui est un chiffre BCD valide, donc AC = 0 et aucune correction n'est nécessaire.
- Ajoutez maintenant 9 (1001) et 7 (0111). Somme binaire = 10000. Le nibble inférieur est 0000, mais une retenue a bougé du bit 3 au bit 4, donc AC = 1. Ajouter 6 donne 0110 (6) dans le nibble inférieur avec une retenue vers le nibble supérieur, produisant le résultat BCD correct 16 (0001 0110).
Résumé
Le drapeau AC est une aide matérielle dédiée à l'arithmétique BCD sur le 8085. En détectant les retenues aux frontières des nibbles, il permet des corrections logicielles simples qui maintiennent les résultats BCD valides sans nécessiter d'instructions complètes d'ajustement décimal.
