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

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#21 Message par JJE » ven. 14 juin 2019 18:51 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-x,
C'est une vraie histoire de fous :mur:
Je viens de refaire une exécution pas à pas sous MPLAB SIM.
à l'entrée dans multiple, je saute bien à impaire, normal
je déroule impaire qui ajoute bien Operande à produit, sans retenue bien sûr
sur le retirn, je me retrouve à paire, normal.
là je charge multiplicateur + 0 dans W soit 0x01.
le xorlw D'1' qui suit donne un résultat nul, normal et arme Z.
donc le btfsc STATUS, Z ne "skip" pas puisque Z n'est pas "clear"
donc je fais le return.

Le programme que je teste est celui que tu as donné dans le post 4 de ce sujet, sans aucune modification, sauf les valeurs des opérandes bien sûr :cry:

J'aimerais bien trouver la faille :?
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1336
Enregistré en : juillet 2016
Localisation : Terre

#22 Message par Temps-x » ven. 14 juin 2019 21:36 lien vers la Data-Sheet : Cliquez ici

Bonsoir JJE,

JJE a écrit :Source du message Le programme que je teste est celui que tu as donné dans le post 4 de ce sujet


C'est bien le même que j'ai testé, est il fonctionne chez moi, regarde si tu as bien paramétré MPLAB 8.92 comme sur les images.

Select Device.jpg


On travaille avec un Pic16F628A à titre d'exemple

Config.jpg


JJE a écrit :Source du message J'aimerais bien trouver la faille :?


Si on fait une erreur, on peut la chercher des heures, voir des jours, sans se rendre compte quelle est devant nous, l'ordinateur à toujours raison, mais après faux comprendre le pourquoi..... :roll:

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#23 Message par JJE » ven. 14 juin 2019 23:37 lien vers la Data-Sheet : Cliquez ici

Bonsoir Tempx-x
C'est à n'y rien comprendre.
Je suis bien sous MPLAB 8.92 :
test1.JPG

et j'ai la même configuration que la tienne :
test2.JPG

au point rouge en bas à droite près mais qui n'a rien à voir avec le sujet. D'ailleurs, je ne crois pas que la config puisse influencer ce programme à ce point.
As-tu essayé sous MPLAB SIM ? Ce n'est rien à faire si tu travailles avec MPLAB; Dans le menu Debugger/Select Tool, cocher MPLAB SIM (4 chez moi). lancer un assemblage et avancer le programme pas à pas, je serais surpris que la description que je t'ai faite plus haut ne défile pas sous tes yeux.
Par ailleurs, à la main, j'ai le même résultat, c'est ce qui a attiré mon attention :evil:
Ce n'est pas que je tienne à avoir raison, mais il faudrait bien éclaircir ce problème.

Quelqu'un d'autre suit-il ce sujet qui pourrait nous éclairer ? Merci !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1336
Enregistré en : juillet 2016
Localisation : Terre

#24 Message par Temps-x » sam. 15 juin 2019 00:37 lien vers la Data-Sheet : Cliquez ici

Bonsoir JJE,

JJE a écrit :Source du message D'ailleurs, je ne crois pas que la config puisse influencer ce programme à ce point.


Si justement, tu travaille avec un PIC16F884, la mémoire est différent, mon fichier est fait à titre d'exemple pour un Pic16F628A.

:sifflotte: l'assembleur est comme fou, il ne sait plus ou il se trouve, mais toi à sa place :-D

Si tu as pris le même fichier que l'exemple en post 4 il est normal qu'il y et des erreurs.

JJE a écrit :Source du message As-tu essayé sous MPLAB SIM ?


Je travaille toujours avec le simulateur pour trouver les erreurs, sinon j'utilise toujours jens file Editor 3.95 qui est un simple éditeur
de texte.

JJE a écrit :Source du message Ce n'est pas que je tienne à avoir raison, mais il faudrait bien éclaircir ce problème.


Je ne cherche en aucun cas à avoir raison, je suis comme toi, un peu trop curieux, ce qui est un avantage, et un inconvénient. :lol:

Il faudrait un volontaire sur le forum qui refasse le test..., ...

ça prends moins de 10 minutes, et c'est enrichissant... qui se portera volontaire..... ? :sifflotte: Gérard j'en suis presque sur .... Il adore ASM... :eek:

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#25 Message par JJE » sam. 15 juin 2019 01:23 lien vers la Data-Sheet : Cliquez ici

Temps-x a écrit :Source du message Si justement, tu travaille avec un PIC16F884, la mémoire est différent, mon fichier est fait à titre d'exemple pour un Pic16F628A.

en fait, c'est une fausse manip de ma part, voici la fenêtre que j'ai quand c'est ton projet qui est ouvert dans MPLAB :
test3.JPG

exactement la tienne :sifflotte:
As-tu fait un pas à pas sous MPLAB SIM comme je te le demandais ?

Bonne nuit, elle commence mal pour moi :cry:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1336
Enregistré en : juillet 2016
Localisation : Terre

#26 Message par Temps-x » sam. 15 juin 2019 02:28 lien vers la Data-Sheet : Cliquez ici

Bonjour JJE,

JJE a écrit :Source du message As-tu fait un pas à pas sous MPLAB SIM comme je te le demandais ?


Bien sur, et depuis longtemps.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#27 Message par JJE » sam. 15 juin 2019 02:54 lien vers la Data-Sheet : Cliquez ici

je suis vraiment perplexe.
Je vais tenter de dormir, il parait que la nuit porte conseil :-)
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#28 Message par JJE » sam. 15 juin 2019 06:04 lien vers la Data-Sheet : Cliquez ici

Bonjour Temp-x, le sommeil, ça n'a pas marché, alors je t'ai fait une petite "vidéo", voici image par image, le déroulé du programme en 11 étapes à voir dans l'ordre de leur numéro en fichiers joints. Attention, dans la page affichée, ils ne sont pas dans l'ordre et leur nom a disparu :shock:
pap1 : prêt à partir, un point d'arrêt et l'ajout d'un nom pour bien matérialiser le retour de call impair.
pap2 : prêt à partir, go vers le point d'arrêt
pap3 : on y est, un pas et ...
pap4 : on entre dans le sous-programme multiplie. On voit bien que le bit 0 de multiplicateur + 0 est à 1 donc on ne fait pas le saut et ...
pap5 : on entre dans le sous-programme impaire qu'on va dérouler sans images avec un "run to cursor" et nous voici à ;
pap6 : qui nous emmène à paire. Avant d'y aller, on peut observer la valeur des variables qui sont telles que l'on pouvait espérer.
pap7 : j'ai fait un pas de trop, mais on voit dans la fenêtre watch bien que l'instruction movf multiplcateur +0, w a été effectuée
pap8 : le xorlw D'1' vient d'être effectué, sans surprisen on trouve 0 dans WREG et STATUS, Z à 1. J'ai opportunément ajouté STATUS dans le watch, on n'en avait pas besoin jusque là. Au pas suivant, on ne va pas sauter, encore un pas, et hop
pap9 : on se retrouve bien sur le nop que j'ai ajouté pour matérialiser le retour de impair. Un pas de plus et on déroule les instructions déjà déroulées en pap7.
pap10 : même causes, mêmes effets, on se retrouve sur le return, celui du call multiplie appelé en pap3.
pap11 : et on sort, sans avoir terminé la multiplication.

Remarque que si tu effectue un rrf multiplicateur avant pour effacer ce bit qui a été exploité, ce problème disparaît; mais comment sort-on de cette boucle :sifflotte: ?

Cet algorithme c'est, je crois, la méthode égyptienne; l'un des meilleurs pour la multiplication.

Je n'arrive pas à comprendre pourquoi ces 11 étapes ne se reproduisent pas chez toi :mur:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
JJE
Passioné
Passioné
Messages : 357
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#29 Message par JJE » sam. 15 juin 2019 06:30 lien vers la Data-Sheet : Cliquez ici

Suite,
une proposition qui prend en compte ma remarque de sortie de boucle en ajoutant un compteur de passages (loop1)
► Afficher le texte
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Multiplication 16 bits par 16 bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1336
Enregistré en : juillet 2016
Localisation : Terre

#30 Message par Temps-x » sam. 15 juin 2019 11:24 lien vers la Data-Sheet : Cliquez ici

Bonjour JJE, et tout le forum,

JJE a écrit :Source du message Cet algorithme c'est, je crois, la méthode égyptienne; l'un des meilleurs pour la multiplication.


:+1: ==> et ==> :bravo: ==> :bravo: JJE au moins tu cherches à comprendre, tu as toute mon admiration.

Aussi appelé méthode russe, mais ce qui l'on découvert c'est bien les égyptiens

https://www.youtube.com/watch?v=WtAAp0aSoqE

Pour additionner les valeurs, on aurait pu utiliser la méthode de F6FCO décrite ICI

Il faut toujours regarder ce que les anciens faisait, car ils avaient des idées qui ont été oublié, je trouve cette technique génial.

Il faut savoir quelle est apprit dans les écoles de programmation, j'ai lu ça sur les forums, mais les programmeurs ne veulent pas
diffuser leurs sources, parce que c'est leur gagne pain..... on peut aussi le comprendre .... :roll:

JJE a écrit :Source du message une proposition qui prend en compte ma remarque de sortie de boucle en ajoutant un compteur de passages (loop1)

Dans ta proposition en post #29 on n'est plus dans le système égyptien.

Je te tiens au courant pour la suite, car là j'ai pas le temps de voir tout ce que tu m'as mis, je vois ça un peu plus tard, dans la soirée.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité