1

Bonjour,

Voilà un petit programme pour un exo qui me semble un peu tordu.

Les questions sont tout d'abord que fait ce programme (pour moi il tourne en rond) et corriger l'erreur algorithmque.

Code:
.data
str: .zero 11
i: .long 463960
d: .long 1
j: .zero 4
.text .globl _start
_start: movl i,%ebx
L1: movl i,%eax
movl $0,%edx
movl d,%ecx
divl %ecx
push %edx
movl $10,%eax
mull %ecx
pop %edx
movl %eax,d
cmpl %edx,%ebx
jbe L1
movl $str,%ebx
movl d,%eax
movl $0,%edx
movl $10,%ecx
divl %ecx
movl %eax,d
L2: movl d,%eax
movl $0,%edx
movl $10,%ecx
divl %ecx
movl %eax,d
movl i,%eax
movl $0,%edx
movl d,%ecx
divl %ecx
movl %edx,i
movl j,%ecx
movl $0,%edx
addl $'0',%eax
movb %al,%dssad%ebx,%ecx,1)
inc %ecx
movl %ecx,j
movl i,%eax
movl $0,%edx
cmpl %eax,%edx
jne L2
movl j,%eax
addl $str,%eax
movl $0,%edx
movb $0,%dssad%edx,%eax,1)
movl $1,%eax
movl $0,%eax
int $0x80


D'avance merci pour vos réponses.

A vos compilateurs ! smile

2

-

3

c'est de l'AT&T.... je sais c dur mais on nous apprend comme ça oui

4

Je me contente juste de mettre le code du ./1 dans dans une balise [pre][/pre] pour éviter les smilies intempestifs hehe ...
Je jetterai un oeil à ce code ce soir ou demain.
C'est urgent, cet exo ?

[troll]Et effectivement, c'est de la syntaxe AT&T sur code Intel (cf. registres) ...
Moi je dis, on devrait réserver cette syntaxe horrible (je me contenterai de mentionner l'instruction cmp ...) aux processeurs Motorola (68k et ses copains).
Quant aux différentes syntaxes de type Intel, seule la syntaxe NAsm est logique (le mélange des variables par valeur et par pointeur de TAsm et MAsm me révulse sick).[/troll]
.data
str:   .zero   11
i:   .long   463960
d:   .long   1
j:   .zero   4
.text   .globl _start
_start:   movl   i,%ebx
L1:      movl i,%eax
      movl $0,%edx
      movl d,%ecx
      divl %ecx
      push %edx
      movl $10,%eax
      mull %ecx
      pop %edx
      movl %eax,d
      cmpl %edx,%ebx
      jbe L1
      movl $str,%ebx
      movl d,%eax
      movl $0,%edx
      movl $10,%ecx
      divl %ecx
      movl %eax,d
L2:      movl d,%eax
      movl $0,%edx
      movl $10,%ecx
      divl %ecx
      movl %eax,d
      movl i,%eax
      movl $0,%edx
      movl d,%ecx
      divl %ecx
      movl %edx,i
      movl j,%ecx
      movl $0,%edx
      addl $'0',%eax
      movb %al,%ds:(%ebx,%ecx,1)
      inc %ecx
      movl %ecx,j
      movl i,%eax
      movl $0,%edx
      cmpl %eax,%edx
      jne L2
      movl j,%eax
      addl $str,%eax
      movl $0,%edx
      movb $0,%ds:(%edx,%eax,1)
      movl $1,%eax
      movl $0,%eax
      int $0x80
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

5

bon le programme ne sert a rien de particulier.

Bon par contre oublie les mov edx,0 et prefere des xor edx,edx, adhere un peu ton code et utilise pice ! en root avec ton programme. Le tout te sera plus clair.
Il y a pas mal d'instructions qui ne servent a rien ds cette algo si ce n'est a faire joli. smile
Bon amuse toi bien.

6

> Etaniel
euh, ton [pre][/pre] a juste permis de conserver les indentations, c'est [nosmile] pour empêcher les smileys.
avatar
† In te confirmátus sum ex útero : de ventre matris meæ tu es protéctor meus.
illwieckz.net ~ Unvanquished ~ gg.illwieckz.net { le frag courtois } ~ NetRadiant ~ Crunch