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

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#1 Message par Guest » ven. 26 févr. 2016 20:33

voila ma division pour séparer partie entière partie décimale

Code : Tout sélectionner

       
   CLR       W2
   CLR       W3
   CLR       W6
   CLR       W7         ;raz registre
     
   MOV       #0XE100,w0
   MOV       #0x05F5,W1      ; charge le diviseur (100 000 000)

   DO      #28,4f
   BCLR      SR,#C
   RlC       NBHEX
   RlC       NBHEX+2
   RlC       NBHEX+4      
   RlC       W2,W2         ;précharge le dividende
   RlC       W3,W3
4:       
   NOP     
     
   DO       #18,3f
   BCLR    SR,#C
   RlC       NBHEX
   RlC       NBHEX+2
          RlC       NBHEX+4   
          RlC       W2,W2
   RlC       W3,W3         ;charge le dividende

   SUB       W2,W0,W4
   SUBB    W3,W1,W5      ;on divise par le diviseur
     
   BCLR    SR,#C
   BRA       LE,fini            ;extraction de la partie entière
   
   EXCH      W3.W5
   EXCH      W2,W4      
   
   BSET    SR,#C
fini:       
   RLC       W6,W6            ;W7:W6 partie entier W3:W2 partie dec
   RLC       W7,W7
3:       
   NOP


c'est sur bout de code que j'aimerai que l'on travaille si tu veux bien j'ai déjà bien raccourci avec les rotations a gauche (précharge) la division se fait en 497 cycles pour 64 octets de mem.

A+

bon je renonce sur le tabulation 4 fois c'est trop :mrgreen:
Modifié en dernier par Anonymous le sam. 27 févr. 2016 09:34, modifié 4 fois.

alogorithme division 48bits/36bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » ven. 26 févr. 2016 20:36

Moi en tout cas je suis impressionné ! :bravo:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#3 Message par Guest » ven. 26 févr. 2016 20:39

comme moi par ta ténacité mon chapeau bas chef ;)

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#4 Message par Guest » sam. 27 févr. 2016 08:22

Bonjour

Pour faire gagner un peu de temps:
les pistes a explorer :

-Travailler sur la conversion hexa->ascii (32bits pour la pousser sur 48 bits)
-Utiliser alogo qui consiste a diviser dividende et diviseur par 2 pour le rendre, divisible par le jeux instruction DIV elle rejoint la première piste
-après....

j'ai exploré ces 2 pistes et je me heurte a la dernière rotation qui rend le dividende décimale d’où une erreur sur le résultat,autre piste faire une correction en cours de route?

Pour la conversion hexa-ascii 32bits, pour ceux que cela intéresse elle se fait en 75 cycles et occupe 90 octets.

A+

alogorithme division 48bits/36bits
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 51
Enregistré en : août 2015
Localisation : Dans l'est de la France

#5 Message par sylvain54 » sam. 27 févr. 2016 09:33

Salut à tous,

Impressionné également +1
Je suis bien loin de tout ça .....

Même si je suis largué, je vais quand même suivre ce post, c'est toujours bon pour ma culture générale ;)

++

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#6 Message par Guest » sam. 27 févr. 2016 09:42

sylvain54 a écrit :Salut à tous,

Impressionné également +1
Je suis bien loin de tout ça .....

Même si je suis largué, je vais quand même suivre ce post, c'est toujours bon pour ma culture générale ;)

++


Mais tu peux aussi participer bien au contraire,je vous invite tous a participer, si tu as une idée, même si tu crois quelle est stupide ou pas bonne , tu sais a force d'avoir la tête dans le guidon je ne vois plus que la roue :lol: Donc ....

A+

alogorithme division 48bits/36bits
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 51
Enregistré en : août 2015
Localisation : Dans l'est de la France

#7 Message par sylvain54 » sam. 27 févr. 2016 09:55

maï a écrit :Mais tu peux aussi participer bien au contraire,je vous invite tous a participer, si tu as une idée, même si tu crois quelle est stupide ou pas bonne , tu sais a force d'avoir la tête dans le guidon je ne vois plus que la roue :lol: Donc ....

A+


Ok, ça marche, je n'y manquerai pas ;)

++

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#8 Message par Guest » dim. 6 mars 2016 11:01

Bon j’avance un peu mais c'est pas terrible, toujours sur le même algo et en divisant diviseur et dividende par 256 (16 rotations) ne fait gagner quelques cycles mais encore ca . Je pense que cette algo a monté ses limites si je ne trouve pas mieux ,je posterais le code et par la même occasion un bout de code pour une division 32bits/16bits pour un 18F sou cas ou...
A+

alogorithme division 48bits/36bits
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#9 Message par Claudius » dim. 6 mars 2016 13:59

Salut maï,

Peux-tu me confirmer que tu souhaites que cette division 32/16 (ou 48/36 - d'ailleurs pourquoi 36 ?) donne le résultat avec un quotient + reste convertis directement en hexadécimal ?

Si oui, je ne suis pas sûr que cela soit la meilleure méthode d'un point de vue algorithmique ... Je serais partisan de rester en binaire "pur" et, après convertir en notation hexadécimale car cette dernière est de la présentation qu'il faut toujours séparer des traitements (déformation professionnelle ;-)) car parfois la notation décimale du quotient + reste est requise...

Si non, désolé du dérangement...

alogorithme division 48bits/36bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#10 Message par Guest » dim. 6 mars 2016 14:34

je veux faire une division 48bits/32bits

Pourquoi c'est le résultat d'une conversion flottant -> Hexa car j'ai une conversion 32bits hexa->ascii qui me va TRES TRES BIEN court et rapide ;)

Alors plutôt qu'un long discours ,par exemple 65D D65D 2710 H (48bits) (qui est le résultat de la conversion du flottant -70 000,98154256) 0n extraire la partie décimal et la partie entière, en divisant par 100 000 000 (32bits) afin de sortir 70 000 et reste 98154256.Apres, je passe la partie entière dans la conversion hexa->ascii mise en forme puis la partie décimale mise en forme

Donc si il y a un alogo plus rapide je suis preneur

PS 2 captures de mémoire RAM

1/ RAM 0X800-> le flottant sur 32bits
float.png

2/ RAM 0X814-> résultat en ASCII avec mise en forme
ascii.png


cette conversion se fait en 1198 cyles pour 304 octets de mémoire

Merci pour ta participation

A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Anonymous le dim. 6 mars 2016 15:22, modifié 2 fois.


Retourner vers « Langage ASM »

Qui est en ligne

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