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
etV
- 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