III. EXEMPLE DE PROGRAMME
1. Entrée bufferisée au clavier
L'exemple que nous proposons ici fait appel à une saisie au clavier.
Comme nous n'en n'avons pas encore rencontré, ce paragraphe
explique brièvement comment utiliser les fonctions 0ah et 0ch.
On peut se servir de la fonction 0ah pour lire une chaîne de
caractères au clavier. Le seul paramètre à
fournir est l'adresse d'un buffer. Comme il est souvent
indispensable d'effacer le buffer avant la lecture, il est préférable
de ne pas utiliser la fonction 0ah directement mais d'appeler la
fonction 0ch. En effet, celle-ci commence par effacer le buffer,
puis appelle la fonction 0ah (ou une fonction voisine dont le
numéro doit être transmis dans AL).
Voici le code à écrire :
La seule difficulté est dans la déclaration du buffer.
Voici comment vous devez vous y prendre si vous considérez que
l'utilisateur pourra entrer au plus n caractères :
Le premier octet de “maChaine” doit contenir le nombre
d'octets maximal qui pourra être entré, plus 1. Pourquoi
plus 1 ? Tout simplement parce que le DOS met à la fin
des caractères tapés le code ASCII 13 (retour chariot).
Pour comprendre la suite de la déclaration, il faut savoir de
quelle manière le DOS transmet les caractères qui ont
été lus. Après la lecture, le deuxième
octet du buffer contiendra le nombre exact d'octets lus (sans compter
le 13 final). La chaîne proprement dite ne commencera donc
qu'au troisième octet. Puisqu'un octet est utilisé pour
donner au DOS le nombre maximal de caractères autorisé,
un autre pour recevoir le nombre de caractères lus
effectivement, et encore un autre pour recevoir le code ASCII 13, le
buffer doit comporter trois octets de plus que la taille maximale de
la chaîne. C'est pourquoi on écrit :
maChaine db n+1, ?, n dup(?), ?
2. Le programme
Le programme suivant demande à l'utilisateur d'entrer le nom d'un
fichier se trouvant dans le dossier courant puis crypte ce fichier en
appliquant un NOT logique sur chaque octet. Naturellement, il n'est
pas optimisé du tout. Ce n'est qu'un exemple !
Suggestion :
quand vous aurez compris ce petit programme, essayez donc de
l'améliorer !
Par exemple, il faudrait que l'utilisateur puisse taper le nom du
fichier à crypter directement comme paramètre du
programme (i.e. “CRY MONFICH.EXE”). Voyez pour cela la
structure du PSP telle que présentée dans la première
partie. De plus, le programme devrait pouvoir trouver automatiquement
le nom du fichier d'arrivée : ce serait le même que
celui du fichier à crypter, mais avec une extension différente
(par exemple “.cry”).
Vous pourriez également étendre les possibilités du
logiciel en permettant à l'utilisateur de saisir non plus un simple nom de fichier,
mais un masque complexe avec des chemins d'accès et des caractères
“jokers” comme '*' et '?'. Vous aurez donc besoin des
fonctions de recherche 4eh et 4fh. L'utilisateur doit de surcroît
pouvoir choisir s'il veut crypter un fichier ou bien le décrypter...
Sommaire
Suite
|