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 :

[Linux] [NASM] Entrée de chaines [FAQ]


Sujet :

Assembleur

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut [Linux] [NASM] Entrée de chaines
    bonjour

    je me remets un peu au dev et j'ai un peu de mal à comprendre comment entrer correctement une chaine

    je voulais faire

    eax n° de service
    ...
    ...
    int 0x80

    seulement je doit pas utiliser la bonne methode parceque soit j'arrive à capturer un caractere unique
    soit j'arrive à capturer une chaine infinie (jamais de detection de fin de chainne (retour charriot donc)).... et je suis obligé de killer l'application donc.

    Je ne m'y retrouve pas bien malgré l'aide trouvé sur http://www.linuxassembly.org et les liens qui en proviennent...

    donc si vous avez quelques minutes à m'accorder pour m'aider svp faites le...

    en clair je veux faire :

    .....partie existante à priori sans bugs
    capturer une chaine (maxi 256bits)
    la stocker en mémoire
    .....partie deux existante à priori sans bugs
    reprendre la chaine (caractere à caractere)
    .....partie 3 existante à priori sans bugs traiter la chaine pour une modif
    retourner la chaine modifiee.
    .....partie 4 existante à priori sans bugs

    j'ai réussi à le faire avec une chaine definie à l'avance dans le programme mais pas avec une chaine variable entree par l'utilisateur final...

    alors
    comment entrer une chaine (utilisateur) et la stocker en memoire :
    comment la reprendre (boucle caractere à caractere ? chaine complete ??) :

    Merci par avance.

  2. #2
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    J'ai fini par trouvé

    en fait c'est
    1- declarer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    section .bss
    mes_buf 1
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    rawmode ; clavier
    ....
    mov edx,length
    mov ecx,mes_buf
    mov ebx,0
    mov eax,3
    int 0x80
    mov cl,[mes_buf]
    cmp cl,RET_CHAR
    je LANCE_TRAITEMENT
    ....

  3. #3
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    attention ! bien que tu n'est pa mis tout ton code, tu ne semble mettre une limite a l'entree que si il y a retour chariot, or s iil yen a pa et que l'utilisateur continue a taper du texte, il y a depassement de buffer et risque de plantage

    a+

  4. #4
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    En effet je teste pas la longeur parcequ'il n'existe pas de cas où taper autre chose qu'une reference (que du texte déja connuà l'avance) et "logeant" dans le buffer actuel...

    en plus c'est pas franchement critique ... comme application, en fait c'est meme pas utile puiqu'un script fait la même chose, donc j'ammeliorerai par la suite mais pour l'instant c'est plus pour me remettre à l'assembleur et pour m'amuser qu'autre chose...

    ceci dit tu as raison

  5. #5
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    tant que tu est dans du develloppement de "remise en forme" ca va, mais apres faut toujours prendre l'utilisateur pour un c**

    BonDev'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requête where entre deux chaines de caractères
    Par soltani1 dans le forum Développement
    Réponses: 2
    Dernier message: 04/10/2007, 09h34
  2. [pb MD5 MySql et C#]Différence entre les chaines
    Par ludovic85 dans le forum C#
    Réponses: 1
    Dernier message: 31/01/2007, 21h11
  3. espace entre deux chaines de caractères
    Par Pitou5464 dans le forum Access
    Réponses: 2
    Dernier message: 09/08/2006, 12h16
  4. Réponses: 7
    Dernier message: 03/02/2006, 13h50
  5. [c-linux]echange entre 2 sockets
    Par .:dev:. dans le forum Développement
    Réponses: 2
    Dernier message: 11/06/2004, 19h13

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