Carry flag d'une operation de imul

Résolu
thesard1 -  
 thesard1 -
Bonjour,
je voudrais savoir pourquoi le petit programme suivant met CF a 1 bien que le résultat en hexa (C0) ne dépasse pas les 8 premier bits de AX et est contenu dans le registre al ?? normalement juste le flag OF mis a 1 doit suffire pour comprendre le résultat non ?? merci

mov al, 48
mov bl, 4
imul bl

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, il me semble que ce comportement est conforme à la spécification de imul : CF et OF ont la même valeur.
    0
  2. thesard1
     
    merci yg_be mais, il n y a pas de retenue !? n'est ce pas !
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je pense que c'est parce que les 8 bits du registre AL ne suffisent pas à déterminer le résultat, il faut utiliser le registre AX pour déterminer le signe du résultat.
      C0, en 8 bits, est négatif, tandis que 00C0, en 16 bits, est positif.
      0
      1. thesard1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        je pense que cela me convient comme réponse
        merci beaucoup
        0
      2. thesard1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        C0, en 8 bits, est négatif, tandis que 00C0, en 16 bits, est positif.
        ===============================

        mais au fait, n'est ce pas justement le rôle de OF de nous donner cette indication au lieu de CF.

        merci
        0