Académique Documents
Professionnel Documents
Culture Documents
TD Informatique Industrielle Avec Correction
TD Informatique Industrielle Avec Correction
correction
Arithmétique entière
Donnez le résultat (en décimal) et les valeurs de CF (Carry Flag – entiers non
signés) et OF (Overflow Flag – entiers signés) après les opérations ci-dessous.
Pour vous éviter d'avoir recours à une calculatrice, voici les valeurs de
quelques puissances de 2 : 27 = 128 ; 28 = 256 ; 215=32768 ; 216 = 65536 .
8 bits 0-1 ? ? ? ?
8 bits 127+1 ? ? ? ?
8 bits 0xFF+1 ? ? ? ?
8 bits -128-1 ? ? ? ?
16 bits 0-1 ? ? ? ?
16 bits 32767+1 ? ? ? ?
16 bits 0xFFFF+1 ? ? ? ?
16 bits -32768-1 ? ? ? ?
Réponse:
8 bits 0xFF+1 0 0 1 0
16 bits 0xFFFF+1 0 0 1 0
Explication :
15.3.1
jmp Boucle
Réponse : indéfini.
15.3.2
jnc Boucle
Réponse : 0.
15.3.3
jno Boucle
Réponse : 0.
(3) j? ????????
(7) ?????????
Réponse :
(3) jz FinCopie
(7) FinCopie:
Correction :
– Ligne 1, Colonne 4 : Il faut supprimer les ? : l'octet pointé par %rsi est
copié directement dans %al
– Ligne 3, Colonne 2 : 'jz' : si l'octet qui vient d'être copié est égal à 0, la
chaine de caractère d'origine est terminée, il faut donc sortir de la boucle.
Explication :
(1) Copie de l'octet [movb] pointé [()] par le registre 64 bits %rsi dans le
registre 8 bits %al.
(2) Copie de l'octet contenu dans %al à l'emplacement pointé [()] par le
registre 64 bits %rdi. Note : %al joue le rôle de registre intermédiaire,
car la copie directe d'une valeur pointée vers une valeur pointée n'est
pas implémentée dans les processeurs de la famille 80x86
(3) Si l'octet courant, contenu dans %al est égal à zéro (ZF=1), la copie
est terminée (poursuite de l'exécution du programme à la ligne 7).
Sinon (ZF=0), l'exécution se poursuit à la ligne 4.
(6) Retour à la ligne 1, c'est à dire copie de l'octet pointé par la nouvelle
valeur de %rsi à la nouvelle adresse contenue dans %rdi.
(7) Fin de la copie. Cette ligne ne peut être atteinte que lorsque ZF=1 à la
ligne 3