Aller au contenu

Informations pratiques

Dans les exercices, vous aurez à calculer le résultat d’une opération, d’interpréter le résultat comme un nombre signé ou non signé et d’évaluer les flags N, Z, C et V. Ce chapitre vous donne une manière de procéder pour de telles opérations.

Voici un exemple d’exercice :

Exercice

Pour les opérations suivantes, calculez :

  • l’état des flags N, Z, C et V
  • le résultat de l’opération si on interprète ce résultat comme un nombre signé
  • le résultat de l’opération si on interprète ce résultat comme un nombre non signé

On considère des nombres sur 8 bits.

  • \(100 + 100\)
  • \(130 - 40\)
  • \(60\) + \(200\)
  • \(128\) + \(128\)

Exercice 1

Le premier exercice consiste à calculer le résultat de l’opération \(100 + 100\).

Qu’on l’interprète en signé ou en non signé, le nombre \(100\) vaut toujours \(100\).

SignéNon Signé
Opérande 1 (\(100\))\(100\)\(100\)
Opérande 2 (\(100\))\(100\)\(100\)
Résultat mathématique de d’addition\(200\)\(200\)
Résultat effectif\(-56\)\(200\)

Le résultat de l’addition en nombres signés est \(200\), mais ce nombre est plus grand que le plus grand nombre signé sur 8 bits (qui est égal à \(127\)), le résultat effectif est donc \(200 - 256 = -(256-200) = -56\).

  • Le résultat effectif de l’interprétation signée est négatit (\(-56\)), donc le flag N est à 1.
  • Le résultat effectif n’est pas zéro, donc le flag Z est à 0.
  • Le résultat effectif de l’interprétation non-signée correspond au résultat mathématique de l’addition (\(200 = 200\)), donc le flag C est à 0 (pas de retenue).
  • Le résultat effectif de l’interprétation signée ne correspond pas au résultat mathématique (\(-56 \ne 200\)), donc le flag V est à 1.

Le réponse à cet exercice est donc

N=1, Z=0, C=0, V=1, signé = -56, non signé = 200

Exercice 2

Le deuxième exercice consiste à calculer le résultat de l’opération \(130 - 40\).

Commençons par interpréter les deux opérandes comme des nombres signés et non signés:

\(130\) est plus grand que le plus grand nombre signé sur 8 bits (qui est égal à \(127\)), son interprétation est donc négative et sa valeur est \(130 - 256 = -(256 - 130) = -126\).

SignéNon Signé
Opérande 1 (\(130\))\(-126\)\(130\)
Opérande 2 (\(40\))\(40\)\(40\)
Résultat mathématique de la soustraction\(-166\)\(90\)
Résultat effectif\(90\)\(90\)

Le résultat de l’opération en nombres signés est \(-166\), mais ce nombre est plus petit que le plus petit nombre signé sur 8 bits (qui est égal à \(-128\)), le résultat effectif est donc \(-166 + 256 = 90\).

  • Le résultat effectif de l’interprétation signée est positif, donc le flag N est à 0.
  • Le résultat effectif n’est pas zéro, donc le flag Z est à 0.
  • Le résultat effectif de l’interprétation non-signée correspond au résultat mathématique, mais c’est une soustraction, donc le flag C est à 1 (pas d’emprunt).
  • Le résultat effectif de l’interprétation signée ne correspond pas au résultat mathématique, donc le flag V est à 1.

Le réponse à cet exercice est donc

N=0, Z=0, C=1, V=1, signé = 90, non signé = 90

Exercice 3

Calculons maintenant le résultat de l’opération \(60 + 200\).

\(200\) est plus grand que le plus grand nombre signé sur 8 bits, sa valeur est \(200 - 256 = -(256 - 200) = -56\).

SignéNon Signé
Opérande 1 (\(60\))\(60\)\(60\)
Opérande 2 (\(200\))\(-56\)\(200\)
Résultat mathématique de l’addition\(4\)\(260\)
Résultat effectif\(4\)\(4\)

Le résultat de l’opération en nombres non-signés est \(260\), mais ce nombre est plus grand que le plus grand nombre non-signé sur 8 bits (qui est égal à \(255\)), le résultat effectif est donc \(260 - 256 = 4\).

  • Le résultat effectif de l’interprétation signée est positif, donc le flag N est à 0.
  • Le résultat effectif n’est pas zéro, donc le flag Z est à 0.
  • Le résultat effectif de l’interprétation non-signée ne correspond pas au résultat mathématique et c’est une addition, donc le flag C est à 1 (retenue).
  • Le résultat effectif de l’interprétation signée correspond au résultat mathématique, donc le flag V est à 0.

Le réponse à cet exercice est donc

N=0, Z=0, C=1, V=0, signé = 4, non signé = 4

Exercice 4

Calculons maintenant le résultat de l’opération \(128 + 128\).

\(128\) est plus grand que le plus grand nombre signé sur 8 bits, sa valeur est \(128 - 256 = -(256 - 128) = -128\).

SignéNon Signé
Opérande 1 (\(128\))\(-128\)\(128\)
Opérande 2 (\(128\))\(-128\)\(128\)
Résultat mathématique de l’addition\(-256\)\(256\)
Résultat effectif\(0\)\(0\)

Le résultat de l’opération en nombres signés est \(-256\), mais ce nombre est plus petit que le plus petit nombre non-signé sur 8 bits, le résultat effectif est donc \(-256 + 256 = 0\). Le résultat de l’opération en nombres non-signés est \(256\), mais ce nombre est plus grand que le plus grand nombre non-signé sur 8 bits, le résultat effectif est donc \(256 - 256 = 0\).

  • Le résultat effectif de l’interprétation signée est positif, donc le flag N est à 0.
  • Le résultat effectif est égal à zéro, donc le flag Z est à 1.
  • Le résultat effectif de l’interprétation non-signée ne correspond pas au résultat mathématique et c’est une addition, donc le flag C est à 1 (retenue).
  • Le résultat effectif de l’interprétation signée ne correspond pas au résultat mathématique, donc le flag V est à 1.

Le réponse à cet exercice est donc

N=0, Z=1, C=1, V=1, signé = 0, non signé = 0