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
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#11 Message par Claudius » dim. 6 mars 2016 14:49

Ok, Merci maï pour la réponse,

Je regarde avec attention mais, sauf erreur de ma part, mixer "Calculs Fixes", "Calculs Flottants" et "Résultats en Hexa" me semblent correspondre qu'à un besoin précis qui ne pourra malheureusement pas s'appliquer dans certains cas.

Maintenant, j'admire ta perspicacité sur la recherche d'un algo très performant dans ce cas précis au risque ne pas être "généraliste" avec un coût accru (à déterminer ;-)) en termes de µCycles du µC.

Cordialement, A suivre...
--
Claudius

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

#12 Message par Guest » dim. 6 mars 2016 14:58

maintenant si tu veux on peut travail sur une divison passe partout sur le meme alog qui est comme a l’école pour faire une simple division ;)

voici le code

Code : Tout sélectionner

;********************************************************************
;   division 48bits/32bits
;W10 W9 W8-> dividende
;W1 W0-> diviseur
;W3 W2-> reste
;W7 W6-> Quotient
;********************************************************************   
   
Divi_48_par32:
        CLR       W2
       CLR       W3         ;reste
       CLR       W6         ;resultat
       CLR       W7
      
             
       DO       #47,9f
       BCLR    SR,#C
       RlC       W8,W8
       RlC       W9,W9
       RlC       W10,W10
       RlC       W2,W2
       RlC       W3,W3

       SUB       W2,W0,W4
       SUBB    W3,W1,W5      ;division quotient dans W4,W5
      
       BCLR    SR,#C      
       BRA       LE,Div      ; si trop grand? carry 0

       EXCH    W3,W5      ;si non transert reste
       EXCH    W2,W4      ;dans dividende
      
       BSET    SR,#C      ;carry a 1
Div:      
       RLC       W6,W6      ;W7:W6 partie entier
       RLC       W7,W7      ;W3:W2 partie dec
9:      
       NOP
      
       RETURN


elle fait la meme division mais en 696 cycles pour 44 octets et cette algo est vraiment passe partout je vais faire une exemple pour un 16f et 18F

A+

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

#13 Message par Guest » dim. 6 mars 2016 15:16

Claudius a écrit : avec un coût accru (à déterminer ;-)) en termes de µCycles du µC.
Accru pas tant que cela( 1198 cycles)304 octets pour une conversion FTOA 32bits .Je serai curieux de voir,en terme de cycles ,et occupation mem de la même conversion en C même avec une optimisation au max.car au plus je lis du C et plus, je vois du flottant partout. d’où ma curiosité a faire une tel conversion en ASM
mixer "Calculs Fixes", "Calculs Flottants" et "Résultats en Hexa"
en ASM il n'y a pas de notion fixe, flottant ,résultat en hexa.On n'est pas en langage évolué ou alors j'ai pas bien saisi :?:

Allez plaisir de te lire

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

#14 Message par Guest » ven. 11 mars 2016 07:36

bonjour

AMHA on va rester la avec plus de 1000 cycles pour faire cette conversion FTOA.

merci
A+

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

#15 Message par Guest » dim. 13 mars 2016 10:57

Bonjour

Bon j'ai encore gratté 224 cycles et je suis passé ENFIN sous la barre des 1000 cycles 974 cycles pour ma conversion FTOA 32bits, toujours avec -70000.9876543 a convertir , je suis resté sur le mémé algo .
je sais pugnace, ;)

voici le bout de code de la division

Code : Tout sélectionner

       CLR       W2
       CLR       W3
       CLR       W6
       CLR       W7
      
       MOV       #0XE100,w0
       MOV       #0x05F5,W1      ;charge disiseur
      
       MOV       NBHEX+4,W2
       DO       #12,4f
       BCLR    SR,#C
       RlC       NBHEX
       RlC       NBHEX+2      ;precharge pre dividende
       RlC       W2,W2
4:       RlC       W3,W3
      
       DO       #18,3f
       BCLR    SR,#C
       RlC       NBHEX
       RlC       NBHEX+2

       RlC       W2,W2
       RlC       W3,W3

       SUB       W2,W0,W4
       SUBB    W3,W1,W5      ;division quotient dans W4,W5
      
       BCLR    SR,#C      
       BRA       LE,fini      ; si trop grand? carry 0

       EXCH    W3,W5      ;si non transfert reste
       EXCH    W2,W4      ;dans pre dividende
      
       BSET    SR,#C      ;carry a 1
      
fini:       RLC       W6,W6      ;W7:W6 partie entier
3:       RLC       W7,W7      ;W3:W2 partie dec

j'ai travaille sur le préchargement du dividende,pas la peine de faire les cycles de division si le pre dividende(W2:W3) est < que le diviseur car le résultat est forcement zero et de ce fait de 48bits nous somme passé a 32 bit NBHEX+4 est a zéro pour la suite de la division

Allez bon dimanche


Retourner vers « Langage ASM »

Qui est en ligne

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