Codage de printf et scanf

cs_krater Messages postés 22 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 17 juin 2006 - 30 mai 2004 à 12:49
sirozz Messages postés 28 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 13 avril 2008 - 4 août 2004 à 14:19
bonjour a tous,
je suis en train de réaliser un compilateur et je suis un peu bloquer par la lecture d'une chaine.

en effet, mon compilo ne gere que les entiers, et je voudrais faire une fonction de ce style : lire(n); ou n et un entier(dans un premier temps, on n'aura qu'un seul parametre...
cependant, le probleme et de bien recevoirun entier dans n...
j'avais penser a quelque chose utilisant :
l'interruption dos 21h en utilisant la fonction 0Ah
seulement, il ne faupas accepter autre chose qu'un entier...

donc est ce possible, ou y a t'il une meilleur solution

sinon, pour le printf, je pense avoir une structure comme ca :

message db "la chaine reconue par le compilo",'$'
push AX
push DX
mov AH,09h
mov DX,offset message
int 21h
pop DX
pop AX

est ce une solution correct?

voila je pense que c'est tout...

merci bien

3 réponses

cs_Champignon Messages postés 2 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 31 juillet 2004
31 juil. 2004 à 04:01
mov ah,01h
int 16h
Le code ascii est dans al
Donc tu vérifies si c'est soit un signe soit un digit
J'espère que ça répond à ta question
0
cs_Champignon Messages postés 2 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 31 juillet 2004
31 juil. 2004 à 04:03
Euh je suis pas sûr à 100% que ce soit la fonction 01h
C'est peut être la 10h
L'une des deux se contente de scruter la queue du clavier alors que l'autre attend la pression d'une touche
0
sirozz Messages postés 28 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 13 avril 2008
4 août 2004 à 14:19
Slt, je pense que si tu veux tester la présence d'un entier, il faut vérifier chaque caratère de la chaîne 'n' (lire(n)) en faisant une soustraction ex: code ascii de "5" - 30h = 05h et tu as alors la valeur numérique du caractère. Tu vérifies aussi la présence des caratères "," et "." . Je sais pas si ya plus simple (je débute en asm). @+

In tartiflette we trust !
0
Rejoignez-nous