Carry flag d'une operation de imul

Résolu/Fermé
thesard1 - 19 nov. 2017 à 15:00
 thesard1 - 19 nov. 2017 à 22:00
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 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 19 nov. 2017 à 17:51
bonjour, il me semble que ce comportement est conforme à la spécification de imul : CF et OF ont la même valeur.
0
merci yg_be mais, il n y a pas de retenue !? n'est ce pas !
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 nov. 2017 à 21:18
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 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
19 nov. 2017 à 21:55
je pense que cela me convient comme réponse
merci beaucoup
0
thesard1 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
19 nov. 2017 à 22:00
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