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 ---
- 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 ---
Modérateur : mazertoc
alogorithme division 48bits/36bits
voila ma division pour séparer partie entière partie décimale
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:
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
alogorithme division 48bits/36bits
alogorithme division 48bits/36bits
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+
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
alogorithme division 48bits/36bits
sylvain54 a écrit :Salut à tous,
Impressionné également
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 Donc ....
A+
alogorithme division 48bits/36bits
alogorithme division 48bits/36bits
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+
A+
alogorithme division 48bits/36bits
- Claudius
Passioné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
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...
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...
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
alogorithme division 48bits/36bits
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
2/ RAM 0X814-> résultat en ASCII avec mise en forme
cette conversion se fait en 1198 cyles pour 304 octets de mémoire
Merci pour ta participation
A+
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
2/ RAM 0X814-> résultat en ASCII avec mise en forme
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