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