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

x86 32-bits / 64-bits Assembleur Discussion :

Programmation de la fonction C strncomp


Sujet :

x86 32-bits / 64-bits Assembleur

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Programmation de la fonction C strncomp
    Bonjour.
    Je suis en train de programmer en Assembleur la fonction strncmp de la bibliothèque string.h
    J'ai déjà programmé la fonction strcmp sans souci mais celle-ci me pose problème.
    Est-ce que quelqu'un remarque mon erreur ?

    Merci d'avance de votre réponse
    code C :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include<stdio.h>
    extern int str_ncmp(char *ch1, char *ch2, int n);
     
    int main(){
    int n=2;
    char ch[6]={'e','s','s','a','i'};
    char cha[6]={'e','s','s','a','i'};
    int z=str_ncmp(ch,cha,n);
    printf("%d",z);

    code asm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    %define ch1 dword [ebp+8] 
    %define ch2 dword [ebp+12]
    %define n dword	[ebp+16]
    ; dword car pointeurs
     
    section .text
    	global str_ncmp
     
    str_ncmp:
    ...
    ...
    ...
    	ret 	; par convention l'ordi retourne eax

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    Pourrais-tu décrire précisément le problème ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    Mon programme ne prend pas en compte le n passé en parametre et correspondant aux nombres de caractères à prendre en compte

  4. #4
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    Bonjour.

    Puisque cette procédure est censée comparer des caractères, ce n'est pas le registre ebx qu'il faut utiliser pour la comparaison, mais le registre bl.

    Petite erreur supplémentaire : le registre eax n'est pas initialisé au début de la procédure.
    En conséquence, si la procédure est appelée avec n=0, la valeur de retour est indéterminée ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour

    mille merci Prof pour cette aide qui m'est très précieuse
    désormais mon programme marche

    juste une derniere question, a quoi correspond bl et pourquoi ca marche lorqu'on utilise bl alors que ebx ne marche pas?

    Moustik's

Discussions similaires

  1. programmation réseau - la fonction select()
    Par u_brush_u dans le forum Réseau
    Réponses: 8
    Dernier message: 16/04/2007, 13h35
  2. Réponses: 10
    Dernier message: 21/02/2007, 09h58
  3. [Debutant] Programme avec les fonctions
    Par Tilk*sg1 dans le forum Débuter
    Réponses: 5
    Dernier message: 06/11/2006, 10h03
  4. Lancement d'un programme avec la fonction "at"
    Par Coori dans le forum Administration système
    Réponses: 2
    Dernier message: 16/05/2006, 14h02
  5. Programmation d'une fonction dans Rn
    Par simone.51 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/11/2004, 11h30

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