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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
bonjour, il me semble que ce comportement est conforme à la spécification de imul : CF et OF ont la même valeur.
0
thesard1
 
merci yg_be mais, il n y a pas de retenue !? n'est ce pas !
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 
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
thesard1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
je pense que cela me convient comme réponse
merci beaucoup
0
thesard1 > yg_be Messages postés 23541 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