Carry flag d'une operation de imul

Résolu
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. merci yg_be mais, il n y a pas de retenue !? n'est ce pas !
    1. Contributeur
      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.
    2. @yg_beje pense que cela me convient comme réponse
      merci beaucoup
    3. @yg_beC0, 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
  2. Contributeur
    bonjour, il me semble que ce comportement est conforme à la spécification de imul : CF et OF ont la même valeur.