IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Aide pour comprendre le code


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Aide pour comprendre le code
    voila j'ai du mal a comprendre ce que fait ce code et quel est l'erreur ?
    Si vous arrivez trouver faites moi signe , merci ...

    Je n'arrive pas à comprendre ces instructions surtout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	addl $'0', %eax
    	movb %al, %ds:(%ebx,%ecx,1)
    Mais voici le programme complet...
    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
    .data
    	str:	.zero 11
    	i: .long 46396
    	d: .long 1
    	j: .zero 4
     
    .text
    .globl _start
     
    _start:
    	movl i, %ebx
    L1:	movl i, %eax
    	movl $0, %edx
    	movl d, %ecx
    	movl d, %ecx
    	divl %ecx
    	push %edx
    	movl $10, %eax
    	mull %ecx
    	pop %edx
    	movl %eax, d
    	cmpl %edx, %ebx
    	jne 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)
    	incl %ecx
    	movl %ecx, j
    	movl i, %edx
    	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, %ebx
    	int $0x80

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 69
    Points : 89
    Points
    89
    Par défaut
    je connais pas trop cette forme d'écriture d'assembleur, mais d'après ce que je peux en comprendre

    addl $'0', %eax

    doit certainement ajouter au contenu eax la valeur du caractère '0'

    movb %al, %ds%ebx,%ecx,1)

    doit certainement écrire un byte contenu dans al à l'emplacement référencé par ds:[ebx+ecx+1] bien que pour le mode de référencement je ne suis pas sure, il faut regarder pour le compilateur en question ce que signifie les virgules.

    j'espère que j'ai pu t'aider de mon mieux

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    movb %al, %ds:(%ebx,%ecx,1)
    C'est la syntaxe AT&T
    soit en syntaxe Intel
    Sinon ce programme transforme un entier i en une chaîne de caractère ASCII.
    Et l'erreur est la partie (1) qui a été déplacée. (J'ai enlevé les erreurs de recopiage )

    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
    59
    60
    61
    62
    data
       str:   .zero 11
       i: .long 46396
       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
       jne L1
       movl $str, %ebx
       movl d, %eax
       movl $0, %edx
       movl $10, %ecx
       divl %ecx
       movl %eax, d
    ; --------- (1) ---------
    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)
       incl %ecx
       movl %ecx, j
     
       ; Ici : (1)
     
       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, %ebx
       int $0x80

Discussions similaires

  1. Aide pour comprendre un code
    Par Go'Gaule dans le forum Débuter
    Réponses: 5
    Dernier message: 23/07/2011, 17h08
  2. [AC-2007] besoin d'aide pour comprendre un code pour FTP trouvé sur le forum
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/04/2010, 20h03
  3. aide pour comprendre un code
    Par ranell dans le forum C++
    Réponses: 5
    Dernier message: 28/04/2009, 08h34
  4. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  5. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo