cs_noel70
Messages postés40Date d'inscriptionsamedi 22 mai 2004StatutMembreDernière intervention25 janvier 2007
-
6 févr. 2005 à 15:17
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
29 oct. 2005 à 15:57
Bonjour a tous.
Voila le programme sous Masm32, et sous Masm32, il existe une procedure pour convertir des valeurs numeriques en des valeurs ascii, et ceci pour que ces valeurs puisse être lu par l'utilisateur dans une EDITBOX par exemple.
Cette procedure est appelle dwtoa.
Mais voila je me demandais s'il existait une procedure qui fait l'inverse, c 'est a dire que convertit une valeur ascii en des valeurs numeriques.
Car ce que je voudrais recupere dans une EDITBOX, c'est ceci:
Exemple: Dans l' EDITBOX, l'utilisateur ecrit 123
Apres qu'on es utilise l'API GetDlgItemTextA, pour recuperer ce qu'il est ecrit dans cette EDITBOX, on recupere dans notre adresse memoire utilise avec l'API GetDlgItemTextA les valeurs suivantes 31 32 33, ce qui correspond a la valeur hexadecimal des caractere ascii 1 2 3,
Voila, moi ce que voudrais pouvoir recupere c 'est ce qui est ecrit la EDITBOX mais sous la meme forme, c'est a dire l'utilisateur ecrit 123, je voudrais recuperer la valeur 123 et non 31 32 33.
xpert1337
Messages postés3Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention13 août 2005 13 août 2005 à 03:14
Voila moi c'est le mem cas mais je ne comprend pa ta procedure moi je programme en MASM32 mais ta procedue je ne la comprend pa commen fonctionne -t- elle ou alors commente un peu plus ton code merci quand meme ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 13 août 2005 à 09:34
"en MASM32" n'a pas de sens, c'est asm ou non, ma procédure atoi est aussi assemblée sur MASM32.
On met l'adresse de la chaine dans ECX avant le call:
mov ecx, offset chaine
call atoi
comme normal le résultat est dans EAX en sortie.
Au début on met ECX = EAX et on met EAX à zéro pour le retour.
Tant qu'on n'atteint pas le terminateur NULL de fin de chaine et que ECX pointe sur un octet compris entre '0' et '9', EAX = EAX*10 + val(ECX) - val('0') et puis on pousse ECX.
Enfin rien que du normal, juste qu'il faut remlacer la multiplication trop couteuse en cycles par un LEA suivi d'un ADD.
bios4c44
Messages postés3Date d'inscriptionmardi 21 novembre 2000StatutMembreDernière intervention 7 mars 2007 29 oct. 2005 à 15:17
Merci pour le code il va bien me servir ;-)
Et à part ça je regrette mais "en MASM32" a du sens désolé (bien que pour être plus correct il eut fallu dire "sous MASM32") car des langages d'assemblages il en existe des tas (autant que d'architectures de processeurs...), tu me répondras que le x86 est l'asm dont on parle sur ce site mais le pb est que le code dépends aussi du compilateur utilisé donc un code TASM ou NASM peuvent être différents et non portables même si ils réalisent les mêmes opérations.
voili voilou je "m'offusquai" :-) un peu quand tu as répliqué c'est asm ou non si violemment au pauvre xpert1337...