|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 14 ![]() |
Bonjour à tous,
Ca fait maintenant 2 jours que j'essaie de résoudre le problème suivant. Avant de m'arracher tous les cheveux qu'il me reste, j'ai décidé de vous le soumettre. J'ai mis au point une fonction permettant de vérifier si tous les caractères d'une chaine fournie par l'utilisateur appartiennent à un ensemble déterminé de caractères de référence. Pour ce faire, elle compare les caractères de la chaine fournie, un à un, à tous les caractères de la chaine de référence et fournie un message indiquant si le caractère vérifié appartient à la chaine de référence ou non. Le problème que j'ai est que peut importe si le caractère vérifié est conforme ou non, la fonction retourne un message de non-conformité. Voici le code de la fonction... je vous remercie à l'avance pour vos conseils !! Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
bonjour, sans meme lire le code, s'il faut tester une valeur 8 bits, et retourner une info en fonction de l'octet d'entrée, il faut utiliser une look up table. c'est le seul moyen reelement performant.
ce qui permetrait de tester si le caractère de 8 bits est permi ou pas en très peu de code. Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 14 ![]() |
Merci pour votre suggestion edfed,
Cependant, étant nouveau en programmation, ma question se voulait à vocation pédagogique. J'ai cherché pendant 2 jours la raison pour laquelle ma procédure ne fonctionne pas. Si j'ai fait appel à l'aide des membres du forum, c'est bien pour me donner une piste de solution pour trouver mon erreur. Votre procédure me semblant sophistiquée, j'ai l'impression que vous êtes un programmeur assembleur aguéri. Peut-être pourriez-vous m'aider dans la recherche de mon erreur ! Merci à l'avance ! |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
je veu bien aider à trouver, mais il manque du code.
si je peux donner un conseil, il faut eviter d'ecrire le code tout en majuscule. les majuscules, c'est bon pour les constantes ou les valeurs particulières, type MB_OK en win32. et l'indentation n'aide pas à lire le code, l'assembleur, c'est pas du xml ou du java. à première vue, il manque l'etiquette SORTIE, et il faut donner une valeur au segment es pour l'instruction scasb. cette dernière lit l'octet présent à [es:di], rep ne fait que repeter cette instructions un nombre de fois declaré dans cx. rep doit etre utilisé dans la version repZ ou repE car on ne sort que lorsque le compteur cx est à zero, ou que la comparaison donne une non égalité. |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 14 ![]() |
Bonjour edfed,
Merci pour le commentaire concernant les majuscules, j'y ai remédié. J'ai lu à une certaine occasion du code assembleur écrit en majuscule et j'ai cru que c'était la norme. J'ai aussi corrigé l'indentation. J'ai joint à ce post le code complet de mon programme incluant les deux procédures qu'il contient. Je vous rappelle que c'est la deuxième procédure qui me pose problème. Merci beaucoup pour votre aide !!!! Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
je pense que la pile n'est pas equilibrée à cause des jmp sortie à l'interieur des procedures.
j'ai testé comme ça, et ça marche. Code fasm :
bon courage pour la suite. |
||
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 14 ![]() |
Tout fonctionne !
Citation:
Vous aviez tout à fait raison ! Je supposait qu'à la fin de ma première procédure la pile était revenue à son état original, ce qui n'était pas vrai... car j'appelais la macro d'affichage avant de quitter la première procédure pour entrer dans la seconde. Il a suffit que je fasse: avant de quitter la première procédure pour que tout rentre dans l'ordre Merci beaucoup pour votre aide !! |
|
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
ha ouais, j'avais meme pas remarqué ça. bien vu
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com