web-dev-qa-db-fra.com

Drapeau de transport, drapeau auxiliaire et drapeau de débordement dans l'assemblage

Je n'arrive pas à faire la différence entre le drapeau de transport, le drapeau auxiliaire et le drapeau de débordement dans l'assemblage. Je l'étudie actuellement à l'école et l'enseignant n'est entré dans aucun détail. Veuillez m'aider à comprendre, j'en aurai besoin pour l'examen. Je serai vraiment reconnaissant !! D'après ce que je semble savoir maintenant, c'est que le drapeau de transport est utilisé lorsque vous essayez, disons, 255 + 9 lorsque vous n'avez que 8 bits pour les données, le drapeau auxiliaire est le même, mais uniquement pour les 4 derniers bits ?? Et le débordement est utilisé lorsque vous avez 7 bits pour le nombre binaire et le 8 (le plus à gauche) est utilisé pour le signe ???

16
user2322960

Carry Flag est un drapeau défini lorsque:

a) deux numéros non signés ont été ajoutés et le résultat est supérieur à la "capacité" du registre où il est enregistré. Ex: nous voulons ajouter deux nombres à 8 bits et enregistrer le résultat dans un registre à 8 bits. Dans votre exemple: 255 + 9 = 264, ce qui est plus que le registre 8 bits peut stocker. Ainsi, la valeur "8" y sera enregistrée (264 & 255 = 8) et le drapeau CF sera défini.

b) deux nombres non signés ont été soustraits et nous avons soustrait le plus grand du plus petit. Ex: 1-2 vous donnera 255 en résultat et le drapeau CF sera défini.

Le drapeau auxiliaire est utilisé comme CF mais lorsque vous travaillez avec BCD. Ainsi, AF sera défini lorsque nous aurons un débordement ou un sous-dépassement dans les calculs BCD. Par exemple: pour une unité ALU à 8 bits, le drapeau auxiliaire est activé lorsqu'il y a report du 3e bit au 4e bit, c'est-à-dire report du quartet inférieur au quartet supérieur. ( lien Wiki )

Le drapeau de débordement est utilisé comme CF mais lorsque nous travaillons sur des numéros signés. Ex nous voulons ajouter deux numéros signés 8 bits: 127 + 2. le résultat est 129 mais c'est trop pour le numéro signé 8 bits, donc OF sera défini. Similaire lorsque le résultat est trop petit comme -128 - 1 = -129, ce qui est hors de portée pour les numéros signés 8 bits.

Vous pouvez en savoir plus sur les drapeaux sur wikipedia

24
Michał Walenciak

Porter le drapeau

Les règles pour activer le drapeau de report en mathématiques binaires/entiers sont deux:

  1. L'indicateur de report est défini si l'ajout de deux nombres entraîne un report des bits les plus significatifs (les plus à gauche) ajoutés. 1111 + 0001 = 0000 (le drapeau de report est activé)

  2. Le drapeau de report (emprunt) est également défini si la soustraction de deux nombres nécessite un emprunt dans les bits les plus significatifs (les plus à gauche) soustraits. 0000 - 0001 = 1111 (l'indicateur de report est activé) Sinon, l'indicateur de report est désactivé (zéro).

    • 0111 + 0001 = 1000 (l'indicateur de report est désactivé [zéro])
    • 1000 - 0001 = 0111 (le drapeau de report est désactivé [zéro])

En arithmétique non signée, regardez l'indicateur de report pour détecter les erreurs.

En arithmétique signée, le drapeau de report ne vous dit rien d'intéressant.

Drapeau de débordement

Les règles pour activer l'indicateur de débordement en mathématiques binaires/entiers sont deux:

  1. Si la somme de deux nombres avec les bits de signe désactivés donne un nombre de résultats avec le bit de signe activé, le drapeau "débordement" est activé. 0100 + 0100 = 1000 (l'indicateur de débordement est activé)

  2. Si la somme de deux nombres avec les bits de signe activés donne un numéro de résultat avec le bit de signe désactivé, le drapeau "débordement" est activé. 1000 + 1000 = 0000 (l'indicateur de débordement est activé)

Sinon, le drapeau "débordement" est désactivé

  • 0100 + 0001 = 0101 (l'indicateur de débordement est désactivé)
  • 0110 + 1001 = 1111 (indicateur de débordement désactivé)
  • 1000 + 0001 = 1001 (indicateur de débordement désactivé)
  • 1100 + 1100 = 1000 (l'indicateur de débordement est désactivé)

Notez que vous n'avez qu'à regarder les bits de signe (les plus à gauche) des trois nombres pour décider si l'indicateur de débordement est activé ou désactivé.

Si vous utilisez l'arithmétique du complément à deux (signé), l'indicateur de débordement signifie que la réponse est fausse - vous avez ajouté deux nombres positifs et obtenu un négatif, ou vous avez ajouté deux nombres négatifs et obtenu un positif.

Si vous faites de l'arithmétique non signée, l'indicateur de débordement ne signifie rien et doit être ignoré.

Pour plus de précisions, veuillez consulter: http://teaching.idallen.com/dat2343/10f/notes/040_overflow.txt

33
dark_knight