Comment effectuer une multiplication sous assembleur

Fermé
leo - 25 avril 2011 à 22:28
 Max - 9 nov. 2011 à 15:20
Bonjour,

J'ai un projet en traitement numerique de signal et je n'arrive pas a faire une multiplication sous assembleur car en utilisant l'instruction Mul le resultat est dans 16bits or j veux le renvoyer sur le port B qui lui est 8 bits donc je bloque a ce niveau depuis des semaines.
merci d'avance

1 réponse

Fafanellu Messages postés 21 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 14 décembre 2015 2
12 mai 2011 à 18:12
Salut, tu essaies de multiplier quoi ?
Car sur 8 bits, tu peux mettre 2^8-1 valeurs, pas plus !

Si tu as vérifié ça, il faut que tu prennes en considération un truc : sur quel registre tu te bases.

AX est sur 4 octets
EAX est sur 8 octets (32 bits quoi)

Si tu regardes AX de plus près tu vois qu'il est composé de deux parties : AH et AL.

AH AH AL AL (schématiquement) H pour High, L pour low

AH correspond au sous-registre de AX contenant les 8 premiers bits (poids fort) et AL les 8 derniers (poids faible).
Il suffit de récupérer la partie qui t'intéresse, et ton résultat sera sur 8 bits
. Encore une fois, gaffe à ce que tu multiplies, car le résultat peut être vite plus grand que prévu
0
Euh un octet = 8 bit

AX est sur 2 octet ...

EAX EBX etc = 4 octet = 32 bit
0