Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Coder une grosse division
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » dim. 28 nov. 2021 19:23

Hello tous,

Je bute sur mon projet affichage de fréquence AD9850, il me faut une division 32/16 plus rapide que celle que j'utilise pour l'instant, je l'ai codée à coup de marteau et elle prend beaucoup de temps machine. J'ai passé la journée à me tordre le cerveau pour trouver un algo de division 32/16 bits plus propre mais je coince pour l'instant.
Celle que j'utilise part du principe qu'une division n'est qu'une succession de soustractions, donc je soustrais le diviseur au dividende en incrémentant le quotient jusqu'à ce que le reste soit inférieur au diviseur. Ca marche mais c'est lent.
Je comptais faire un algorithme en suivant la méthode qu'on nous enseigne l'école primaire mais çà ne colle pas dés qu'on a plus d'un octet dans le diviseur.

Je continue à persister, si je deviens fou ne vous étonnez pas.

Si qqun à une idée...
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Coder une grosse division
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#2 Message par satinas » dim. 28 nov. 2021 20:14

Tu as vu celle-ci ? http://www.piclist.com/techref/microchi ... by16ph.htm
Sinon passe à un pic 16 bits, il fera la division pour toi en 150ns.

Coder une grosse division
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#3 Message par F6FCO » dim. 28 nov. 2021 23:32

Pour contourner le pbm je suis en train d'utiliser celle de Peter G. Harrison, mais c'est frustrant parce que ce n'est pas moi qui l'ai codée :wink:
Bien plus rapide que la mienne.

J'avais vu celle que tu décris aussi mais il y a des trucs qui me gênent comme les movfw, surement faute de frappe pour des movwf,
skpnc, skpnc, skpz.

Les 16bits oui ce serait bien, j'ai prévu de m'y intéresser mais pas trop de doc, faut franchir le pas.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Coder une grosse division
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#4 Message par satinas » lun. 29 nov. 2021 07:40

Bonjour

Vu le nombre de fainéants quidams qui ont traîné sur PicList, il ne doit pas y avoir beaucoup d'erreurs.
Ce sont des macros, si on les cherche elles figurent en dur dans l'exe de l'assembleur MPASMWIN.EXE
Elles ont l'air de marcher que pour les 16F, pas pour les 18F.

Soit tu les enlèves en modifiant les lignes, par exemple "movfw var" c'est "movf var,W"
Soit tu te refais des macros 18F.

Code : Tout sélectionner

movfw   macro   var
        movf    var,W
        endm

https://www.microchip.com/forums/FindPost/763523

Coder une grosse division
Lulu
Avatar de l’utilisateur
Membre
Membre
Messages : 9
Enregistré en : octobre 2016
Localisation : sud est

#5 Message par Lulu » lun. 29 nov. 2021 10:10

Bonjour, j'avais trouvé le fichier ci-joint sur le net, mais je n'ai pas gardé le lien. ça peut peut-être aider. Je n'ai pas testé les routines contenues dans le fichier.
ça ne correspond peut-être pas à l'idée de tout se faire soi-même, mais pour ma part, je ne saurai pas tout faire moi-même, j'ai trop de limite ! :-D
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Coder une grosse division
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#6 Message par Claudius » lun. 29 nov. 2021 17:03

Bonjour,

Fichier "math.asm" extrait du zip venant en fait du projet que je cite régulièrement; à savoir:
Multibyte Arithmetic Assembly Library for PIC Microcontrollers

À noter que le code généré n'est pas optimisé comme celui donné par satinas mais ce qui est sûr, c'est qu'il est correct d'un point de vue algorithmique quelles que soient la taille des opérandes et les opérations choisies ;-)

Coder une grosse division
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#7 Message par F6FCO » lun. 29 nov. 2021 18:26

Bonsoir tous,
Merci pour les réponses, j'ai mis tout çà en lieu sur. Mon projet tourne maintenant correctement avec une division empruntée, reste à faire la plaque imprimée. Quand il sera terminé je me mettrais à cogiter sur une division home-made même si elle ne sera pas au niveau de tous ces ténors du codage, c'est juste pour le plaisir.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités