1
Yep,

J'essai de multiplier deux registres entre eux ou un registre par lui mais sans passer par les OP ou les rom calls, mais c'est bien lent et long... Quelqu'un aurai une routine ?
2
Hum, peut etre que ceci pourra t'aider, mais ca doit etre a peu pres ce que tu as fais:

multhl:
       ld e,l
multhe:
       ld l,0
       ld d,l
       ld b,8
multheLoop:
       add hl,hl
       jr nc,$F
       add hl,de
$$:    djnz multheLoop
       ret


C'est tire de la source de mirage os
3
Mouais j'vais voir, c'est à peu près ce que je fait et c'est un peu long je trouve.
4
J'avais récupéré quelques routines d'Hideaki Omuro, de multiplication, division, etc. dont certaines sont optimisées en taille et d'autres en vitesse. Je vous les partage --> http://progg.free.fr/z80/

Par contre je n'ai pas retrouvé d'où elles venaient confus
5
happy Merci ! Avec ça je vais pouvoir bien avancer dans mon p'tit projet smile
6
Tu peux utiliser la parité aussi, par exemple pour a = b*c :
- a initialiser à 0;
- faire un échange pour que b > c;
Tant que c est différent de 0 :
- Si le bit de poids faible de c est non nul, tu ajoutes b à a, tu décrément c;
- Tu divise c par 2 et tu multiplies b par 2.

Ça donne une complexité en O(log2(c)).
Par contre ce qui est embêtant c'est qu'il faut faire attention à ce que le b ne déborde pas...
7
Ouais, ça c'est la multiplication Alexandrine, et normalement ça va très vite...
Il y a aussi un algo similaire pour l'opération puissance...
8
./6> en pratique quand c'est borné c'est plus rapide de faire un multiplication posée (comme à l'école primaire, tu multiplies le premier nombre par chaque bit du multiplieur (ou le tester avec du binaire...), du mets des 0 derrière, et après (pendant) t'additionnes tout ), non ? [ en binaire, ça a exactement la même complexité car tu fais un boucle sur les bits du plus petit, donc en log2(c). Enfin en vérité on va plutôt jusqu'à la borne ]

D'ailleurs je viens de lire un peu les routine du ./4, il fait comme ça