Comment effectuer une multiplication sous assembleur

leo -  
 Max -
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

  1. Fafanellu Messages postés 23 Statut Membre 2
     
    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
    1. Max
       
      Euh un octet = 8 bit

      AX est sur 2 octet ...

      EAX EBX etc = 4 octet = 32 bit
      0