39Fermer41
xCeLfrLe 24/04/2015 à 13:07
j'ai pas cherché les optimisations possibles mais ça marche.
C'est la stricte application de ton post, thx smile
lea tab,a0 ; tableau dans A0 lea dec_val,a1 ; resultat dans A1 move.l #9,d5 ; D5 = 10 positions move.l hex_val,d0 ; D0 = nbre … convertir position move.l #0,d1 ; D1 = nbre de soustractions move.l d5,d2 ; D2 = index dans tab*4(deplacement en long) mulu.w #4,d2 ; D2 = index dans tab*4(deplacement en long) move.l 0(a0,d2.w),d3 ; D3 = valeur dans tab soustractions cmp.l d0,d3 bgt plusgrand add.w #1,d1 ; incremente d1(nbre de soustractions) sub.l d3,d0 ; soustractions bpl soustractions ; boucle si positif plusgrand add.b #"0",d1 ; Ajout du code de "0" move.b d1,(a1)+ ; sauvegarde le resultat dbra d5,position ; boucle tant que d5 > 0 SECTION DATA hex_val dc.l $CC68F dec_val dc.b "4294967295",0 tab dc.l 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000

Amélioration possible: mettre des " " au lieu de "0" au début du résultat.

thx

EDIT :

@GT, je n'ai pas encore de livre mais je vais m'équiper de suite.
Cependant j'aime bien appliquer des théories, j'apprends mieux comme ça.
Par contre c'est sûr que le coup de l'ajout du code de '0' ou encore des décalage au lieu des divisions, ou encore utiliser les flags, ça s'invente pas.