02: SORTIE D'UN CARACTERE
Entrée: AH = 02h DL = Code ASCII du caractère à afficher Sortie: Aucune
Cette fonction permet de sortir (afficher) un caractère sur la sortie standard. Ce caractère doit être stocké sous la forme de son code ASCII dans DL.
Seul le registre AL est modifié par l'appel de cette fonction.
09: SORTIE D'UNE CHAINE DE CARACTERES
Entrée: AH = 09h DS = Adresse de segment de la chaîne de caractères DX = Adresse d'offset de la chaîne de caractères Sortie: Aucune
Cette fonction permet de sortir (afficher) une chaîne de caractères sur la sortie standard. Cette chaîne doit être stockée sous la forme d'une séquence d'octets correspondant aux codes ASCII des caractères composant la chaîne. La fin de la chaîne de caractères doit êtes signalée à l'aide du caractères '$'.
Note : si vous insérez a la suite dans la chaîne les deux caractères ASCII n° 10 et 13; vous obtiendrez un retour à la ligne.
Seul le registre AL est modifié par l'appel de cette fonction.
0A: ENTREE D'UNE CHAINE DE CARACTERES
Entrée: AH = 0Ah DS = Adresse de segment du buffer DX = Adresse d'offset du buffer Sortie: Aucune
Cette fonction permet de lire une chaîne de caractère sur l'entrée standard (par défaut le clavier), le premier caractère du buffer doit contenir le longeur maxi de la chaîne de caractère. Au retour DOS place à l'offset 1 du buffer la longueur de la chaîne entrée. 1A: FIXER l'ADRESSE DE LA DTA
Entrée: AH = 1Ah DS = Adresse de segment de la nouvelle DTA DX = Adresse d'offset de la nouvelle DTA Sortie: Aucune
Cette fonction permet de donner un autre emplacement pour la DTA (Disk Transfert Area) que DOS utilise pour stocker les données rendu par certaines interruptions . Notez que par default la DTA est située à l'offset 128 du . PSP ,c'est à dire au meme endroit que la ligne de commande. Par ailleurs la DTA par défaut a une longueur de 128 byte ce qui peut s'averer insuffisant. 25: FIXER UN VECTEUR D'INTERRUPTION
Entrée: AH =25h AL=numero d'interruption DS= nouvelle adresse de segment du vecteur a modifier
DX= nouvelle adresse d'offset du vecteur a modifier Sortie: Aucune
Cette fonction permet d'installer une nouvelle routine d'interruption sur un vecteur precis.
Note: cette fonction ne modifie aucun registre.
2A: LIRE LA DATE SYSTEME
Entrée: AH =2Ah Sortie: AL = jour de la semaine (0:dimanche, 1:lundi....)
CX = année DH = mois (1:janvier, 2:fevrier, 3:mars oui, c'est idiot mais c'est comme ça). DL = jour
Cette fonction permet d'obtenir la date système.
Note: AH,BX,SI,DI,BP,CS,DS,SS,ES et flags ne sont pas modifés.
2C: LIRE L'HEURE DU SYSTEME
Entrée: AH =2Ch Sortie: CH = contient les heures en binaire (HH 0-23)
CL = contient les minutes en binaire (MM 0-59) DH = contient les secondes (SS 0-59) DL = contient les centièmes de seconde (CC 0-99)
Cette fonction permet d'obtenir l'heure du système
Note: Seuls CX et DX sont modifiés.
2F: DETERMINER L'ADRESSE DE LA DTA
Entrée: AH =2Fh Sortie: ES=adresse de segment de la DTA BX= adresse d'offset de la DTA
Cette fonction permet de connaitre l'adresse de la DTA (Disk Transfer Area) en cours.
Les registre AX,CX,DX,SI,DI,BP,CS,DS,SS,flags ne sont pas modifiés par cette fonction 31: TSR
Entrée: AH = 31h AL = code de fin DX = nombre de paragraphes a reserver Sortie: Aucune
Cette fonction termine le programme en cours a la facon de la fonction 4Ch; mais elle ne libere pas toute la memoire allouee au programme: elle conserve le nombre de paragraphes (blocs de 16 octets) indiques par DX; ces pararaphes sont comptes a partir du PSP. 35: LIRE UN VECTEUR D'INTERRUPTION
Entrée: AH =35h AL=numero d'interruption Sortie: ES= adresse de segment du vecteur .
BX =adresse d'offset du vecteur.
Cette fonction permet de connaitre l'adresse d'une routine d'interruption.
Note: cette fonction ne modifie aucun registre.
36: LIRE L'ESPACE DISPONIBLE D'UN DISQUE
Entrée: AH =36h DL= drive number ( 00 = default , 01 = A , etc ) Sortie: AX = secteurs par cluster .
BX = clusters disponibles. CX = bytes par secteurs .
DX = total de clusters.
Si AX = 0FFFFh le drive est invalide
Cette fonction permet connaitre l'espace disponible d'un disque limité à 2G 3C: OUVRIR UN FICHIER (en écriture)
Entrée: AH = 3Ch
CX = Attributs du fichier bit 0 = 1 : read-only
bit 1 = 1 : hidden bit 2 = 1 : systeme DS : segment du nomde fichier DX : offset du nom de fichier
Sortie:
Flag Carry = 0 : Tout va bien AX = handle du fichier
Flag Carry = 1 : erreur , AX = code d'erreur
3: Chemin non trouvé
4: plus de handle libre
5 : Accès refusé
12 : mode d'acès non autorisé.
Le nom de fichier est fourni sous forme d'une chaîne de caractères terminée par un caractères 0.
Si un fichier du même nom existe déja, il est effacé. 3D: OUVRIR UN FICHIER (en lecture)
Entrée: AH = 3Dh
AL = Mode d'accès
Bit 0-3 : autrisation lecture écriture
0000 : le fichier peut être lu
0001 : le fichier peut seulement être écrit
0010 : le fichier peur seulement être lu ou écrit
Bits 4-6 : partage de fichier
000 : seul le programme actuel peut accéder au fichier
001 : idem
010 : un autre programme peut seulement le lire
011 : un autre programme peut seulement y ecrire
100 : un autre peut lire et ecrire le fichier
Bit 7 : flag handle
0 : un programe enfant du programme peut acceder au handle de ce fichier
1: seul le programme actuel peut acceder au handle de ce fichier
DS = Adresse de segment du nom de fichier
DX = adresse d'offset du nom de fichier Sortie:
Flag Carry = 0 : Tout va bien AX = handle du fichier
Flag Carry = 1 : erreur , AX = code d'erreur
1 : pas de logiciel de partage de fichier
2 : Fichier nom trouvé
3: Chemin non trouvé
4: plus de handle libre
5 : Accès refusé
12 : mode d'acès non autorisé.
Le nom de fichier est fourni sous forme d'une chaîne de caractères terminée par un caractères 0. 3E: FERMER UN FICHIER
Entrée: AH = 3Eh
BX = handle du fichier a fermer Sortie:
Flag Carry = 0 : Tout va bien
Flag Carry = 1 : erreur , AX = code d'erreur
6 : Handle non autorisé ou fichier correspondant non autorise.
Il faut veiller à ner pas appeler par mégarde cette fonction avec un handle prédéfini (0,1,2,3,4)
Note : BX,CX,CX,DI,BP,CS,DS,SS,ES ne sont pas modifés.
3F: LIRE UN FICHIER
Entrée: AH = 3Fh
BX = Handle du fichier.
CX = Nombre d'octets à lire
DS = Adresse de segment du buffer
DX = Offset du buffer Sortie:
Flag Carry = 0 : Tout va bien , AX = nombre d'octets lus
Flag Carry = 1 : erreur , AX = code d'erreur
5 : Accès refusé
6 : Handle non autorisé ou fichier non ouvert
Cette fonction lit les données dans le fichier et les place dans un buffer en mémoire.
Note : BX,CX,CX,DI,BP,CS,DS,SS,ES ne sont pas modifés.
40: ECRIRE DANS UN FICHIER
Entrée: AH = 40h
BX = Handle du fichier.
CX = Nombre d'octets à écrire
DS = Adresse de segment du buffer
DX = Offset du buffer Sortie:
Flag Carry = 0 : Tout va bien , AX = nombre d'octets lus
Flag Carry = 1 : erreur , AX = code d'erreur
5 : Accès refusé
6 : Handle non autorisé ou fichier non ouvert
Cette fonction recopie les données du buffer dans le fichier dont le handle est BX.
Remarque, si CX vaut 0, rien n'est écrit mais le fichier est tronque a la position courante.
Note : BX,CX,CX,DI,BP,CS,DS,SS,ES ne sont pas modifés.
42: DEPLACER UN POINTEUR DE FICHIER (seek)
Entrée: AH = 42h
AL = code de la distance
0 : la distance se rappporte au début du fichier
1 : la distance se rapporte à la position actuelle pointeur de fichier
2 : La distance se rapporte à la fin du fichier
BX = Handle du fichier.
CX = Mot fort de la distance
DX = Mot faible de la distance Sortie: Flag Carry = 0 : Tout va bien , dans ce cas
DX = mot fort du pointeur de fichier (par rapport au début du fichier)
AX = Mot faible du pointeur de fichier (par rapport au début du fichier)
Flag Carry = 1 : erreur , AX = code d'erreur
1 : Code de distance refusé
6 : Handle non autorisé ou fichier non ouvert
Cette fonction déplace le pointeur de fichier courant.
Note : BX,CX,CX,DI,BP,CS,DS,SS,ES ne sont pas modifés.
4E: Rechercher la première entrée du repertoire (find first)
Entrée: AH = 4Eh
CX = Attribut du fichier DS = Adresse de segment du nom de fichier DX = Adresse d'offset du nom de fichier Sortie:
Flag Carry = 0 : Tout va bien Flag Carry= 1 ; Erreur, AX = Code d'erreur 2 : chemin non trouvé 18 : aucun fichier avec l'attribut spécifié
Cette fonction permet de trouver la première occurence d'un nom de fichier sur le disque. Nom de fichier peut contenir un nom d'unite, un nom de répertoire, un masque etc.. et doit être termine par le caractère 0. L'attribut 0 permet de chercher le fichier normaux, si different bit sont signifie dans l'attribut les fichiers correspondant seront aussi cherches en plus de fichier normaux. Signification des attributs de fichier bit 0 : Lecture seule
bit 1 : Fichier caché
bit 2 : Fichier système
bit 3 : Nom de volume
bit 4 : Sous répertoire
bit 5 : Archive
Si un fichier est trouvé, les 43 premiers octets de la DTA sont modifiés:
| Octets |
0-21 |
Réservés |
| Octet |
21 |
Attribut dui fichier |
| Octets |
22-23 |
Heure de la derniere modification du fichier |
| Octets |
24-25 |
Date de la modification du fichier |
| Octets |
26-27 |
Mot faible de la taille du fichier |
| Octets |
28-29 |
Mot fort de la taille du fichier |
| Octets |
30-42 |
Nom de fichier etextension sous forme d'une chaîne ascii termine par le caractere 0. |
Cette fonction ne doit être employer que pour rechercher la permiere occurence des fichier cherches, pour les autres occurences, utiliser la fonction 4Fh
BX,CX,DX,SI,DI,BP,CS,DS,SS,ES ne sont pas modifiés.
4F: Rechercher les entrées suivante d'un répertoire (find next.)
Entrée: AH = 4Fh Sortie:
Flag Carry = 0 : Tout va bien Flag Carry= 1 ; Erreur, AX = Code d'erreur 18 : aucun fichier avec l'attribut spécifié
Cette fonction doit être appelées pour trouver les entrées suivant la premières.
le résultat est stocké dans la DTA. exemple d'algorithme: if (findfirst ok)
repeat
recuperer les donnes dans la DTA
until (findnext pas ok)
BX,CX,DX,SI,DI,BP,CS,DS,SS,ES ne sont pas modifiés.
49: LIBERATION DE MEMOIRE
Entrée: AH =4 9h
ES = segment du block a liberer Sortie: CF= 0 : OK
CF=1 : adresse donnée dans ES invalide
Cette fonction permet de libérer un bloc mémoire précédement alloué par DOS. Ce bloc se trouve toujours a une adresse multiple de 16, c'est pourquoi il suffit de ne spécifier que le segment. Cette fonction peut être utile pour libérer la mémoire allouée à un TSR, lorsque l'on désire le désactiver.
Seul le registre AX est modifié par l'appel de cette fonction.
4C: TERMINAISON DE PROGRAMME
Entrée: AH =4Ch AL=Code de fin Sortie: Aucune
Cette fonction permet de terminer un programme en spécifiant un code de fin que le programme d'appel poura éventuellement tester. 51: ADRESSE DU PSP
Entrée: AH =51h Sortie: Flag Carry = 0 alors BX = segment du PSP Flag Carry = 1 alors AX = code d'erreur
Cette fonction permet d'obtenir le segment du PSP du programme appelant; particulièrement utile pour les TSR.
Les registres CX,DX,SI,DI,BO,CS,DS,SS,ES ne sont pas modifiés.
|