bjr,
comment parcourir chaine, en assembleur, contenant "." et le décaler à gauche jusqu'à la fin et ajouter ensuite un zéro à gauche du pt???
exp:
123.45 ==> 0.12345
789.5645 ==> 0.7895645

le simulateur que j'utilise est pep8.

le prog que j'ai fait jusqu'à présent est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
;ce prog calcule le nombre des chiffres d'un nombre ainsi que le nombre
;des séparateurs (nbr des séparateurs calculé sert pour tester si le nombre est erroné ou pas
;si on a 0 ==> le prog affiche nbr car = 0 et nbr sep = 0
;si on a 0.23 ==> le prog affiche nbr car = 4 et nbr sep = 1
;si on a 10..23 ==> le prog affiche nbr car = 6 et nbr sep = 2 ==> nombre erroné
 
                 lda 0, i
                 sta nbCar, d
                 ldx 0, i
                 stx nbSep, d
 
boucle1:         chari sCar, d            ;compter le nombre des caracteres
                 ldbytea    sCar, d
                 cpa     0x0A, i          ;fin de la ligne
                 breq    fboucle1         ;si fin ligne ==> aller au traitement après la boucle
 
                 ldx nbCar, d             ;initialiser x par nbCar pour l'augmenter et le stocker de nouveau à nbCar
                 addx 1, i
                 stx nbCar, d
 
 
                 cpa ".", i
                 brne orSep             ;si != "." ==> re-boucle sinon continue
 
                 ldx nbSep, d             ;initialiser x par nbSep pour l'augmenter et le stocker de nouveau à nbSep
                 addx 1, i                ;sinon ajouter 1
                 stx nbSep, d             ;nbSep := x de nouveau
 
 
cpVirg:          cpa ",", i
                 brne boucle1             ;si != "," ==> re-boucle sinon continue
 
                 ldx nbSep, d             ;initialiser x par nbSep pour l'augmenter et le stocker de nouveau à nbSep
                 addx 1, i                ;sinon ajouter 1
                 stx nbSep, d             ;nbSep := x de nouveau
 
                 br boucle1
 
fboucle1:        lda nbSep, d
                 cpa 0, i
                 brgt errNbr
                 ;deco nbCar, d            ;juste pour test                 
                 ;charo 0x0A, i            ;juste pour test
                 ;deco nbSep, d            ;juste pour test
                 stop
 
orSep:           br cpVirg 
 
;variables
sCar:            .block 1                 ;#1c ;le caractère lu
nbCar:           .block 2                 ;#2d ;nombre des caractères 
nbSep:           .block 2                 ;#2d ;nombre des séparateurs 
errNbr:          stro errNbrm, d
                 stop
 
;variables msg
errNbrm:         .ASCII "nombre erroné\x00"
.end
qui fait, jusqu'à présent le parcours de la chaîne (supposée un nombre):
1/ calculer nombre des chiffres
2/ calcul nombre des séparateurs (pour tester s'il s'agit bien d'un nombre ou pas)
3/ l'affichage du résultat est dans l'étiquette fboucle1 (vous pouvez le dé-commenter)

merci d'avance.