biboucat
Messages postés6Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention11 mai 2005
-
8 mai 2005 à 23:36
biboucat
Messages postés6Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention11 mai 2005
-
9 mai 2005 à 21:31
Bonsoir tout le monde, je suis à la recherche dans le cadre d'un projet d'un algorithme permettant de faire des divisions avec un diviseur et dividende eux meme sur 32 bits. Je pense que beaucoup de gens ont été confronté à ce probleme, donc quelqu'un aura peut etre la solution.
Merci bcp ca me permettra d avancer dans mon projet.
biboucat
Messages postés6Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention11 mai 2005 9 mai 2005 à 19:55
Oui mais le pb est que le motorola 68000 gere que des registres 32 bits max donc pour l instruction div, il est spécifié que ca marche uniquement sur un word: le diviseur doit avoir au maximum 16 bits et la valeur a diviser peut elle etre sur 32 bits
biboucat
Messages postés6Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention11 mai 2005 9 mai 2005 à 21:31
Bon pour la multiplication j'ai trouvé comment faire. En fait comme je sais qu'on va multipler par 100 le registre de 32 bits, je decompose en puissance de 2, je fais les décalages correspondants(100 = 64 +32 +4) de 6 5 et 2 et j additionne le tout.
On obtient donc :
Ici la valeur a multiplier par 100 est dans D1
MOVE.L D1,D2
MOVE.L D2,D3
MOVE.L D3,D4
LSL
.L #
6,D2 *multiplication par 64
LSL
.L #
5,D3 *multiplication par 32
LSL
.L #
2,D4 *multiplication par 4
ADD.L D4,D3
ADD.L D3,D2 *D2 contient le resultat de la multiplication par 100
Ca m a l'air assez efficace car on fait la multiplication en 8 instructions mais sans doute peut on mieux faire... Quant a la division j ai pensé a la soustraction mais c vraiment trop barbare comme methode, je vais voir si je peux trouver un truc un peu plus optimisé. J'espere que cette technique pour la multiplication pourra aider des gens ^^