Comment effectuer une multiplication sous assembleur
leo
-
Max -
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
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
A voir également:
- Multiplication en assembleur
- Application multiplication - Télécharger - Études & Formations
- Logiciel assembleur - Télécharger - Édition & Programmation
- Multiplication en anglais excel - Guide
- Tp corrigé assembleur 8086 - Forum Programmation
- Multiplication sql ✓ - Forum MySQL
1 réponse
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
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
AX est sur 2 octet ...
EAX EBX etc = 4 octet = 32 bit