PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009
-
28 mai 2008 à 09:32
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009
-
31 mai 2008 à 09:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009 31 mai 2008 à 09:02
Merci Monsieur Patatalo .
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 29 mai 2008 à 15:30
ben oui moi pareil,
je l'aurais convertis aisement en objet nasm mais la convertion 16->32 c trop de boulot je prefere refaire a ce moment l?.
on s'est mal compris:
au lieu de
cmp al,truc
je bidule
cmp al,truc
je bidule
tu scan un tableau qui te donne si je ou jne.
le mieux: si tu as de la place, tu fait un tableau de 128 octets de booleens.
apres:
test [arechar+al],1
tu a ton je jne direct avec 1 seul test.
si tu n'as pas de place, tu convertit ce tableau de booleen en bitmap. donc 128bits soit 4DWORD.
apres:
xor eax,eax
mov al,C
mov cl,C
shr al,5 ;?a nous donne l'index DWORD
and cl,(32-1) ; on test 32bits par DWORD.
bt pd[bitmap+eax*4],cl
le flag carry te donne encore une fois le resultat direct.
le tout en 32bits et l?, je dis d'accord, source utile et interessante.
@++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 mai 2008 à 10:21
Ce n'est pas le programme qui est en cause, c'est qu'il soit en 16 bits.
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009 28 mai 2008 à 23:57
Il n'y a aucun programme qui soit inutile, Monsieur BRUNEWS, ça je puis vous l'assurer.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 28 mai 2008 à 19:39
Un prog comme celui ci en DOS (16 bits) n'a plus aucune raison d'être, en mode console 32 bits (au moins) j'aurais pu le tester alors que là nenni.
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009 28 mai 2008 à 18:05
Salutations, encore une fois, PATATALO ;
En fait, je me rends compte que je vous ai mal compris : vous avez suggéré un tableau de caractères non valides au lieu de caractères valides !et non pas un les 2 à la fois comme je l'ai interprété ! Mais dans ce cas, il y aura un problème : je dois mettre les caractères valides afin de les afficher "plus aisément" ; à quoi bon serait-il de mettre à côté dans un tableau les carctères non valides ?
En tout cas, une version plus améliorée de ce programme sera postée ici même : je n'utiliserai pas un tableau de plus : je vais afficher les palindromes directement du buffer.
Merci.
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009 28 mai 2008 à 17:55
Bonjour PATATALO ;
Merci pour vos remarques.
1:
En fait, si je réserve un tableau pour les caractères valides et un autre pour les caractères non valides alors je consommerai plus d'espace mémoire.
Ici, j'ai utilisé un seul tableau en plus du buffer, auquel j'ai transféré les carctères valides ; donc j'ai consommé plus d'espace mémoire (il faut juste imaginer le cas où le texte saisi est important !) en transférant au niveau du tableau que les carctères valides, je gagne plus d'espace mémoire qu'en réservant un autre pour les non valides lesquels, de toutes façons, je n'ai pas besoin de les afficher.
2:
Pour votre seconde question, le mode réel est bien plus adéquat que le mode protégé pour un programme DOS comme celui-ci.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 28 mai 2008 à 16:06
salut,
tu peux egalement te faire un tableau des caracteres valides ou un de caracteres non valides.
pourquoi continuer a travailler en mode réel ??
@++
PCBill
Messages postés48Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention29 septembre 2009 28 mai 2008 à 09:32
Au lieu de vérifier les caractères spéciaux un par un, on peut tester les carctères valides de l'alphabet comme suit :
31 mai 2008 à 09:02
29 mai 2008 à 15:30
je l'aurais convertis aisement en objet nasm mais la convertion 16->32 c trop de boulot je prefere refaire a ce moment l?.
on s'est mal compris:
au lieu de
cmp al,truc
je bidule
cmp al,truc
je bidule
tu scan un tableau qui te donne si je ou jne.
le mieux: si tu as de la place, tu fait un tableau de 128 octets de booleens.
apres:
test [arechar+al],1
tu a ton je jne direct avec 1 seul test.
si tu n'as pas de place, tu convertit ce tableau de booleen en bitmap. donc 128bits soit 4DWORD.
apres:
xor eax,eax
mov al,C
mov cl,C
shr al,5 ;?a nous donne l'index DWORD
and cl,(32-1) ; on test 32bits par DWORD.
bt pd[bitmap+eax*4],cl
le flag carry te donne encore une fois le resultat direct.
le tout en 32bits et l?, je dis d'accord, source utile et interessante.
@++
29 mai 2008 à 10:21
28 mai 2008 à 23:57
28 mai 2008 à 19:39
28 mai 2008 à 18:05
En fait, je me rends compte que je vous ai mal compris : vous avez suggéré un tableau de caractères non valides au lieu de caractères valides !et non pas un les 2 à la fois comme je l'ai interprété ! Mais dans ce cas, il y aura un problème : je dois mettre les caractères valides afin de les afficher "plus aisément" ; à quoi bon serait-il de mettre à côté dans un tableau les carctères non valides ?
En tout cas, une version plus améliorée de ce programme sera postée ici même : je n'utiliserai pas un tableau de plus : je vais afficher les palindromes directement du buffer.
Merci.
28 mai 2008 à 17:55
Merci pour vos remarques.
1:
En fait, si je réserve un tableau pour les caractères valides et un autre pour les caractères non valides alors je consommerai plus d'espace mémoire.
Ici, j'ai utilisé un seul tableau en plus du buffer, auquel j'ai transféré les carctères valides ; donc j'ai consommé plus d'espace mémoire (il faut juste imaginer le cas où le texte saisi est important !) en transférant au niveau du tableau que les carctères valides, je gagne plus d'espace mémoire qu'en réservant un autre pour les non valides lesquels, de toutes façons, je n'ai pas besoin de les afficher.
2:
Pour votre seconde question, le mode réel est bien plus adéquat que le mode protégé pour un programme DOS comme celui-ci.
28 mai 2008 à 16:06
tu peux egalement te faire un tableau des caracteres valides ou un de caracteres non valides.
pourquoi continuer a travailler en mode réel ??
@++
28 mai 2008 à 09:32
CMP AL,'a'
JGE verifier_si_inf_a_Z
MP AL,'a'
JB non_alphabet
verifier_si_inf_a_Z:
CMP AL,'Z'
JG non_alphabet