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 : 337
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#31 Message par JJE » sam. 15 juin 2019 13:19 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-x,
Temps-x a écrit :Source du message on aurait pu utiliser la méthode de F6FCO décrite ICI

j'avais un peu oublié ces posts de F6FCO que je n'avais peut-être pas lu avec assez d'attention.
Si tu es curieux essaye son programme 16 bits avec
    variable1 = 0x4775
    variable 2 = 0xFF87
Tu vas trouver, je pense 0x4702, ce n'est pas loin d'être vrai, on a perdu le 1 qui devrait être à gauche de 4 mais qui n'a pas la place. Débordement ! Je crois l'avoir déjà dit ailleurs mais je trouve indispensable de prévenir l'appelant.
Plus sérieux, essaye le programme 32 bits avecl
    variable1 = 0x11114775
    variable 2 = 0x1111FF87
Tu vas trouver 0x22224702 alors que le bon résultat est 0x22234702.
C'est le FF qui perturbe, il peut y avoir un débordement quand on ajoute la retenue et il ne me semble pas que ce programme en tienne compte.
Mais, ayant très mal dormi, peut-être :!!:
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 : 337
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

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

Rebonjour,
Temps-x a écrit :Source du message Dans ta proposition en post #29 on n'est plus dans le système égyptien.

Si, je n'ai pas du tout touché à l'algorithme, je me suis contenté d'ajouter un test d'arrêt qui, d'ailleurs, la sieste porte conseil, ne marchera pas. Le compteur que j'ajoute, ne doit pas être initialisé à 16 mais au rang (+/-1) du chiffre non nul du multplicateur :-D
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 : 337
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#33 Message par JJE » dim. 16 juin 2019 10:51 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-x,
Temps-x a écrit :Source du message Dans ta proposition en post #29 on n'est plus dans le système égyptien.

Si, je n'ai pas touché à l'algorithme. Quand un humain l'applique, il sait quand il manipule le dernier chiffre significatif (celui de plus haut poids). Quand c'est un automate, il faut lui dire. d'ailleurs, je me suis trompé, ce n'est pas 16 qu'il faut donner comme valeur initiale à loop1 mais le rang du 1 de plus haut poids dans multiplicateur, donc le nombre de chiffres (binaires) significatifs. Les 0, après ne sont là que parce que les ordinateurs et microcontroleurs manipulent des groupes de bits (8, 16, ...). LesPic, 16 ou 18 : 8.
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 : 1252
Enregistré en : juillet 2016
Localisation : Terre

#34 Message par Temps-x » dim. 16 juin 2019 12:52 lien vers la Data-Sheet : Cliquez ici

Bonjour JJE, et tout le forum,

Pour reparler de ceci

Code : Tout sélectionner


paire                   
      movf multiplicateur
+0,W
      xorlw D
'1'
      btfsc STATUS,Z
      return      


On peut l'écrire différemment, si ça pose problème chez toi, pour test du 1

Code : Tout sélectionner


paire                   
      movf multiplicateur
+0,W
      sublw D
'1'            
      btfsc STATUS
,
      return


==> A+
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

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

#35 Message par JJE » dim. 16 juin 2019 15:27 lien vers la Data-Sheet : Cliquez ici

C'est amusant, quand j'ai rédigé le post #33, j'avais l'impression d'une redite, mais le #32 n'était pas là :shock: . Ce qui m'a fait radoter, avec quelques détails.
Temps-x a écrit :Source du message On peut l'écrire différemment, si ça pose problème chez toi, pour test du 1

Ce n'est pas la manière d'écrire un test qui compte, si les deux manières sont "synonymes", mais le test :-)
Pas de nouvelles de F6FCO que j'avais informé, par message privé, avoir parlé de lui, ou plutôt de l'un de ses sujets. Le pauvre, il doit être absorbé par ses travaux :sad:
Je crains que l'on ne trouve pas de solution à notre problème. Il n'attire pas les foules, il faut dire que c'est la saison des fruits rouges et que ceux qui ont la chance d'en récolter y passent beaucoup de temps pour les plaisirs de l'hiver, des petits enfants et des amis.
Cordialement

JJE

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

Multiplication 16 bits par 16 bits
satinas
Passioné
Passioné
Messages : 394
Enregistré en : novembre 2015

#36 Message par satinas » dim. 16 juin 2019 15:57 lien vers la Data-Sheet : Cliquez ici

Bonjour, ici la foule :)
j'ai fait l'essai avec le programme du post #4
En multipliant 0x8745 par 0x0201, on a effectivement une sortie de routine prématurée, et on se retrouve avec 0x8745 comme produit, voir post #17.
Je ne vois qu'une seule explication, vous faites vos tests avec des versions différentes du programme. Je pense qu'il vaut mieux se passer un zip contenant un projet Mplab complet, plutôt que des extraits de programme plus ou moins modifiés.

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

#37 Message par Temps-x » dim. 16 juin 2019 16:07 lien vers la Data-Sheet : Cliquez ici

Bonjour JJE, satinas, et tout le forum,

Merci ! satinas pour avoir fait le test, ça me rassure :roll:

Et voici pour tout résumer, une vidéo qui est à voir en plein écran, non truqué :lol:

https://youtu.be/4GTpo-M7qaM

Au cas ou la vidéo serais pas très nette, je vous invite à la télécharger ICI

Voici le zip comme demandé par satinas
Multiplication16.zip


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

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

#38 Message par JJE » dim. 16 juin 2019 19:46 lien vers la Data-Sheet : Cliquez ici

Bonsoir à tous les deux,
C'était vicieux oops
satinas a écrit :Source du message En multipliant 0x8745 par 0x0201
et c'est bien ce que j'avais dit en gros caractères :-D
JJE a écrit :Source du message As-tu essayé quelque chose comme H'xx01' comme multipliCATEUR ?
. Mais Temps-x lui, a multiplié 0x0201 par 0x8745 se retranchant peut-être derrière l'excuse que la multiplication est commutative (a*b = b*a), ce qui est bien sûr fondé, oui mais voilà, pas l'algorithme mis en oeuvre idea !
En programmation, tout est dans les détails.
Comment réalises-tu ces vidéo Temps-x, c'est ça qui m'a éclairé :bravo: , on peut mettre du son ?

Merci à Satinas de s'être penché sur notre problème, on a tellement vite fait une bêtise dans un fichier source même à l'insu de son plein grès que c'était une bonne idée qu'on n'aura pas la peine de mettre en oeuvre, mais finalement, c'était un tout autre problème, beaucoup plus discret :-) .

Fin d'un épisode haletant sur ce site oops je suis quand même content d'avoir une explication.

Au boulot Temps-x :-D
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 : 1252
Enregistré en : juillet 2016
Localisation : Terre

#39 Message par Temps-x » dim. 16 juin 2019 20:44 lien vers la Data-Sheet : Cliquez ici

Bonsoir JJE, satinas, et tout le forum,

JJE a écrit :Source du messageC 'était vicieux oops


:eek: En. bah ........... je vois ce que tu veux dire maintenant, donc on va rectifier cela par


Code : Tout sélectionner


paire                    
      movf multiplicateur
+0,
      xorlw D
'1'
      btfss STATUS,Z
      goto A_suivre

      movf multiplicateur
+1,
      xorlw D
'0'
      btfsc STATUS,Z
      return      

A_suivre 



C'est pas fini

Avant de demander la modification du code à Jérémy, je vais l'optimiser, et te le proposer à contrôler. :lol:

JJE a écrit :Source du message Comment réalises-tu ces vidéo Temps-x, c'est ça qui m'a éclairé :bravo: , on peut mettre du son ?


Pour la vidéo, je sais parfaitement les manipuler, dans tout les formats, pour capturer les vidéos d'écran sous XP SP3 que je suis.

J'utilise CamStudio qui est une open source, donc complétement gratuit.

Tu peux trouver la dernière version sur le site officiel ICI, moi j'utilise la version 2

Oui, on peux enregistrer le son avec un micro, si tu sais manipuler VirtualDub, tu peux même rajouter de la musique de fond.

JJE a écrit :Source du messageFin d'un épisode haletant sur ce site


Et bien content d'avoir eut quelle comme toi en face, :bravo: et Merci ! ...... Tu vas pouvoir dormir ce soir :lol:

Je vais l'optimiser, mais pour l'instant, et par manque de temps :cry: je joins la modification du code dans un fichier zip ci-dessous
Multiplication16.zip




A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

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

#40 Message par JJE » lun. 17 juin 2019 07:16 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-x,
Temps-x a écrit :Source du message

Code : Tout sélectionner

      movf multiplicateur+1,
      xorlw D
'0'
      btfsc STATUS,Z
      return

li xorlw D'0' est inutile

Temps-x a écrit :Source du message Et bien content d'avoir eut quelle comme toi en face

Je dirais "à côté" :-D

Merci pour les infos, j'avais oublié CamStudio, je crois même qu'il est installé sur ma machine, un vieil XP SP3 aussi.
Cordialement

JJE

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


Retourner vers « Langage ASM »

Qui est en ligne

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