Int 21h, Fct 0Ah Entrée d'une chaîne de caractères DOS (> 1.0)
Cette fonction permet de lire un nombre déterminé de caractères sur le périphérique d'entrée standard et de les transférer dans un buffer. L'entrée se termine lorsque la touche Entrée est actionnée. Le code de cette touche (13) est alors également placé dans le buffer, comme dernier caractère de la chaîne.
Comme l'entrée standard peut être redirigée sur un autre périphérique ou vers un fichier, les caractères entrés ne proviennent pas nécessairement du clavier. Si les caractères transmis proviennent d'un fichier, le programme d'appel n'a aucune possibilité de détecter si tous les caractères de ce fichier ont déjà été lus, autrement dit si la fin de fichier a déjà été atteinte.
Entrée :
AH = 0Ah
DS = Adresse de segment du buffer
DX = Adresse d'offset du buffer
Sortie :
aucune
Remarques :
· Le premier octet du buffer définit le nombre maximal de caractères (y compris le Carriage Return final) qui pourront être lus et placés dans le buffer à partir de la cellule de mémoire numéro deux. Ce paramètre doit être inscrit dans le buffer avant d'appeler la fonction, pour que celle-ci sache combien de caractères elle doit lire au maximum.
· Le DOS inscrit dans la cellule de mémoire 1, une fois le travail terminé, le nombre de caractères lus à l'exception du Carriage Return.
· Le buffer doit donc être d'une longueur égale au nombre de caractères à entrer plus 2 octets.
· Dès que l'avant-dernière cellule de mémoire du buffer est atteinte, l'entrée d'autres caractères entraîne l'émission d'un bip et seule la touche Entrée est encore acceptée pour conclure l'entrée.
· Les codes clavier étendus occupent deux octets dans le buffer. Le premier octet contient le code 0 et le second contient le code de la touche étendue.
· Lorsque le caractère Ctrl-C est détecté au cours de l'entrée, l'interruption 23h est appelée.
· L'entrée peut être éditée à l'aide de la touche Backspace et des touches curseur, sans que ces touches soient sauvegardées dans le buffer.
· Cette fonction ne modifie le contenu d'aucun registre du processeur, y compris le registre de flags.
Partager