Chapitre – 6
Introduction aux bases de l'informatique
Introduction
Parfois, dans certains cas, lorsque vous essayez de récupérer des données ou d'effectuer des tâches de dépannage de données et de disque (ou toute autre tâche liée au système), il est très pratique d'utiliser la commande DEBUG DOC.
Il est également possible que dans certains cas particuliers, il soit plus facile d'effectuer cette opération particulière en utilisant DEBUG plutôt que par programmation. Voyons un exemple. Le code de débogage suivant sera suffisant pour créer une sauvegarde DBR. Il suffit de saisir les lignes suivantes :
DÉBOGAGE DE BKDBR.BIN
L100 2 0 1
R SH
200
DANS
DANS
Ici, vous pouvez voir qu'en tapant simplement quelques lignes ci-dessus, vous pouvez éviter d'écrire un programme. Regardons un autre exemple d’encodage qui charge une sauvegarde DBR sur le disque
Souviens-toi toujours de ça ! N'essayez pas cela sans connaissances approfondies. Soyez sûr de ce que vous ferez. Une utilisation incorrecte des instructions suivantes pourrait entraîner une perte de données importante, car une utilisation incorrecte des instructions pourrait rendre toutes les informations du disque inaccessibles.
DÉBOGAGE DE BKDBR.BIN
En 100 2 0 1
DANS
Après avoir vu le code dans cet exemple, vous pouvez facilement voir à quel point il peut vous aider lorsque vous en avez le plus besoin. De plus, il est impossible de prévoir toutes les situations. Cependant, pour des problèmes simples, pour utiliser les instructions de construction, copiez simplement debug.exe/debug.com sur votre disque de démarrage et commencez à écrire du code.
Les fonctionnalités et exemples décrits dans ce chapitre et ce livre sont compatibles uniquement avec l’architecture de la famille de processeurs Intel x86.
Tout d’abord, nous devons connaître un peu les bases de l’architecture informatique, afin de pouvoir comprendre les termes utilisés dans les sections suivantes pour décrire le fonctionnement et les exemples à différentes étapes. Apprenons quelques notions de base sur l’architecture informatique :
Concepts de base
processeur
Cette partie est également connue sous le nom d'unité centrale de traitement ou CPU, qui est à son tour composée d'une unité de contrôle et d'une unité arithmétique et logique. Ses fonctions incluent la lecture et l'écriture du contenu des cellules mémoire, le transfert de données entre les cellules mémoire et les registres spéciaux, ainsi que le décodage et l'exécution des instructions du programme. Le processeur possède de nombreuses cellules mémoire qui sont utilisées très fréquemment et font donc partie du CPU.
Ces cellules sont appelées registres. Un processeur peut avoir une ou deux douzaines de ces registres. L'unité arithmétique et logique du processeur implémente des opérations liées aux calculs numériques et symboliques.
En règle générale, ces appareils ne sont capables d'effectuer que des opérations très basiques, telles que l'addition et la soustraction de deux entiers, la multiplication et la division d'entiers, la manipulation de bits de registre et la comparaison du contenu de deux registres. Les ordinateurs personnels peuvent être classés en fonction de leur taille de mot, qui correspond au nombre de bits que le processeur peut traiter simultanément.
Mémoire centrale
Il s'agit d'un groupe de cellules constituées de semi-conducteurs, utilisées pour des processus courants tels que l'exécution de programmes et le stockage d'informations pour les opérations. Chacune de ces cellules peut contenir une valeur numérique et avoir la propriété d'être directionnelle. C'est pourquoi on peut les différencier les unes des autres grâce à un numéro ou une adresse unique pour chaque cellule. Le nom générique de ces périphériques de stockage est mémoire à accès aléatoire ou RAM.
Le principal inconvénient de ce type de mémoire est que les circuits intégrés perdent les informations stockées lorsque l’alimentation est interrompue. Cela a conduit à la création d’une mémoire dont les informations ne sont pas perdues lorsque le système est éteint. Cette mémoire est appelée mémoire morte ou ROM.
Pour qu'un ordinateur puisse traiter des informations, celles-ci doivent être stockées dans des cellules spéciales appelées registres. Les registres sont des groupes de 8 ou 16 bascules.
Une bascule est un dispositif capable de stocker deux niveaux de tension, l'un faible, généralement de 0,5 volt, et l'autre, généralement de 5 volts. Le niveau de puissance faible dans la bascule est interprété comme désactivé ou 0, et le niveau de puissance élevé comme activé ou
- Ces états sont généralement appelés bits, qui sont la plus petite unité d’information dans un ordinateur.
Un groupe de 16 bits est appelé un mot ; Un mot peut être divisé en groupes de 8 bits appelés octets, tandis que les groupes de 4 bits sont appelés nibbles.
Registres du processeur
Le CPU dispose de 4 registres internes, chacun de 16 bits. Les quatre premiers, AX, BX, CX et DX sont des registres à usage général et peuvent également être utilisés comme registres 8 bits. S'ils sont utilisés de cette manière, ils doivent être appelés par exemple : AH et AL, qui sont les octets haut et bas du registre AX. Cette nomenclature s'applique également aux registres BX, CX et DX.
Les registres connus par leurs noms spécifiques :
Registre |
Nom spécifique |
HACHE |
Accumulateur |
BxB |
Registre de base |
CCE |
Registre de comptage |
DX |
Journal de données |
SS |
Journal des segments de données |
ET |
Journal de segment supplémentaire |
SS |
Journal des segments de batterie |
Service client |
Registre des segments de code |
BP |
Registre de pointeurs de base |
ET |
Registre d'index des sources |
DEPUIS |
Registre d'index de destination |
SP |
Journal du pointeur de batterie |
Propriété intellectuelle |
Registre de pointeur d'instruction suivant |
F |
Registre des drapeaux |
Cependant, dans les prochains chapitres, nous utiliserons ces registres en détail dans la programmation d'interruption en utilisant C, mais apprendre les bases du langage assembleur ici sera une bonne idée et nous aidera à programmer des opérations de disque, etc.
Vous pouvez afficher les valeurs des registres internes du CPU à l'aide du programme Debug. Pour commencer à travailler avec Debug, saisissez l'invite suivante sur votre ordinateur :
C:/>Debug <Entrée>
Sur la ligne suivante, un tiret apparaît, c'est l'indicateur de débogage, à ce stade, les instructions de débogage peuvent être saisies à l'aide de la commande suivante :
- r <Entrée>
Tout le contenu des registres internes du CPU est affiché. Une alternative à leur affichage est d'utiliser la commande "r" en utilisant comme paramètre le nom du registre dont on veut voir la valeur. Par exemple:
-rbx <Entrée>
Cette instruction affichera uniquement le contenu du registre BX et l'indicateur de débogage passera de « - » à « : »
Lorsque l'invite est comme celle-ci, vous pouvez modifier la valeur de registre affichée en tapant la nouvelle valeur et <Entrée>, ou vous pouvez laisser l'ancienne valeur en appuyant sur Entrée sans saisir d'autre valeur.
Nous pouvons modifier la valeur du registre d'indicateurs et l'utiliser comme structure de contrôle dans nos programmes, comme nous le verrons plus tard. Chaque bit du registre a un nom et une signification particuliers. La liste suivante décrit la valeur de chaque bit, qu'il soit activé ou désactivé, et sa relation avec les opérations du processeur :
Déborder
NV = il n'y a pas de débordement
OV = il y a un débordement
Direction
UP = en avant
DN = à l'envers
Interruptions
OF = désactivé
EI = activé
Signe
PL = positif
NG = négatif
Zéro
NZ = n'est pas nul
ZR = est nul
Transport auxiliaire
NA = il n'y a pas de transport auxiliaire
AC = il y a un transport auxiliaire
Égalité
PO = parité non uniforme
PE = parité paire
Pour transporter
NC = il n'y a pas de report
CY = il y a un report
Structure de l'assembleur
En langage assembleur, les lignes de code comportent deux parties, la première est le nom de l'instruction à exécuter et la seconde sont les paramètres de la commande. Par exemple:
AJOUTER ah, eh bien
Ici « ADD » est la commande à exécuter ; dans ce cas un ajout, tandis que "ah" et "bh" sont les paramètres.
Le nom des instructions de langue est composé de deux, trois ou quatre lettres. Ces instructions sont également appelées noms mnémoniques ou opcodes, car elles représentent une fonction que le processeur exécutera. Certaines commandes ne nécessitent aucun paramètre pour fonctionner, tandis que d'autres n'en nécessitent qu'un seul.
Parfois, les instructions sont utilisées comme suit :
AJOUTER à,[170]
Les parenthèses dans le deuxième paramètre nous indiquent que nous travaillerons avec le contenu de la cellule mémoire numéro 170 et non avec la valeur 170 ; C'est ce qu'on appelle la direction directe.
Nous sommes maintenant prêts à écrire le code de notre premier programme à l’aide du débogage. Nous allons créer un programme qui fonctionne pour illustrer ce que nous avons vu, et ce que nous allons faire, c'est ajouter deux valeurs que nous allons brancher directement dans le programme.
La première étape consiste à démarrer le débogage ; Cette étape consiste simplement à taper debug <Entrée> à l'invite du système d'exploitation.
Pour assembler un programme sur Debug, vous utilisez la commande « a » (assemble). Lorsque vous utilisez cette commande, l'adresse à laquelle vous souhaitez que l'assemblage démarre peut être donnée en tant que paramètre. Si le paramètre est omis, l'assemblage démarrera à l'emplacement spécifié par CS:IP, généralement 0100h, qui est l'emplacement où les programmes avec l'extension .COM doivent être démarrés. Et ce sera l'endroit que nous utiliserons puisque seul Debug peut créer ce type spécifique de programmes.
Bien qu'il ne soit pas nécessaire d'assigner un paramètre à la commande « a » à ce stade, il est conseillé de le faire pour éviter des problèmes une fois les journaux CS:IP utilisés, alors tapons :
-a0100 <Entrée>
Une fois cela fait, quelque chose comme ceci apparaîtra sur l'écran : 0C1B:0100 et le curseur est positionné à droite de ces chiffres, notez que les quatre premiers chiffres, dans le système hexadécimal, peuvent être différents, mais les quatre derniers doivent être 0100, car c'est l'adresse que nous avons indiquée comme début. Nous pouvons maintenant présenter les instructions :
0C1B:0100 déplacer l'axe,0002; met la valeur 0002 dans le registre ax
0C1B:0103 déplacer bx,0004; met la valeur 0004 sur le registre bx
0C1B:0106 ajouter ax,bx; le contenu de bx est ajouté au contenu de ax
0C1B:0108 int 20; provoque l'arrêt du programme.
0C1B:010A
Il n'est pas nécessaire d'écrire des commentaires après le « ; ». Une fois que vous avez tapé la dernière commande, int 20, appuyez sur <Entrée> sans rien taper d'autre pour afficher à nouveau l'invite du débogueur.
La dernière ligne écrite n'est pas vraiment une instruction assembleur, mais plutôt une demande d'interruption du système d'exploitation. Ces pauses nous font gagner beaucoup de lignes et sont très utiles pour accéder aux fonctions du système d'exploitation.
Pour exécuter le programme que nous avons écrit, la commande « g » est utilisée et lorsqu'elle est utilisée, nous verrons un message indiquant :
« Le programme s'est terminé normalement. » Bien sûr, avec un message comme celui-ci, nous ne pouvons pas être sûrs que le programme a effectué l'ajout, mais il existe un moyen simple de le vérifier, en utilisant la commande "r" de Debug, nous pouvons voir le contenu de tous les registres du processeur, il suffit de taper :
-r <Entrée>
Chaque registre avec sa valeur réelle respective apparaîtra sur l'écran comme ceci :
AX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1B ES=0C1B SS=0C1B CS=0C1B IP=010A NV UP EI PL NZ NA PO NC
0C1B:010A DE LA BD
Il est possible que les registres contiennent des valeurs différentes, mais AX et BX doivent être identiques, car ce sont ceux que nous venons de modifier.
Une autre façon d'afficher les valeurs, pendant que le programme est en cours d'exécution, est d'utiliser l'adresse où nous voulons qu'il termine l'exécution et d'afficher les valeurs des registres comme paramètre pour "g", dans ce cas ce serait : g108, cette instruction exécute le programme, s'arrête à l'adresse 108 et affiche le contenu des registres.
Une vérification de ce qui se passe dans les journaux peut être effectuée via la commande « t » (trace) ; La fonction de cette commande est d'exécuter ce qui a été assemblé ligne par ligne, en affichant à chaque fois le contenu des registres.
Pour quitter Debug, utilisez la commande « q » (quit).
Avantages de l'assembleur
La première raison pour laquelle vous devriez travailler avec l'assembleur est qu'il offre la possibilité d'en savoir plus sur le fonctionnement de votre PC, ce qui vous permet de développer des logiciels de manière plus cohérente.
La deuxième raison est le contrôle total de l'ordinateur, que vous pouvez avoir grâce à l'utilisation de l'assembleur. Une autre raison est que les programmes en assembleur sont plus rapides et dans certains cas plus petits et ont de plus grandes capacités que ceux créés dans d’autres langages.
Laisse-moi tenir ma promesse !!
Dans la première partie de ce chapitre, nous avons utilisé quelques instructions à titre d'exemple, pour sauvegarder DBR et pour télécharger la sauvegarde DBR à son emplacement d'origine lorsque cela est nécessaire. Commençons par examiner les instructions de sauvegarde.
C:\>DEBUG A:\BKDBR.BIN <Entrée>
Fichier introuvable
- L 100 2 0 1 < Entrée>
- R CX < Entrée>
CX 0000
: 200 < Entrée>
- W < Entrée>
Écriture de 00200 octets
- Q < Entrée>
Dans cet exemple, nous commençons l’étude à partir de la première ligne. La commande DEBUG A:\BKDBR.BIN Initialise la commande de débogage en créant un fichier dans le lecteur de disquette A: nommé BKDBR.BIN s'il n'y est pas déjà présent. C'est pourquoi nous avons reçu le message « Fichier non trouvé » au début.
Dans notre deuxième instruction L 100 2 0 1, la commande L (load) est utilisée pour charger le DBR de l'unité instruite. Apprenons comment ? Dans cette instruction, le numéro 100 est l'adresse du tampon où le DBR sera stocké, le numéro suivant 2 est utilisé pour le lecteur C(C :). Les numéros d'unité sont donnés comme suit :
Lettre de lecteur |
Numéro utilisé |
UN: |
0 |
B: |
1 |
C: |
2 |
Q: |
3 |
. |
. |
. |
. |
et ainsi de suite |
. |
Le numéro suivant 0 est le numéro de secteur de départ du nombre de secteurs à lire. Ici, nous utilisons 0 pour lire le 1er secteur, c'est-à-dire le secteur DBR. Le numéro suivant, qui est 1, est utilisé pour informer le nombre de secteurs à lire.
Ici nous avons donné 1 car nous voulons lire un seul secteur. Cependant, nous pouvons utiliser les numéros et les positions des secteurs de début et de fin en fonction de nos besoins dans différents types d'autres opérations. Il chargera donc un secteur à partir du 1er secteur du lecteur C: jusqu'à l'emplacement mémoire 100.
Et l'instruction R CX est utilisée pour modifier ou définir la longueur des données que nous voulons écrire dans le fichier BKDBR.BIN. Cette instruction affichera la valeur actuelle du registre CX et vous permettra d'effectuer des modifications. Nous avons tapé 200 ici car la commande DEBUG utilise le système hexadécimal et la taille du DBR en hexadécimal est de 200(h) octets, soit 512 octets dans le système décimal.
La commande W indique à DEBUG d'écrire les 200(h) octets de la position 100 dans le fichier BKDBR.BIN. Et enfin, nous utilisons l’instruction Q pour quitter DEBUG et revenir à l’invite DOS.
Attention!!! Attention!!! Attention!!!
Il est fortement recommandé de savoir quoi et comment vous faites dans la procédure de récupération DBR de n'importe quel disque. Si vous archivez accidentellement un DBR illégal ou tout autre disque, dans la plupart des cas, les données complètes du disque peuvent devenir inaccessibles.
lorsque vous tapez la première instruction de l'encodage qui est :
DEBUG A:\BKDBR.BIN <Entrée>
Le fichier doit être situé à l'emplacement indiqué où vous démarrez le programme DEBUG. Maintenant, si vous obtenez le message d’erreur « Fichier non trouvé » avant l’invite DEBUG, arrêtez immédiatement le processus à l’aide de la commande Q (quit). Car cela signifie que le fichier BKDBR.BIN n'a pas été trouvé ou ouvert par le programme DEBUG et si vous continuez ce processus, certaines informations indésirables seront écrites dans DBR et rendront la partition entière inaccessible. |
Voyons maintenant ce que nous avons fait en codant les instructions pour restaurer DBR à partir du fichier de sauvegarde que nous avons créé nommé BKDBR.BIN. Les commandes DEBUG pour restaurer la sauvegarde sont les suivantes :
C:\> DEBUG A:\BKDBR.BIN <Entrée>
- W 100 2 0 1 < Entrée>
- Q < Envoyer >
|
Cette instruction écrira 1 secteur d'informations du fichier BKDBR.BIN sur le lecteur de disquette (a:) à l'emplacement mémoire 100 dans le premier secteur, c'est-à-dire le secteur 0 du deuxième lecteur, c'est-à-dire le lecteur (C:).
Stockage et chargement de programmes
Il semblerait peu pratique de devoir taper un programme entier à chaque fois que vous en avez besoin, et pour éviter cela, il est possible de stocker un programme sur disque, avec l'énorme avantage que, comme il est déjà assemblé, il ne sera pas nécessaire d'exécuter à nouveau Debug pour l'exécuter.
Les étapes pour sauvegarder un programme déjà stocké en mémoire sont :
- Obtenez la longueur du programme en soustrayant l'adresse de fin de l'adresse de début, en système hexadécimal bien sûr.
- Donnez un nom et une extension au programme.
- Entrez la durée du programme dans le registre CX.
- Indique à Debug d'écrire le programme sur le disque.
En utilisant le programme suivant comme exemple, nous aurons une idée plus claire de la manière de réaliser ces étapes. Lorsque le programme est finalement assemblé, il ressemblera à ceci :
0C1B:0100 mouvement de la hache,0002
0C1B:0103 mouvement bx,0004
0C1B:0106 ajouter ax, bx
0C1B:0108 tu as 20 ans
0C1B:010A
-10h à 22h
020a 000a
-n test.com
-rcx
Code CX0000
:000a
-Dans
Écriture de 000A octets
Pour obtenir la longueur d'un programme, nous utilisons la commande « h », qui nous montrera l'addition et la soustraction de deux nombres en hexadécimal. Pour obtenir la longueur de notre programme, nous donnons comme paramètres la valeur de l'adresse finale de notre programme (10A) et l'adresse de début du programme (100). Le premier résultat que la commande nous montre est l'addition des paramètres et le second est la soustraction.
La commande "n" nous permet de donner un nom au programme. La commande « rcx » nous permet de modifier le contenu du registre CX à la valeur que nous avons obtenue à partir de la taille du fichier avec « h », dans ce cas 000a, comme résultat de la soustraction de l'adresse finale de l'adresse de départ.
Enfin, la commande « w » écrit notre programme sur le disque, indiquant combien d’octets il a écrit. De plus, pour enregistrer un fichier déjà téléchargé, deux étapes sont nécessaires :
- Spécifie le nom du fichier à télécharger.
- Chargez-le en utilisant la commande « l » (load).
Pour obtenir le résultat correct des étapes suivantes, le programme ci-dessus doit déjà être créé.
Dans Debug, nous écrivons ce qui suit :
-n test.com
-le
-en 100 109
0C3D:0100 B80200 MOVAX,0002
0C3D:0103 BB0400 MOUVEMENT BX,0004
0C3D:0106 01D8 AJOUTER AX,BX
0C3D:0108 CD20 INT 20
La dernière commande « u » permet de vérifier que le programme a été chargé en mémoire. Ce qu'il fait, c'est désassembler le code et l'afficher désassemblé. Les paramètres indiquent où DÉBOGUER et où désassembler. DEBUG charge toujours les programmes en mémoire à l'adresse 100H, sauf indication contraire.
Segments
L'architecture des processeurs x86 nécessite l'utilisation de segments mémoire pour gérer les informations, la taille de ces segments est de 64 ko.
La raison de ces segments est que, considérant que la taille maximale d'un nombre que le processeur peut gérer est un mot ou un registre de 16 bits, il ne serait pas possible d'accéder à plus de 65536 emplacements de mémoire en utilisant un seul de ces registres, mais maintenant, si la mémoire est divisée en groupes ou segments, chacun de 65536 emplacements, et que nous utilisons une adresse sur un registre exclusif pour trouver chaque segment, puis faisons de chaque adresse un emplacement spécifique avec deux registres, il nous est possible d'accéder à une quantité de 4294967296 octets de mémoire.
Pour que l'assembleur puisse gérer les données, chaque élément d'information ou instruction doit être situé dans la zone correspondant à ses segments respectifs. L'assembleur accède à ces informations en tenant compte de l'emplacement du segment, donné par les registres DS, ES, SS et CS et dans le registre l'adresse des informations spécifiées. C'est pourquoi lorsque nous créons un programme en utilisant Debug, sur chaque ligne que nous assemblons, cela ressemble à ceci :
1CB0:0102 MOUVEMENT AXE, BX
Alors que le premier numéro, 1CB0, correspond au segment de mémoire utilisé, le second fait référence à l'adresse dans ce segment et suit les instructions qui seront stockées à partir de cette adresse.
L'assembleur ajuste la taille des segments en fonction du nombre d'octets dont chaque instruction assemblée a besoin, car ce serait un gaspillage de mémoire d'utiliser tous les segments. Par exemple, si un programme n'a besoin que de 10 Ko pour stocker des données, le segment de données ne fera que 10 Ko, et non les 64 Ko qu'il peut gérer.
Déplacement de données
Pour votre connaissance et votre commodité, je liste ici quelques instructions en langage assembleur pour les opérations de données ; Lorsque nous programmerons à l'aide d'interruptions et d'autres opérations du BIOS, nous aurons besoin de ses bases.
L’introduction détaillée et l’étude approfondie du langage assembleur dépassent les limites de ce livre. Bien que la connaissance des bases de l'assemblage soit nécessaire pour passer aux chapitres de programmation les plus importants, si vous avez du mal à comprendre toutes les instructions, ne vous inquiétez pas, mais il est conseillé d'acquérir l'idée de base des instructions.
Dans tout programme, vous devez déplacer des données dans la mémoire et les registres du processeur, et il existe plusieurs façons de le faire. Vous pouvez copier des données en mémoire vers un registre, d'un registre vers un registre, d'un registre vers une pile, d'une pile vers un registre, transmettre des données à des périphériques externes et vice versa.
Ce mouvement de données est soumis à des règles et à des restrictions. En voici quelques-uns :
- Il n’est pas possible de déplacer directement des données d’un emplacement mémoire à un autre. Vous devez d’abord déplacer les données de l’emplacement source vers un registre, puis du registre vers l’emplacement de destination.
- Vous ne pouvez pas déplacer une constante directement dans un registre de segment ; vous devez d'abord le déplacer vers un registre du CPU.
- Des blocs de données peuvent être déplacés à l'aide d'instructions MOVS, qui copient une chaîne d'octets ou de mots. MOCSB copie n octets d'un emplacement à un autre et MOVSW copie n mots d'un emplacement à un autre. Les deux dernières instructions prennent des valeurs à partir des adresses définies par DS:SI comme groupe de données à déplacer et ES:DI comme nouvel emplacement de données.
Pour déplacer des données, il existe également des structures appelées batteries, où les données sont introduites avec l'instruction push et extraites avec l'instruction pop. Dans une pile, la première donnée à introduire est la dernière que nous pouvons prendre, c'est-à-dire si dans notre programme nous utilisons ces instructions :
POUSSER LA HACHE
Pousser BX
Pousser CX
Pour renvoyer les valeurs correctes à chaque registre lors de leur récupération depuis la pile, vous devez procéder dans l'ordre suivant :
Le POP CX
POP-BX-Italien
HACHE POP
Pour la communication avec des périphériques externes, la commande out est utilisée pour envoyer des informations à un port et la commande in pour lire les informations reçues d'un port.
La syntaxe de la commande OUT est :
EXTERIEUR DROIT,AXE
Où DX contient la valeur du port qui sera utilisée pour la communication et AX contient les informations qui seront envoyées.
La syntaxe de la commande IN est :
SUR L'AXE, À DROITE
Où AX est le registre où les informations entrantes seront stockées et DX contient l'adresse du port par lequel les informations arriveront.
Instructions MOV
Utilisé pour le transfert de données entre les cellules mémoire, les registres et l'accumulateur. La syntaxe est la suivante :
Destination MOV, Source
Les différents mouvements de données autorisés pour cette Instruction sont présentés dans le tableau suivant :
Numéro S. |
Destination |
Source |
1. |
mémoire |
accumulateur |
2. |
accumulateur |
mémoire |
3. |
registre de segments |
mémoire/registre |
4 |
mémoire/registre |
registre de segments |
5. |
Registre |
registre |
6. |
Registre |
mémoire |
7. |
mémoire |
registre |
8. |
Registre |
données immédiates |
9. |
mémoire |
données immédiates |
Voyons un exemple :
MOVAX,0006
Mouvement BX,AX
MOUVEMENT DE L'AXE, 4C00
INTÉRIEUR 21
Ce programme déplace la valeur de 0006H dans le registre AX, puis déplace le contenu de AX (0006h) dans le registre BX, et enfin déplace la valeur 4C00h dans le registre AX pour terminer l'exécution avec l'option 4C de l'interruption 21h. Nous donnerons une brève introduction à la pause de 13H et à celle de 21H plus tard.
Interruptions
Une interruption est une fonction matérielle qui oblige le processeur à suspendre son exécution, à enregistrer son état et à se déplacer vers un emplacement spécifique. L'emplacement de transfert spécifie l'adresse d'un programme qui a l'intention d'agir en réponse à l'interruption. Le programme qui s’exécute à la suite de l’interruption est appelé programme de gestion d’interruption.
Par exemple : si DOS veut envoyer des informations au BIOS ou si le BIOS veut envoyer des informations au système informatique, DOS ou BIOS génère une interruption. Chaque fois qu'une interruption est générée, l'ordinateur suspend ce qu'il fait et s'occupe d'abord de l'opération qui a généré l'interruption.
À chaque périphérique capable de générer des interruptions est attribué un numéro d'interruption unique pour identifier le périphérique qui génère ces interruptions. Nous discuterons de toutes les fonctions et sous-fonctions de l'interruption 13H, des extensions de l'interruption 13H et de l'interruption 21H dans ce livre.
Fondamentalement, les interruptions peuvent être de trois types :
- Interruptions matérielles internes
- Interruptions matérielles externes
- Interruptions logicielles
Interruptions matérielles internes
Les interruptions internes sont générées par certains événements qui se produisent pendant l'exécution d'un programme. Ce type d'interruption est entièrement géré par le matériel et ne peut pas être modifié.
Un exemple clair de ce type d'interruption est celle qui met à jour le compteur d'horloge interne de l'ordinateur : le matériel appelle cette interruption plusieurs fois par seconde pour maintenir l'heure à jour.
Même si nous ne pouvons pas gérer directement cette perturbation, car nous ne pouvons pas contrôler la mise à jour de l’heure via un logiciel, nous pouvons toujours utiliser ses effets sur notre ordinateur à notre avantage.
Par exemple : pour créer une horloge virtuelle constamment mise à jour, il suffit d'écrire un programme qui lit la valeur réelle du compteur et la traduit dans un format que l'utilisateur peut comprendre.
Interruptions matérielles externes
Les interruptions externes sont générées par des périphériques, tels que des claviers, des imprimantes, des cartes de communication, etc. Ils sont également générés par des coprocesseurs. Les interruptions externes ne peuvent pas être désactivées.
Ces interruptions ne sont pas envoyées directement au CPU mais sont envoyées à un circuit intégré dont la fonction est de gérer exclusivement ce type d'interruptions.
Interruptions logicielles
Les interruptions logicielles peuvent être activées directement depuis l'assembleur en appelant le numéro d'interruption souhaité avec l'instruction INT.
L'utilisation d'interruptions nous aide à créer des programmes et en les utilisant, nos programmes deviennent plus courts. Ils sont plus faciles à comprendre et fonctionnent généralement mieux, principalement en raison de leur plus petite taille. Ce type d'interruptions peut être séparé en deux catégories : les interruptions du système d'exploitation DOS et les interruptions du BIOS.
La différence entre les deux est que les interruptions du système d'exploitation sont plus faciles à utiliser mais sont également plus lentes puisque ces interruptions exploitent le BIOS pour atteindre leur objectif, en revanche les interruptions du BIOS sont beaucoup plus rapides mais présentent l'inconvénient que, faisant partie du matériel, elles sont très spécifiques et peuvent également varier en fonction de la marque du fabricant du circuit.
Le choix du type d'interruption à utiliser dépendra exclusivement des caractéristiques que vous souhaitez donner au programme.
Étant donné que nous utiliserons des interruptions pour la programmation de récupération de données à l'aide du langage C via la gestion des interruptions avec C, nous ne discuterons que de l'interruption 13H, des extensions d'interruption 13H et de la routine d'interruption 21H en particulier. Il n’est pas si important de discuter de toutes les autres interruptions et de leurs fonctions car il existe des fonctions plus simples dans le langage C pour effectuer la plupart de ces tâches. Cependant, la connaissance de l'interruption 13H et de ses extensions est obligatoire pour la programmation de récupération de données. |
Faisons une brève présentation de l’interruption 20H et de l’interruption 21H. La valeur écrite entre parenthèses (comme 0x20) indique comment utiliser
INT 20H (0x20) --> Fin du processus
Appel avec : CS = préfixe de segment de programme adresse de segment
Retours : Rien
Commentaires:
Terminer le processus en cours. Il s’agit de l’une des nombreuses méthodes qu’un programme peut utiliser pour effectuer une sortie finale. Vous pouvez également utiliser les fonctions (00H ou 31H ou 4CH) de INT 21H ou simplement INT 27H pour effectuer une sortie finale où les fonctions 31H et 4CH de INT 21H sont généralement préférées car elles vous permettent de passer un code de retour au processus parent.
Si vous avez utilisé des blocs de contrôle de fichiers (FCB) pour écrire un fichier, nous vous recommandons de fermer d'abord le fichier, sinon vous risquez de perdre des données car dans l'action de sortie finale, toute la mémoire occupée par le processus est libérée, les tampons de fichiers sont vidés et tous les handles ouverts vers les fichiers ou les périphériques appartenant au processus sont fermés.
Par conséquent, s'il existe des handles ouverts sur un fichier, des données peuvent être perdues.
INTERNE 21H (0x21)
Fonction 00H (0x00) --> Fin du processus
Appel avec : AH = 00H
CS = préfixe de segment de programme, adresse de segment
Retours : Rien
Commentaires:
Cette interruption termine le processus en cours. Il s’agit de l’une des nombreuses méthodes qu’un programme peut utiliser pour effectuer une sortie finale. Pour plus d'informations, voir INT 20H
INTERNE 21H (0x21)
Fonction 01H (0x01) --> Saisie de caractères avec écho
Appel avec : AH = 01H
Renvoie : AL = données d'entrée 8 bits
Commentaires:
Cette interruption lit un caractère à partir du périphérique d'entrée standard, tel que le clavier, et le renvoie au périphérique de sortie standard. Si aucun personnage n'est prêt, il attend qu'un personnage soit disponible.
INTERNE 21H (0x21)
Fonction 02H (0x02) --> Sortie de caractères
Appel avec : AH = 02H
DL = données 8 bits pour la sortie
Retours : Rien
Commentaires:
Envoie un caractère au périphérique de sortie standard. La sortie peut être redirigée. Si la sortie est redirigée, il n'y a aucun moyen de détecter que le disque est plein.
Il est également possible d'envoyer des chaînes à l'écran en effectuant une écriture (INT 21H, Fonction 40H) en utilisant le handle par défaut pour la sortie standard (0001H), si la sortie n'a pas été redirigée ou si un handle a été obtenu par le périphérique logique CON.
INTERNE 21H (0x21)
Fonction 03H (0x03) --> Entrée auxiliaire
Appel avec : AH = 03H
Renvoie : AL = données d'entrée 8 bits
Commentaires:
Lit un caractère à partir du périphérique auxiliaire standard. La valeur par défaut est le premier port série (COM1).
Si le périphérique auxiliaire envoie des données plus rapidement que le programme ne peut les traiter, des caractères peuvent être perdus. Il n'existe aucun moyen pour un programme utilisateur de lire l'état du périphérique auxiliaire ou de détecter des erreurs d'E/S telles que des caractères perdus, via cet appel de fonction.
INTERNE 21H (0x21)
Fonction 04H (0x04) --> Sortie auxiliaire
Appel avec : AH = 04H
DL = données 8 bits pour la sortie
Retours : Rien
Commentaires:
Cette fonction de l'INT 21H envoie un caractère au périphérique auxiliaire standard. La valeur par défaut est le premier port série (COM1). Les chaînes peuvent également être envoyées au périphérique auxiliaire en effectuant une écriture (INT 21H Fonction 40H) à l'aide du handle par défaut du périphérique auxiliaire standard (00034) ou à l'aide d'un handle obtenu en ouvrant le périphérique AUX logique.
INTERNE 21H (0x21)
Fonction 05H (0x05) --> Sortie imprimante
Appel avec : AH = 05H
DL = données 8 bits pour la sortie
Retours : Rien
Commentaires:
Cette fonction envoie un caractère au périphérique de liste standard. Le périphérique par défaut est l'imprimante sur le premier port parallèle (LPT1). Les chaînes peuvent également être envoyées à l'imprimante en effectuant une écriture (INT 21H Fonction 40H) à l'aide du handle par défaut du périphérique d'impression standard (0004H) ou à l'aide d'un handle obtenu en ouvrant le périphérique logique PRN ou LPT1.
INTERNE 21H (0x21)
Fonction 06H (0x06) --> E/S directes de la console
Appel avec : AH = 06H
DL = fonction requise telle que,
Si une sortie est requise, 00H-FEH
Si une entrée est demandée, 0FFH
Renvoie : rien, si appelé avec DL = 00H-0FEH
Si appelé avec DL = FFH et qu'un caractère est prêt
Drapeau zéro = effacer
AL = données d'entrée 8 bits
Si appelé avec DL = FFH et qu'aucun caractère n'est prêt
Drapeau zéro = défini
Commentaires:
Lit un caractère à partir du périphérique d'entrée standard ou écrit un caractère sur le périphérique de sortie standard. Les E/S peuvent être redirigées, mais si les E/S ont été redirigées, il n'y a aucun moyen de détecter une fin de fichier ou un disque plein. Cette fonctionnalité de l'INT 21H est utilisée par les programmes qui doivent lire et écrire tous les caractères et codes de contrôle possibles sans aucune interférence du système d'exploitation.
INTERNE 21H (0x21)
Fonction 07H (0x07) --> Saisie de caractères non filtrée sans écho
Appel avec : AH = 07H
Renvoie : AL = données d'entrée 8 bits
Commentaires:
Cette fonction lit un caractère à partir du périphérique d'entrée standard sans le sortir vers le périphérique de sortie standard.
INTERNE 21H (0x21)
Fonction 08H (0x08) --> Saisie de caractères sans écho
Appeler avec : AH = 08H
Renvoie : AL = données d'entrée 8 bits
Commentaires:
Cette fonction lit un caractère à partir du périphérique d'entrée standard sans le sortir vers le périphérique de sortie standard.
INTERNE 21H (0x21)
Fonction 09H (0x09) --> Afficher la chaîne
Appel avec : AH = 09H
DS:DX = segment : décalage de chaîne
Retours : Rien
Commentaires:
Envoie une chaîne de caractères au périphérique de sortie standard. La sortie peut être redirigée. Si la sortie a été redirigée, il n'y a aucun moyen de détecter que le disque est plein. La chaîne peut également être envoyée à l'écran en effectuant une écriture (INT 21H Fonction 40H) en utilisant le handle par défaut pour la sortie standard (0001H), s'il n'a pas été redirigé, ou un handle obtenu en ouvrant le périphérique logique CON.
INTERNE 21H (0x21)
Fonction 0AH (0x0A ou 10) --> Entrée clavier tamponnée
Appel avec : AH = 0AH
DS:DX = segment:décalage du tampon
Renvoie : données saisies dans le tampon, ne renvoie rien
Commentaires:
Lit une chaîne d'octets à partir du périphérique d'entrée standard, jusqu'à et y compris un retour chariot ASCII (0DH), et les place dans une mémoire tampon désignée par l'utilisateur. Les caractères sont envoyés vers le périphérique de sortie standard. Le tampon utilisé par la fonction a le format suivant :
Octet |
Contenu |
0 |
Nombre maximal de caractères à lire, défini par le programme |
1 |
Nombre de caractères réellement lus (hors retours chariot), défini par MS-DOS |
2+ |
Chaîne lue à partir du clavier ou de l'entrée standard, terminée par un retour chariot (0DH) |
INTERNE 21H (0x21)
Fonction 0BH (0x0B ou 11) --> Vérifier l'état de l'entrée
Appel avec : AH = 0BH
Renvoie : AL = 00H (si aucun caractère n'est disponible)
FFH (si au moins un personnage est disponible)
Commentaires:
Vérifie si un caractère est disponible à partir du périphérique d'entrée standard, tel que le clavier. Cette fonction est équivalente à la fonction IOCTL INT 21H, sous-fonction 44H 06H.
INTERNE 21H (0x21)
Fonction 0CH (0x0C ou 12) --> Vider le tampon d'entrée puis saisir
Appel avec : AH = 0CH
AL = nombre d'entrées à rappeler après réinitialisation
tampon (doit être 01H, 06H, 07H, 08H ou 0AH)
Si AL = 0AH
DS : DX = segment : décalage du tampon d'entrée
Renvoie : si appelé avec AL = 01H, 06H, 07H ou 08H,
AL = données d'entrée 8 bits
Si appelé avec AL= 0AH,
Rien (données entrées dans le tampon)
Commentaires:
Efface le tampon d’entrée standard, puis appelle l’une des fonctions de saisie de caractères. L'entrée peut être redirigée. Un numéro de fonction dans AL autre que 01H, 06H, 07H, 08H ou 0AH vide le tampon d'entrée et renvoie le contrôle au programme appelant.
INTERNE 21H (0x21)
Fonction 0DH (0x0D ou 13) -> Récupération de disque
Appel avec : AH = 0DH
Retours : Rien
Commentaires:
Cette fonction vide tous les tampons de fichiers. La fonction ne met pas à jour le répertoire du disque pour les fichiers qui sont encore ouverts.
INTERNE 21H (0x21)
Fonction 0EH (0x0E ou 14) -> Sélectionner le disque
Appel avec : AH = 0EH
DL = code unité (0 = A, 1 = B, etc.)
Renvoie : AL = nombre d'unités logiques dans le système
Commentaires:
Sélectionne le lecteur spécifié comme lecteur de disque actuel ou par défaut et renvoie le nombre total de lecteurs logiques dans le système.
Les applications doivent être limitées aux lettres de lecteur AZ (0 = A, 1 = B, etc.). Les unités logiques indiquent le nombre total de périphériques de type bloc tels que les disquettes, les disques durs, etc. En règle générale, un seul disque dur physique est divisé en deux ou plusieurs disques logiques.
INTERNE 21H (0x21)
Fonction 0FH (0x0F ou 15) -> Ouvrir le fichier
Appel avec : AH = 0FH
S : DX = segment : décalage du bloc de contrôle de fichier
Renvoie : si la fonction réussit et que le fichier est trouvé
AL = 00H
Et le FCB compilé par MS-DOS est le suivant :
Plage de variation (décalage 00H) = 1 pour le lecteur A, 2 pour le lecteur B, etc. Champ de bloc actuel (décalage 0CH) = 00H
Champ de taille d'enregistrement (décalage 0EH) = 0080H
Champ de taille (décalage 10H) = taille du fichier à partir du répertoire
Champ de données (décalage 14H) = horodatage du répertoire
Champ horaire (décalage 16H) = horodatage du répertoire
Si la fonction échoue et que le fichier n'est pas trouvé
AL = 0FFH
Commentaires:
Ouvre un fichier et le rend disponible pour d'autres opérations de lecture/écriture. Si le programme doit utiliser une taille d'enregistrement autre que 128 octets, il doit définir le champ de taille d'enregistrement sur le décalage FCB 0EH une fois le fichier ouvert avec succès et avant toute autre opération sur le disque.
INTERNE 21H (0x21)
Fonction 10H (0x10 ou 16) -> Fermer le fichier
Appel avec : AH = 10H
DS : DX = segment : décalage du bloc de contrôle de fichier
Renvoie : si la fonction réussit (mise à jour du répertoire réussie)
AL = 00H
Si la fonction échoue (fichier non trouvé dans le répertoire)
AL = FFH
Commentaires:
Il est utilisé pour fermer un fichier. Ferme un fichier, vide tous les tampons de disque MS-DOS internes associés au fichier sur le disque et met à jour le répertoire du disque si le fichier a été modifié ou étendu.
INTERNE 21H (0x21)
Fonction 11H (0x11 ou 17) -> Rechercher le premier fichier
Appel avec : AH = 11H
DS : DX = segment : décalage du bloc de contrôle de fichier
Renvoie : si la fonction réussit et que le fichier correspondant est trouvé
AL = 00H
Et le tampon à l'adresse actuelle de la zone de transfert de disque (DTA) est rempli soit comme un FCB normal non ouvert, soit comme un FCB étendu, selon le type de FCB saisi pour fonctionner.
Si la fonction échoue (aucun nom de fichier correspondant trouvé)
AL = FFH
Commentaires:
Recherche dans le répertoire actuel sur le lecteur désigné un nom de fichier correspondant. Vous pouvez utiliser des caractères génériques (? et *). Cette fonction renvoie le premier nom de fichier correspondant.
INTERNE 21H (0x21)
Fonction 12H (0x12 ou 18) -> Rechercher le fichier suivant
Appel avec : AH = 12H
DS : DX = segment : décalage du bloc de contrôle de fichier
Renvoie : si la fonction réussit et que le nom de fichier correspondant est trouvé
AL = 00H
Et le tampon à l'adresse de la zone de transfert de disque (DTA) actuelle est défini comme un FCB normal non ouvert ou un FCB étendu, selon le type de FCB initialement saisi dans la fonction INT21H 11H
Si la fonction échoue et que les noms de fichiers correspondants ne sont pas trouvés
AL = FFH
Commentaires:
C'est le compagnon de la fonction précédente. Si la fonction INT 21H 11H a réussi, renvoie le nom de fichier correspondant suivant, le cas échéant. Cette fonction suppose que le FCB utilisé comme entrée a été initialisé avec succès par un appel précédent à la fonction INT 21H 11H et par d'éventuels appels ultérieurs à la fonction INT 21H 12H, et que le nom de fichier ou l'extension recherché contient au moins un caractère générique.
INTERNE 21H (0x21)
Fonction 13H (0x13 ou 19) -> Supprimer le fichier
Appel avec : AH = 13H
DS : DX = segment : décalage du bloc de contrôle de fichier
Renvoie : si la fonction réussit et que le ou les fichiers ont été supprimés
AL = 00H
Si la fonction échoue et qu'aucun fichier correspondant n'a été trouvé ou qu'au moins un fichier correspondant était en lecture seule,
AL = FFH
Commentaires:
Supprime tous les fichiers correspondants du répertoire actuel sur le disque dur par défaut ou spécifié. Vous pouvez également utiliser des caractères génériques (? et *).
INTERNE 21H (0x21)
Fonction 14H (0x14 ou 20) -> Lecture séquentielle
Appel avec : AH = 14H
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL = 00H si la lecture est réussie
01H si fin de fichier
02H si le segment s'enroule
03H si l'enregistrement partiel a été lu jusqu'au bout
déposer
Commentaires:
Cette fonction lit le bloc séquentiel de données suivant d'un fichier, puis incrémente le pointeur de fichier de manière appropriée. Le nombre d'octets de données à lire est spécifié par le champ de taille d'enregistrement (décalage 0EH) du bloc de contrôle de fichier (FCB).
L'enregistrement est lu en mémoire à l'adresse actuelle de la zone de transfert de disque (DTA), spécifiée par l'appel le plus récent à la fonction INT 21H 1AH. Si la taille de l'enregistrement et l'emplacement de la mémoire tampon sont tels qu'un dépassement de segment ou un bouclage se produirait, la fonction échoue avec un code de retour de 02H.
INTERNE 21H (0x21)
Fonction 15H (0x15 ou 21) --> Écriture séquentielle
Appel avec : AH = 15H
DS : DX = segment : décalage du bloc de contrôle du fichier précédemment ouvert
Renvoie : AL = 00H, si l'écriture a réussi
01H, si le disque est un fichier
02H, si le segment s'enroule
Commentaires:
Cette fonction écrit le prochain bloc séquentiel de données dans un fichier, puis incrémente le pointeur de fichier de manière appropriée. Le nombre d'octets de données à écrire est spécifié par le champ de taille d'enregistrement (décalage 0EH) du bloc de contrôle de fichier (FCB).
INTERNE 21H (0x21)
Fonction 16H (0x16 ou 22) --> Créer un fichier
Appel avec : AH = 16H
DS : DX = segment : décalage du bloc de contrôle du fichier non ouvert
Renvoie : si la fonction réussit et que le fichier est créé ou tronqué
AL = 00H
Et FCB compilé à partir de MS-DOS comme suit :
Plage de variation (décalage 00H) = 1 pour le lecteur A, 2 pour le lecteur B, etc.
Champ de bloc actuel (offset0CH) = 00H
Champ de taille d'enregistrement (décalage 0EH) = 0080H
Champ de taille (décalage 10H) = taille du fichier à partir du répertoire
Champ date (décalage 14H) = horodatage du répertoire
Champ horaire (décalage 16H = horodatage du répertoire
Si la fonction échoue (répertoire plein)
AL = FFH
Commentaires:
Cette fonction crée une nouvelle entrée de répertoire dans le répertoire actuel ou tronque tout fichier existant portant le même nom à une longueur zéro. Il ouvre également le fichier pour d’autres opérations de lecture/écriture. Cette fonction doit être utilisée avec prudence car un fichier existant avec le nom spécifié est tronqué à une longueur nulle et toutes les données de ce fichier sont irrémédiablement perdues.
INTERNE 21H (0x21)
Fonction 17H (0x17 ou 23) --> Renommer le fichier
Appel avec : AH = 17H
DS : DX = segment : décalage du bloc de contrôle du fichier spécial
Renvoie : si la fonction réussit et qu'un ou plusieurs fichiers ont été renommés
AL = 00H
Si la fonction échoue et qu'il n'y a pas de fichiers correspondants ou que le nouveau nom de fichier correspond à un fichier existant
AL = FFH
Commentaires:
Cette fonction modifie le nom de tous les fichiers correspondants dans le répertoire actuel du disque dans le lecteur spécifié.
Vous pouvez également utiliser des caractères génériques avec cela. Le bloc de contrôle de fichier spécial possède un code d'unité, un nom de fichier et une extension dans la position habituelle (octets 0 à 0BH) et un deuxième nom de fichier commençant 6 octets après le premier (décalage 11H).
INT 21H
Fonction 18H (0x18 ou 24) --> Réservé
INTERNE 21H (0x21)
Fonction 19H (0x19 ou 25) --> Obtenir le disque actuel
Appel avec : AH = 19H
Renvoie : AL = code unité (0 pour l'unité A, 1 pour l'unité B, etc.)
Commentaires:
Cette fonction renvoie le code du lecteur de disque actuel ou par défaut.
INTERNE 21H (0x21)
Fonction 1AH (0x1A ou 26) --> Définir l'adresse DTA
Appel avec : AH = 1AH
DS : DX = segment : décalage de la zone de transfert du disque.
Retours : Rien
Commentaires:
Cette fonction spécifie l'adresse de la zone de transfert de disque (DTA) à utiliser pour les appels de fonction ultérieurs liés à FCB.
INTERNE 21H (0x21)
Fonction 1BH (0x1B ou 27) --> Obtenir les données du lecteur par défaut
Appel avec : AH = 1BH
Renvoie : si la fonction réussit
AL = secteurs par cluster
DS : DX = décalage du segment d'octets de l'ID du support
CX = taille du secteur physique en octets
DX = nombre de clusters pour le lecteur par défaut
Si la fonction échoue (lecteur non valide ou erreur critique)
AL = FFH
Commentaires:
Cette fonction obtient des informations sélectionnées sur le lecteur de disque par défaut et un pointeur vers l'octet d'identification du support à partir de sa table d'allocation de fichiers.
L'octet d'identification du média a les significations suivantes :
ID du descripteur de média |
Moyen |
0F0H |
Disquette 3,5 pouces double face 18 secteurs (ou autre) |
0F8H |
disque dur |
0F9H |
Disquette 5,25 pouces, double face, 15 secteurs |
0F9H |
Disquette 3,5 pouces double face 9 secteurs |
0FCH |
Disquette 5,25 pouces, simple face, 9 secteurs |
0FDH |
Disquette double face 9 secteurs de 5,25 pouces |
0FDH |
Disquette 8 pouces, simple face, simple densité |
0FEH |
Disquette 5,25 pouces, simple face, 8 secteurs |
0FEH |
Disquette 8 pouces, simple face, simple densité |
0FEH |
Disquette double face double densité de 8 pouces |
0FFH |
Disquette 5,25 pouces, double face, 8 secteurs |
INTERNE 21H (0x21)
Fonction 1CH (0x1C ou 28) --> Obtenir les données du lecteur
Appel avec : AH = 1CH
DL = Code de l'unité
Renvoie : si la fonction réussit
AL = secteurs par cluster
DS:BX = segment : décalage d'octet de l'ID de média
CX = taille du secteur physique en octets
DX = nombre de clusters par défaut ou unité spécifiée
Si la fonction échoue et que le lecteur n'est pas valide ou présente une erreur critique
AL = FFH
Commentaires:
Cette fonction obtient des informations d'allocation sur le lecteur de disque spécifié et un pointeur vers l'octet d'identification du support à partir de sa table d'allocation de fichiers. Reportez-vous au tableau des octets d'ID du descripteur de média, fourni dans INT 21H, fonction 1BH, pour obtenir des informations sur l'ID du média.
INTERNE 21H (0x21)
Fonction 1DH (0x1D ou 29) --> Réservé
INTERNE 21H (0x21)
Fonction 1EH (0x1E ou 30) --> Réservé
INTERNE 21H (0x21)
Fonction 1FH (0x1F ou 31) --> Réservé
INTERNE 21H (0x21)
Fonction 20H (0x20 ou 32) --> Réservé
INTERNE 21H (0x21)
Fonction 21H (0x21 ou 33) --> Lecture aléatoire
Appel avec : AH = 21H
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL = 00H si la lecture est réussie
01H si fin de fichier
02H si le segment s'enroule, la lecture est annulée
03H si l'enregistrement partiel a été lu jusqu'au bout
déposer
Commentaires:
Cette fonction lit un enregistrement sélectionné à partir d'un fichier en mémoire. L'enregistrement est lu en mémoire à l'adresse actuelle de la zone de transfert du disque, spécifiée par l'appel le plus récent à la fonction INT 21H 1AH.
INTERNE 21H (0x21)
Fonction 22H (0x22 ou 34) --> Écriture aléatoire
Appel avec : AH = 22H
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL = 00H si l'écriture est réussie
01H si le disque est plein
02H Si le segment s'enroule, l'écriture est annulée
Commentaires:
Cette fonction écrit des données de la mémoire dans un enregistrement sélectionné dans un fichier.
INTERNE 21H (0x21)
Fonction 23H (0x23 ou 35) --> Obtenir la taille du fichier
Appel avec : AH = 23H
DS : DX = segment : décalage du fichier non ouvert
bloc de contrôle
Renvoie : si la fonction réussit et que le nom de fichier correspondant est trouvé
AL = 00H
Et le champ d'enregistrement relatif FCB (décalage 21H) est défini sur le nombre d'enregistrements dans le fichier, arrondi si nécessaire à l'enregistrement complet suivant.
Si la fonction échoue et qu'aucun fichier correspondant n'est trouvé
AL = FFH
Commentaires:
Cette fonction recherche un fichier correspondant dans le répertoire courant ; Si un fichier est trouvé, il met à jour le FCB avec la taille du fichier en termes de nombre d'enregistrements. Il n'y a pas de taille d'enregistrement par défaut pour cette fonction, vous devez donc saisir une valeur appropriée dans le champ Taille d'enregistrement FCB (décalage 0EH) avant d'appeler cette fonction.
INTERNE 21H (0x21)
Fonction 24H (0x24 ou 36) --> Définit le numéro d'enregistrement relatif
Appel avec : AH = 24H
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL est détruit (l'autre registre n'est pas affecté)
Champ d'enregistrement lié au FCB (décalage 21H) mis à jour
Commentaires:
Cette fonction définit le champ de numéro d'enregistrement relatif d'un bloc de contrôle de fichier (FCB) pour qu'il corresponde à la position de fichier actuelle enregistrée dans le FCB ouvert.
INTERNE 21H (0x21)
Fonction 25H (0x25 ou 37) --> Définir le vecteur d'interruption
Appel avec : AH = 25H
AL = numéro d'interruption
DS : DX = segment : décalage de gestion des interruptions
routine
Retours : Rien
Commentaires:
Cette fonction initialise un vecteur d'interruption CPU pour pointer vers une routine de gestion des interruptions. Il devrait être utilisé de préférence à la modification directe de la table des vecteurs d'interruption par des applications bien conçues.
INTERNE 21H (0x21)
Fonction 26H (0x26 ou 38) --> Créer un nouveau préfixe de segment de programme (PSP)
Appel avec : AH = 26H
DX = segment : du nouveau segment du programme
préfixe (PSP)
Retours : Rien
Commentaires:
Cette fonction copie le préfixe de segment de programme (PSP) du programme en cours d'exécution vers une adresse de segment spécifiée dans la mémoire libre, puis met à jour le nouveau PSP pour le rendre utilisable par un autre programme.
INTERNE 21H (0x21)
Fonction 27H (0x27 ou 39) --> Lecture aléatoire de blocs
Appel avec : AH = 27H
CX = nombre d'enregistrements à lire
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL = 00H si tous les enregistrements demandés ont été lus
01H si fin de fichier
02H si le segment s'enroule
03H si l'enregistrement partiel a été lu jusqu'au bout
déposer
CX = nombre réel d'enregistrements lus
Commentaires:
Cette fonction lit un ou plusieurs enregistrements séquentiels d'un fichier dans la mémoire, en commençant à un emplacement de fichier désigné. Si la taille et l'emplacement du tampon sont tels qu'un dépassement de segment ou un bouclage se produirait, la fonction échoue avec un code de retour de 02H et si un enregistrement partiel est lu à la fin du fichier, le reste de l'enregistrement est complété par des zéros.
INTERNE 21H (0x21)
Fonction 28H (0x28 ou 40) --> Écriture de blocs aléatoires
Appel avec : AH = 28H
CX = nombre d'enregistrements à écrire
DS : DX = segment : décalage du segment précédemment ouvert
bloc de contrôle de fichier
Renvoie : AL = 00H si tous les enregistrements demandés ont été écrits
01H si le disque est plein
02H si le segment s'enroule
CX = nombre réel d'enregistrements écrits
Commentaires:
Cette fonction écrit un ou plusieurs enregistrements séquentiels de la mémoire vers un fichier, en commençant à un emplacement de fichier désigné. Si la taille et l'emplacement du tampon sont tels qu'un dépassement de segment ou un bouclage se produirait, la fonction échoue avec un code de retour de 02H.
INTERNE 21H (0x21)
Fonction 29H (0x29 ou 41) --> Analyser le nom du fichier
Appel avec : AH = 29H
AL = indicateur pour contrôler l'analyse
Bit 0 = 1, si les séparateurs principaux seront
scanné (ignoré).
= 0, si les séparateurs initiaux ne seront pas
scanné via
Bit 1 = 1, si l'octet d'identification de l'unité dans FCB sera
modifié uniquement si une unité était
spécifié dans la chaîne analysée.
= 0, si l'octet d'identification de l'unité dans FCB sera
modifié indépendamment, s'il n'y a pas de lecteur
le spécificateur est présent dans la chaîne analysée, le champ de code d'unité FCB est défini sur 0 (par défaut)
Bit 2 = 1, si le champ du nom de fichier dans FCB sera
modifié uniquement si un nom de fichier est présent
spécifié dans la chaîne analysée.
= 0, si le champ de nom de fichier dans FCB doit être modifié indépendamment, si aucun nom de fichier n'a la chaîne analysée, le nom de fichier FCB sera défini sur des espaces ASCIIZ.
Bit 3 = 1, si le champ d'extension dans FCB sera
modifié, uniquement si une extension est présente
spécifié dans la chaîne analysée.
= 0, si le champ d'extension dans FCB sera
modifié de toute façon, s'il n'y a pas d'extension
est présent dans la chaîne analysée, FCB
l'extension est définie sur des espaces ASCIIZ
DS : SI = segment : décalage de chaîne
EX : DI = segment : décalage du bloc de contrôle de fichier
Renvoie : AL = 00H, si aucun caractère générique n'est présent
Met 01H, si la chaîne a été analysée
contenait des caractères génériques FFH,
si le spécificateur d'unité n'est pas valide
DS : SI = segment : décalage du premier caractère
après le nom du fichier analysé
ES : DI = segment : décalage de format
bloc de contrôle de fichier non ouvert
Commentaires:
Cette fonction analyse une chaîne de texte dans les différents champs d'un bloc de contrôle de fichier (FCB).
Cette fonction traite les caractères (: . ; , = + espace de tabulation) comme des caractères de séparation et traite tous les caractères de contrôle et les caractères (: . ; , = + espace de tabulation < > | / “ [ ]) comme des caractères de terminaison.
INTERNE 21H (0x21)
Fonction 2AH (0x2A ou 42) --> Obtenir le jour et la date
Appel avec : AH = 2AH
Renvoie : CX = année (1980 à 2099)
DH = mois (1 à 12)
DL = jour (de 1 à 31)
AL = jour de la semaine (0 = dimanche,
1= lundi, etc.)
Commentaires:
Cette fonction obtient le jour du mois, le jour de la semaine, le mois et l'année du système.
INTERNE 21H (0x21)
Fonction 2BH (0x2B ou 43) --> Définir la date
Appel avec : AH = 2BH
CX = année (de 1980 à 2099)
DH = mois (1 à 12)
DL = jour (de 1 à 31)
Renvoie : AL = 00H si la date a été correctement définie
FFH si la date n'est pas valide (ignorée)
Commentaires:
Cette fonction initialise le pilote de l'horloge système à une date spécifique, mais l'heure système reste inchangée.
INTERNE 21H (0x21)
Fonction 2CH (0x2C ou 44) --> Obtenir l'heure
Appel avec : AH = 2CH
Renvoie : CH = heures (0 à 23)
CL = minutes (0 à 59)
DH = secondes (0 à 59)
DL = centièmes de seconde (0 à 99)
Commentaires:
Il est utilisé pour obtenir l'heure du jour à partir du pilote d'horloge en temps réel du système, convertie en heures, minutes, secondes et centièmes de seconde.
INTERNE 21H (0x21)
Fonction 2DH (0x2D ou 45) --> Régler l'heure
Appel avec : AH = 2DH
CH = heures (0 à 23)
CL = minutes (0 à 59)
DH = secondes (0 à 59)
DL = centièmes de seconde (0 à 99)
Renvoie : AL = 00H, si l'heure a été correctement réglée
FFH, si l'heure n'est pas valide (ignorée)
Commentaires:
Cette fonction initialise l'horloge en temps réel du système à une heure, une minute, une seconde et un centième de seconde spécifiés. La date du système n'est pas affectée.
INTERNE 21H (0x21)
Fonction 2EH (0x2E ou 46) --> Définir l'indicateur de vérification
Appel avec : AH = 2EH
AL = 00H, si l'indicateur de vérification est désactivé
01H, si le drapeau de vérification est activé
DL = 00H
Retours : Rien
Commentaires:
Cette fonctionnalité désactive ou active l'indicateur du système d'exploitation pour la vérification automatique des données lors de la lecture après l'écriture. Le paramètre par défaut de l'indicateur de vérification est OFF car la vérification de lecture après écriture ralentit les opérations sur le disque.
INTERNE 21H (0x21)
Fonction 2FH (0x2F ou 47) --> Obtenir l'adresse DTA
Appel avec : AH = 2FH
Renvoie : ES : BX = segment : décalage de la zone de transfert du disque
Commentaires:
Cette fonction obtient l'adresse actuelle de la zone de transfert de disque (DTA) pour les opérations de lecture/écriture de fichiers FCB.
INTERNE 21H (0x21)
Fonction 30H (0x30 ou 48) --> Obtenir le numéro de version MS-DOS
Appel avec : AH = 30H
AL = 00H
Renvoie : AL = numéro de version majeur (MS-DOS 3.10 = 3, etc.)
AH = numéro de version mineure (MS-DOS 3.10= 0AH, etc.)
BH = Fabricant d'équipement d'origine
Numéro de série (OEM) (dépendant de l'OEM, généralement 00H pour IBM)
PC-DOS, 0FFH ou autres valeurs pour MS-DOS)
BL:CX = numéro de série utilisateur 24 bits (facultatif, dépendant du fabricant d'origine)
Commentaires:
Renvoie le numéro de version du système d'exploitation MS-DOS hôte.
INTERNE 21H (0x21)
Fonction 31H (0x31 ou 49) --> Terminer et rester résident (TSR)
Appel avec : AH = 31H
AL = code de retour
DX = quantité de mémoire en paragraphes, à réserver
Cela ne donne rien en retour
Commentaires:
Cette fonction termine l'exécution du programme en cours d'exécution en transmettant un code de retour au processus parent, mais réserve une partie ou la totalité de la mémoire du programme pour qu'elle soit superposée au prochain programme transitoire à charger. Cette fonction doit être utilisée de préférence à INT 27H car elle prend en charge CS pour contenir le segment de préfixe du segment de programme.
INTERNE 21H (0x21)
Fonction 32H (0x32 ou 50) --> Réservé
INTERNE 21H (0x21)
Fonction 33H (0x33 ou 51) --> Obtenir ou définir l'indicateur d'interruption, obtenir le lecteur de démarrage
Appelez avec : Si vous recevez le signal de panne
AH = 33H
AL = 00H
Si vous définissez l'indicateur d'abandon
AH = 33H
AL = 01H
DL = 00H si le drapeau d'interruption est désactivé
01H si le drapeau d'interruption est activé
Si vous obtenez le lecteur de démarrage
AH = 33H
AL = 05H
Renvoie : si appelé avec AL = 00H ou 01H
DL = 00H le drapeau d'interruption est OFF
Le drapeau d'interruption 01H est actif
Si appelé avec AL = 05H
DL = unité de démarrage (1 = A, 2 = B, etc.)
Commentaires:
Cette fonction obtient ou modifie l'état de l'indicateur d'interruption du système d'exploitation, qui affecte le contrôle Ctrl-C pendant les appels de fonction.
INTERNE 21H (0x21)
Fonction 34H (0x34 ou 52) --> Réservé
INTERNE 21H (0x21)
Fonction 35H (0x35 ou 53) --> Obtenir le vecteur d'interruption
Appel avec : AH = 35H
AL = numéro d'interruption
Renvoie : ES : BX = segment : décalage du gestionnaire d'interruption
Commentaires:
Cette fonction obtient l'adresse de la routine de gestionnaire d'interruption actuelle pour l'interruption machine spécifiée.
INTERNE 21H (0x21)
Fonction 36H (0x36 ou 54) --> Obtenir des informations sur l'allocation de lecteur
Appel avec : AH = 36H
DL = code unité (0 par défaut, 1 = A, etc.)
Renvoie : si la fonction réussit
AX = secteur par cluster
BX = nombre de clusters disponibles
CX = octets par secteur
DX = cluster par unité
Si la fonction échoue (lecteur non valide)
AXE = FFFFH
Commentaires:
Cette fonction obtient des informations sélectionnées sur un lecteur de disque.
Cette fonctionnalité est très importante dans la planification de la récupération des données et le dépannage du disque, car elle vous permet de calculer la capacité du disque, l'espace libre restant et de nombreuses autres informations importantes.
INTERNE 21H (0x21)
Fonction 37H (0x37 ou 55) --> Réservé
INTERNE 21H (0x21)
Fonction 38H (0x38 ou 56) --> Obtenir ou définir les informations sur le pays
Appelez avec : Si vous souhaitez obtenir des informations sur le pays
AH = 38H
AL = 0, pour obtenir des informations à jour sur le pays
1-FEH, pour obtenir des informations sur
Pays avec code <255
FFH, pour obtenir des informations sur les pays
avec le code >=255
BX = code pays, si AL = FFH
DS:DX = segment : décalage du tampon pour les informations renvoyées
Si vous définissez le code du pays actuel
AH = 38H
AL = 1-FEH, code pays pour les pays avec code <255
FFH, pour les pays avec code >=255
BX = code pays, si AL = 0FFH
DX = FFFFH
Retours :
Si la fonction réussit
Compagnie aérienne nationale = gratuit
Et si vous obtenez des informations sur l’internationalisation
BX = préfixe international
DS : DX = segment : décalage du tampon contenant les informations d’internationalisation.
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction obtient des informations internationales pour le pays actuel ou spécifié ou définit le code du pays actuel.
INTERNE 21H (0x21)
Fonction 39H (0x39 ou 57) --> Créer un répertoire
Appel avec : AH = 39H
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction crée un répertoire en utilisant le lecteur et le chemin spécifiés.
ASCIIZ est connu comme une séquence de caractères ASCII se terminant par Null ou Zero, Byte. |
INTERNE 21H (0x21)
Fonction 3AH (0x3A ou 58) --> Supprimer le répertoire
Appel avec : AH = 3AH
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction supprime un répertoire en utilisant le lecteur et le chemin spécifiés. Si un élément du chemin d'accès n'existe pas ou si le répertoire n'est pas vide ou si l'accès est refusé ou si le répertoire spécifié est également le répertoire actuel, la fonction de suppression du répertoire échoue.
INTERNE 21H (0x21)
Fonction 3BH (0x3B ou 59) --> Définir le répertoire courant
Appel avec : AH = 3BH
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction définit le répertoire actuel ou par défaut en utilisant le lecteur et le chemin spécifiés. Si le chemin spécifié ou un élément du chemin n'existe pas, la fonction échoue.
INTERNE 21H (0x21)
Fonction 3CH (0x3C ou 60) --> Créer un fichier
Appel avec : AH = 3CH
CX = attribut de fichier, où attribut
des morceaux significatifs peuvent être combinés.
La signification des bits est donnée dans le tableau suivant :
Pièces) |
Signification (si définie) |
0 |
Lecture seule |
1 |
Caché |
2 |
Système |
3 |
Étiquette de volume |
4 |
Réservé (0) |
5 |
Archive |
6 – 15 |
Réservé (0) |
DS : DX = segment : décalage ASCIIZ
nom du chemin
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = poignée
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Si un chemin d'accès ASCIIZ est spécifié, cette fonction crée un nouveau fichier dans le répertoire désigné ou par défaut sur le lecteur de disque désigné ou par défaut. Si le fichier spécifié existe déjà, il est tronqué à une longueur nulle. Dans les deux cas, le fichier est ouvert et un handle est renvoyé qui peut être utilisé par le programme pour un accès ultérieur au fichier.
Si un élément de chemin n'existe pas, ou si le fichier est créé dans le répertoire racine et que le répertoire racine est plein, ou si l'accès est refusé, ou si un fichier avec un attribut en lecture seule existe déjà dans le répertoire spécifié, la fonction de création de fichier échoue.
INTERNE 21H (0x21)
Fonction 3DH (0x3D ou 61) --> Ouvrir le fichier
Appel avec : AH = 3DH
AL = mode d'accès
La signification des bits du mode d'accès est donnée dans le tableau suivant :
Pièces |
Signification |
0 – 2 |
Mode d'accès
000 = Accès en lecture
001 = Accès en écriture
010 = Accès en lecture/écriture |
3 |
Réservé (0) |
4 – 6 |
Mode de partage
000 = mode de compatibilité
001 = tout refuser
010 = refuser l'écriture
011 = refuser la lecture
100 = rien refuser |
7 |
Drapeau d'héritage
0 = le processus enfant hérite du handle
1 = l'enfant n'hérite pas du handle |
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = poignée
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Si un chemin d'accès ASCIIZ est spécifié, cette fonction ouvre le fichier spécifié dans le répertoire désigné ou par défaut sur le lecteur de disque désigné ou par défaut. Un handle est renvoyé et peut être utilisé par le programme pour un accès ultérieur au fichier.
INTERNE 21H (0x21)
Fonction 3EH (0x3E ou 62) --> Fermer le fichier
Appel avec : AH = 3EH
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction vide tous les tampons internes associés au fichier sur le disque, ferme le fichier et libère le handle pour réutilisation, d'un handle précédemment ouvert ou créé avec succès. Si le fichier a été modifié, l'horodatage, la date et la taille du fichier sont mis à jour dans l'entrée du répertoire du fichier.
INTERNE 21H (0x21)
Fonction 3FH (0x3F ou 63) --> Lire un fichier ou un périphérique
Appel avec : AH = 3FH
BX = poignée
CX = nombre d'octets à lire
DS : DX = segment : décalage de tampon
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octet transféré
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction transfère les données à la position actuelle du pointeur de fichier du fichier vers le tampon, puis met à jour la position du pointeur de fichier pour un handle de fichier valide donné à partir d'une opération d'ouverture ou de création précédente, une adresse de tampon et une longueur en octets.
INTERNE 21H (0x21)
Fonction 40H (0x40 ou 64) --> Écrire un fichier ou un périphérique
Appel avec : AH = 40H
BX = poignée
CX = nombre d'octets à écrire
DS : DX = segment : décalage de tampon
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octet transféré
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction transfère les données du tampon vers le fichier, puis met à jour la position du pointeur de fichier pour un handle de fichier valide donné par une opération d'ouverture ou de création précédente, une adresse de tampon et une longueur en octets. Si la fonction est appelée avec CX = 0, le fichier est tronqué ou étendu jusqu'à la position actuelle du pointeur de fichier.
INTERNE 21H (0x21)
Fonction 41H (0x41 ou 65) --> Supprimer le fichier
Appel avec : AH = 41H
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction supprime un fichier du disque et du répertoire par défaut ou spécifié. La fonction supprime un fichier en remplaçant le premier caractère de son nom de fichier dans le répertoire racine par le caractère E5H (0xE5) et en rendant les clusters du fichier disponibles pour de nouvelles données dans la table d'allocation de fichiers. Jusqu’à ce moment-là, les données réelles stockées dans ces clusters ne sont pas écrasées.
INTERNE 21H (0x21)
Fonction 42H (0x42 ou 66) --> Définir le pointeur de fichier
Appel avec : AH = 42H
AL = code de méthode
00H décalage absolu depuis le début du fichier
01H décalage signé à partir du fichier actuel
aiguille
02H offset signé à partir de la fin du fichier
BX = poignée
CX = moitié la plus significative du décalage
DX = la moitié la moins significative du décalage
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
DX = moitié la plus significative du fichier résultant
aiguille
AX = la moitié la moins significative du fichier résultant
aiguille
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction définit la position du pointeur de fichier par rapport au début du fichier, à la fin du fichier ou à la position actuelle du fichier.
INTERNE 21H (0x21)
Fonction 43H (0x43 ou 67) --> Obtenir ou définir les attributs du fichier
Appel avec : AH = 43H
AL = 00H pour obtenir les attributs
01H pour définir les attributs
CX = attribut de fichier, si AL=01H. Les bits peuvent être combinés
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
CX = attribut de fichier
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction obtient ou modifie les attributs du fichier (lecture seule, caché, système ou archive) ou du répertoire. Pour la signification des bits des différents attributs, reportez-vous au tableau de signification des bits fourni ci-dessus.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68) --> Contrôle d'entrée/sortie (I/O Ctrl)
Cette fonctionnalité fournit un chemin de communication direct entre un programme d'application et un pilote de périphérique. Permet à un programme d'obtenir des informations dépendantes du matériel et de demander des opérations qui ne sont pas prises en charge par d'autres appels de fonction MS-DOS.
Les sous-fonctions du contrôle d'entrée et de sortie sont données dans le tableau suivant :
Sous-fonction |
Nom de l'opération |
00:00 heures |
Obtenez des informations sur votre appareil |
01H |
Définir les informations sur l'appareil |
02h00 |
Réception des données de contrôle du pilote de périphérique de caractères |
03h00 |
Envoyer des données de contrôle au pilote de périphérique de caractères |
04h00 |
Recevoir les données de contrôle du pilote de périphérique de bloc |
05h00 |
Envoyer les données de contrôle au pilote de périphérique de bloc |
06h00 |
Vérifiez l'état de l'entrée |
07h00 |
Vérifiez l'état de sortie |
08h00 |
Vérifiez si le périphérique de blocage est amovible |
09h00 |
Vérifiez si le périphérique de blocage est distant |
0AH (10) |
Vérifiez si la poignée est à distance |
0BH (11) |
Modifier le nombre de tentatives de partage |
0CH (12)
|
Contrôle d'E/S générique pour les périphériques de caractères
Valeur |
Description |
CL = 45H |
Définir le nombre d'itérations |
CL = 4AH |
Sélectionner la page de code |
CL = 4CH |
Commencer à préparer la page de code |
CL = 4DH |
Préparation de la page de code finale |
CL = 5FH |
Définir les informations d'affichage |
CL = 65H |
Obtenir le nombre d'itérations |
CL = 6AH |
Requête sur la page de code sélectionnée |
CL = 6BH |
Liste de préparation de requête |
CL = 7FH |
Obtenir des informations de visualisation |
|
0D (13)
|
Contrôle d'E/S générique pour les périphériques en mode bloc
Valeur |
Description |
CL = 40H |
Définir les paramètres de l'appareil |
CL = 41H |
Écrire une piste |
CL = 42H |
Formater et vérifier la piste |
CL = 47H |
Définir l'indicateur d'accès |
CL = 60H |
Obtenir les paramètres de l'appareil |
CL = 61H |
Lire la piste |
CL = 62H |
Vérifier la piste |
CL = 67H |
Obtenir l'accès Rapport |
|
0EH (14) |
Obtenir la carte du lecteur logique |
0FH (15) |
Définir la carte du lecteur logique |
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), sous-fonction 00H (0x00) I/O Ctrl --> obtenir des informations sur l'appareil
Appel avec : AH = 44H
AL = 00H
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
DX = mot d'information sur l'appareil
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction renvoie un mot d'information sur le périphérique pour le fichier ou le périphérique associé au handle spécifié.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), sous-fonction 01H (0x01) I/O Ctrl --> définir les informations sur l'appareil
Appel avec : AH = 44H
AL = 01H
BX = poignée
DX = mot d'information sur l'appareil
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction de la fonction INT 21H 44H définit certains indicateurs pour un handle associé à un périphérique de caractères. Cette sous-fonction ne peut pas être utilisée pour un handle associé à un fichier.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 02H (0x02) Ctrl E/S --> lire le caractère de données de contrôle du pilote de périphérique
Appel avec : AH = 44H
AL = 02H
BX = poignée
CX = nombre d'octets à lire
DS : DX = segment : décalage de tampon
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octets lus
Et le tampon contient les données de contrôle du pilote
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Lit les données de contrôle à partir d'un pilote de périphérique de caractères. La longueur et le contenu des données sont spécifiés pour chaque pilote de périphérique et ne suivent aucun format standard. Cette fonction n’implique pas nécessairement d’entrée provenant du périphérique physique.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 03H (0x03) Ctrl E/S --> écriture des données de contrôle du pilote de périphérique de caractères
Appel avec : AH = 44H
AL = 03H
BX = poignée
CX = nombre d'octets à écrire
DS : DX = segment : décalage des données
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octets transférés
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction transfère les données de contrôle d'une application vers un pilote de périphérique de caractères. La longueur et le contenu des données sont spécifiques à chaque pilote de périphérique et ne suivent aucun format standard. Cette fonction ne génère pas nécessairement de sortie sur le périphérique physique.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 04H (0x04) Ctrl E/S --> Lire les données de contrôle du pilote de périphérique de bloc
Appel avec : AH = 44H
AL = 04H
BL = code de l'appareil (0=par défaut, 1=A, 2=B, etc.)
CX = nombre d'octets à lire
DS : DX = segment : décalage de tampon
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octets transférés
Et le tampon contient les données de contrôle du pilote de périphérique.
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction transfère les données de contrôle d'un pilote de périphérique de bloc directement dans la mémoire tampon d'un programme d'application. La longueur et le contenu des données sont spécifiques à chaque pilote de périphérique et ne suivent aucun format standard. Cette fonctionnalité ne nécessite pas nécessairement une entrée à partir du périphérique physique.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), sous-fonction 05H (0x05) Ctrl E/S --> écrire le bloc de données de contrôle du pilote de périphérique
Appel avec : AH = 44H
AL = 05H
BL = code de l'appareil (0=par défaut, 1=A, 2=B, etc.)
CX = nombre d'octets à écrire
DS : DX = segment : décalage des données
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = octets transférés
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction transfère les données de contrôle d'un programme d'application directement vers un pilote de périphérique de bloc. La longueur et le contenu des données de contrôle sont spécifiques à chaque pilote de périphérique et ne suivent aucun format standard. Cette fonction ne génère pas nécessairement de sortie sur le périphérique physique.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 06H (0x06) I/O Ctrl --> vérifie l'état d'entrée
Appel avec : AH = 44H
AL = 06H
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et pour un appareil :
AL = 00H, si l'appareil n'est pas prêt
FFH, si l'appareil est prêt
Pour un fichier :
AL = 00H, si le pointeur de fichier est en EOF
FFH, si le pointeur de fichier n'est pas en EOF
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Renvoie un code indiquant si le périphérique ou les fichiers associés à un handle sont prêts pour la saisie.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 07H (0x07) I/O Ctrl --> contrôle l'état de sortie
Appel avec : AH = 44H
AL = 07H
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et pour un appareil :
AL = 00H, si l'appareil n'est pas prêt
FFH, si l'appareil est prêt
Pour un fichier :
AL = FFH
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Renvoie un code indiquant si le périphérique associé à un handle est prêt pour la sortie.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 08H (0x08) I/O Ctrl --> vérifie si le périphérique de bloc est amovible
Appel avec : AH = 44H
AL = 08H
BL = numéro d'unité (0 = par défaut, 1=A, 2=B, etc.)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AL = 00H, si le support est amovible
01H, si le support n'est pas amovible
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction vérifie si le périphérique de bloc spécifié contient un support de stockage amovible, tel qu'une disquette. Si un fichier n'est pas trouvé comme prévu sur un lecteur spécifique, un programme peut utiliser cette sous-fonction pour déterminer si l'utilisateur doit être invité à insérer un autre disque.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 09H (0x09) I/O Ctrl --> vérifie si le périphérique de bloc est distant
Appel avec : AH = 44H
AL = 09H
BL = numéro d'unité (0 = par défaut, 1=A, 2=B, etc.)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
DX = mot d'attribut du périphérique
bit 12 = 0, si l'unité est locale
= 1, si l'unité est distante
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction vérifie si le périphérique de bloc spécifié est local (attaché à l'ordinateur exécutant le programme) ou distant (redirigé vers un serveur réseau).
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 0AH (0x0A ou 10) I/O Ctrl --> vérifie si le handle est distant
Appel avec : AH = 44H
AL = 0AH
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
DX = mot d'attribut pour le fichier ou le périphérique
bit 15 = 0 si local
1 si à distance
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Vérifie si le handle spécifié fait référence à un fichier ou un périphérique local (situé sur le PC exécutant le programme) ou distant (situé sur un serveur réseau).
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), sous-fonction 0BH (0x0B ou 11) Ctrl E/S --> modifier le nombre de tentatives de partage
Appel avec : AH = 44H
AL = 0BH
CX = délais par tentative (par défaut = 1)
DX = nombre de tentatives (par défaut = 3)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction définit le nombre de fois que MS-DOS réessaye une opération sur le disque après une erreur provoquée par une violation de partage de fichiers avant de renvoyer une erreur au processus demandeur. Cette sous-fonction n'est pas disponible à moins que le module de partage de fichiers ne soit chargé.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 0CH (0x0C ou 12) Contrôle E/S contrôle E/S générique pour les périphériques de caractères
Appel avec : AH = 44H
AL = 0CH
BX = poignée
CH = code catégorie (principal) :
00H = inconnu
01H = COM1, COM2, COM3 OU COM4
03H = AVEC (clavier et écran)
05H = LPT1, LPT2 ou LPT3
CL = code fonction (mineur) :
45H = Définir le nombre d'itérations
4AH = Sélectionner la page de codes
4CH = Commencer à préparer la page de code
4DH = Fin de la préparation de la page de code
5FH = Définir les informations d'affichage
65H = Obtenir le nombre d'itérations
6AH = Interroger le code de la page sélectionnée
6BH = Liste de préparation de requête
7FH = Obtenir des informations sur l'affichage
DS : DX = segment : décalage du bloc de paramètres
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et si appelé avec CL = 65H, 6AH, 6BH ou 7FH
DS : DX = segment : décalage du bloc de paramètres
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Fournit un mécanisme à usage général pour la communication entre les programmes d'application et les pilotes de périphériques de caractères.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 0DH (0x0D ou 13) Contrôle E/S --> Contrôle E/S générique pour les périphériques en mode bloc
Appel avec : AH = 44H
AL = 0DH
BL = code unité (0 = par défaut, 1 = A, 2 = B, etc.)
CH = code catégorie (principal) :
08H = lecteur de disque
CL = code fonction (mineur) :
40H = Définir les paramètres de l'unité
41H = Écrire une piste
42H = Formater et vérifier la piste
47H = Définir l'indicateur d'accès
60H = Obtenir les paramètres de l'appareil
61H = Lire la piste
62H = Vérifier la piste
67H = Obtenir le drapeau d'accès
DS : DX = segment : décalage du bloc de paramètres
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et si appelé avec CL = 60H ou 61H
DS : DX = segment : décalage du bloc de paramètres
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction fournit un mécanisme à usage général pour la communication entre les programmes d'application et les pilotes de périphériques en mode bloc. Permet à un programme d'inspecter ou de modifier les paramètres du périphérique pour un lecteur logique et de lire, d'écrire, de formater et de vérifier les pistes de disque de manière indépendante du matériel.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 0EH (0x0E ou 14) Ctrl E/S -->> Obtenir la carte du lecteur logique
Appel avec : AH = 44H
AL = 0EH
BL = code unité (0 = par défaut, 1=A, 2=B, etc.)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AL = code de mappage
00H, s'il n'y a qu'un seul code d'unité logique
attribué au périphérique de bloc
Code unité logique 01H-1AH (1=A,
2=B, etc.) mappé sur le périphérique de bloc
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Renvoie le code du lecteur logique le plus récemment utilisé pour accéder au lecteur de bloc spécifié.
INTERNE 21H (0x21)
Fonction 44H (0x44 ou 68), Sous-fonction 0FH (0x0F ou 15) Ctrl E/S --> définir la carte du lecteur logique
Appel avec : AH = 44H
AL = 0FH
BL = code unité (0 = par défaut, 1=A, 2=B, etc.)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AL = code de mappage
00H, s'il n'y a qu'un seul code d'unité logique
attribué au périphérique de bloc
01H-1AH, code d'unité logique (1=A,
2=B, etc.) mappés sur le
périphérique de blocage
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction définit le code de la prochaine unité logique qui sera utilisée pour faire référence à un périphérique de bloc.
INTERNE 21H (0x21)
Fonction 45H (0x45 ou 69) --> Dupliquer le handle
Appel avec : AH = 45H
BX = handle à dupliquer
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = nouvelle poignée
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction renvoie un nouveau handle qui fait référence au même périphérique ou fichier au même emplacement que le handle spécifié pour un périphérique ou un fichier actuellement ouvert.
INTERNE 21H (0x21)
Fonction 46H (0x46 ou 70) --> Gestionnaire de redirection
Appel avec : AH = 46H
BX = handle vers le fichier ou le périphérique
CX = handle à rediriger
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
S'il existe deux handles de données, cette fonction fait en sorte que le deuxième handle fasse référence au même périphérique ou fichier au même emplacement que le premier handle. On dit alors que le deuxième handle est redirigé.
INTERNE 21H (0x21)
Fonction 47H (0x47 ou 71) --> Obtenir le répertoire courant
Appel avec : AH = 47H
DL = code unité (0 = par défaut, 1 = A,
2=B, etc.)
DS : SI = segment : décalage de tampon de 64 octets
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et le tampon est rempli avec le chemin complet à partir de la racine du répertoire actuel.
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction obtient une chaîne ASCIIZ décrivant le chemin de la racine au répertoire actuel et le nom de ce répertoire.
INTERNE 21H (0x21)
Fonction 48H (0x48 ou 72) --> Affecter un bloc mémoire
Appel avec : AH = 48H
BX = nombre de paragraphes de mémoire
nécessaire
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Ax = adresse du segment de base assigné
bloc
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
BX = la plus grande taille de bloc disponible
(paragraphes)
Commentaires:
Alloue un bloc de mémoire et renvoie un pointeur vers le début de la zone allouée.
INTERNE 21H (0x21)
Fonction 49H (0x49 ou 73) --> Libérer le bloc mémoire
Appel avec : AH = 49H
ES = segment de bloc à libérer
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction permet de libérer un bloc de mémoire et de le rendre disponible à l'utilisation par d'autres programmes. La fonction échouera ou peut provoquer des erreurs système imprévisibles si le programme libère un bloc de mémoire qui ne lui appartient pas ou si l'adresse de segment transmise au registre ES n'est pas une adresse de base valide pour un bloc de mémoire existant.
INTERNE 21H (0x21)
Fonction 4AH (0x4A ou 74) --> Redimensionner le bloc mémoire
Appel avec : AH = 4AH
BX = nouvelle taille de bloc souhaitée en paragraphes
ES = segment de bloc à modifier
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
BX = taille maximale du bloc disponible
(paragraphes)
Commentaires:
Cette fonction réduit ou étend dynamiquement un bloc de mémoire, en fonction des besoins d'un programme d'application.
INTERNE 21H (0x21)
Fonction 4BH (0x4B ou 75) --> Exécuter le programme (EXEC)
Appel avec : AH = 4BH
AL = sous-fonction
00H = Charger et exécuter le programme
03H = Chevauchement de charge
ES : BX = segment : décalage du bloc de paramètres
DS : DX = segment : décalage du programme ASCIIZ
nom du chemin
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Les registres sont conservés de la manière habituelle.
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonctionnalité permet à un programme d'application d'exécuter un autre programme et d'en reprendre le contrôle une fois terminé. Il peut également être utilisé pour charger des superpositions, bien que cette utilisation soit rare.
INTERNE 21H (0x21)
Fonction 4CH (0x4C ou 76) --> Terminer le processus avec le code de retour
Appel avec : AH = 4CH
AL = code de retour
Retours : Rien
Commentaires:
Cette fonction termine le processus en cours, en transmettant un code de retour au processus parent. Il s’agit de l’une des nombreuses méthodes qu’un programme peut utiliser pour effectuer une sortie finale.
INTERNE 21H (0x21)
Fonction 4DH (0x4D ou 77) --> Obtenir le code de retour
Appel avec : AH = 4DH
Renvoie : AH = type de sortie
00H, si terminaison normale via INT 20H, INT 21H
Fonction 00H ou INT 21H Fonctions 4CH
01H si terminaison via l'utilisateur Ctrl-C
02H si terminaison via le gestionnaire d'erreurs critiques
03H si terminaison via INT21H Fonction 31H ou
INT 27H |
AL = code de retour transmis par le processus enfant
(0 si l'enfant a été interrompu avant INT 20H,
INT 21H Fonction 00H, ou INT 27H)
Commentaires:
Cette fonction est utilisée par un processus parent, après un appel EXEC réussi (INT 21H Fonction 4BH), pour obtenir le code de retour et le type de terminaison d'un processus enfant.
INTERNE 21H (0x21)
Fonction 4EH (0x4E ou 78) --> Rechercher le premier fichier
Appel avec : AH = 4EH
CX = attribut de recherche (les bits peuvent être combinés)
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit et que le fichier correspondant est trouvé
Compagnie aérienne nationale = gratuit
Et les résultats de la recherche renvoyés dans la zone de transfert de disque actuelle sont les suivants :
Changement(s) |
Description |
de 00h00 à 14h00 |
Réservé (0) |
15h00 |
Attribut du fichier ou du répertoire correspondant |
de 16h à 17h |
Heure du fichier bits
00H-04H = incréments de 2 secondes (0-29)
bits 05H-0AH = minutes (0-59)
bits 0BH-0FH = heures (0-23) |
de 18h à 19h
|
Fichier de données
bit 00H-04H = jour (1-31)
bit 05H-08H = mois (1-12)
bit 09H-0FH = année (par rapport à 1980) |
1AH-1DH |
Taille du fichier |
1EH-2AH |
Nom et extension du fichier ASCIIZ |
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction recherche dans le répertoire par défaut ou spécifié sur le lecteur par défaut ou spécifié le premier fichier correspondant à une spécification de fichier donnée sous forme de chaîne ASCIIZ. Pour connaître la signification des bits des attributs, reportez-vous au tableau de signification des bits fourni ci-dessus.
INTERNE 21H (0x21)
Fonction 4FH (0x4F ou 79) --> Rechercher le fichier suivant
Appel avec : AH = 4FH
Renvoie : si la fonction réussit et que le fichier correspondant est trouvé
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
S'il existe un appel réussi antérieur à la fonction INT 21H 4EH, cette fonction recherche le fichier suivant dans le répertoire par défaut ou spécifié sur le lecteur par défaut ou spécifié qui correspond à la spécification du fichier d'origine.
INTERNE 21H (0x21)
Fonction 50H (0x50 ou 80) --> Réservé
INTERNE 21H (0x21)
Fonction 51H (0x51 ou 81) --> Réservé
INTERNE 21H (0x21)
Fonction 52H (0x52 ou 82) --> Réservé
INTERNE 21H (0x21)
Fonction 53H (0x53 ou 83) --> Réservé
INTERNE 21H (0x21)
Fonction 54H (0x54 ou 84) --> Obtenir l'indicateur de vérification
Appel avec : AH = 54H
Renvoie : AL = valeur de l'indicateur de contrôle actuel
00H si la vérification est désactivée
01H s'il vérifie
Commentaires:
Cette fonction obtient la valeur actuelle de l'indicateur de vérification du système (lecture après écriture).
INTERNE 21H (0x21)
Fonction 55H (0x55 ou 85) --> Réservé
INTERNE 21H (0x21)
Fonction 56H (0x56 ou 86) --> Renommer le fichier
Appel avec : AH = 56H
DS : DX = segment : décalage de l'ASCIIZ actuel
nom du chemin
ES : DI = segment : décalage du nouveau ASCIIZ
nom du chemin
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction renomme un fichier et/ou déplace son entrée de répertoire vers un autre sur le même disque. Dans les versions MS-DOS 3.0 et ultérieures, cette fonction peut également être utilisée pour renommer des répertoires.
Si un élément de chemin n'existe pas, ou si un fichier avec le nouveau chemin existe déjà, ou si la spécification de chemin actuelle contient un lecteur de disque autre que le nouveau chemin, ou si le fichier est déplacé vers le répertoire racine et que le répertoire racine est plein, ou si l'utilisateur ne dispose pas de droits suffisants, la fonction de renommage de fichier échoue.
INTERNE 21H (0x21)
Fonction 57H (0x57 ou 87) --> Obtenir ou définir la date et l'heure du fichier
Appelez avec : Si vous souhaitez obtenir la date et l'heure
AH = 57H
AL = 00H
BX = poignée
Si vous définissez la date et l'heure
AH = 57H
AL = 01H
BX = poignée
CX = temps
bits 00H-04H = incréments de 2 secondes (0-29)
bits 05H-0AH = minutes (0-59)
bit 0BH-0FH = heures (0-23)
DX = date
bit 00H-04H = jour (1-31)
bit 05H-08H = mois (1-12)
bit 09H-0FH = année (par rapport à 1980)
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
et, si appelé avec AL = 00H
CX = temps
DX = date
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction obtient ou modifie la date et l'heure dans l'entrée du répertoire racine du fichier.
INTERNE 21H (0x21)
Fonction 58H (0x58 ou 88) --> Obtenir ou définir la stratégie d'allocation
Appelez avec : Si vous obtenez le code de stratégie
AH = 58H
AL = 00H
Si vous définissez le code de stratégie
AH = 58H
AL = 01H
BX = code de stratégie souhaité
00H = première mesure
01H = meilleur ajustement
02H = dernière mesure
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
et, si appelé avec AL = 00H
AX = code de stratégie actuel
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Obtient ou modifie le code indiquant la stratégie MS-DOS actuelle pour l'allocation de blocs de mémoire. La stratégie d'allocation de mémoire MS-DOS par défaut est First Fit (code 0).
Lors de la première allocation de mémoire, MS-DOS recherche les blocs de mémoire disponibles de l'adresse la plus basse à l'adresse la plus élevée, en attribuant au premier bloc une taille suffisamment grande pour satisfaire la demande d'allocation de bloc.
Dans le cas de la stratégie d'allocation optimale, MS-DOS recherche tous les blocs de mémoire disponibles et alloue le plus petit bloc disponible qui satisfera la demande, quel que soit son emplacement.
Dans la stratégie d'allocation de mémoire Last Fit, MS-DOS recherche les blocs de mémoire disponibles des adresses les plus hautes aux plus basses, en attribuant la plus élevée suffisamment grande pour satisfaire la demande d'allocation de bloc.
INTERNE 21H (0x21)
Fonction 59H (0x59 ou 89) --> Obtenir des informations d'erreur étendues
Appel avec : AH = 59H
BX = 00H
Renvoie : AX = code d'erreur étendu
Vous trouverez ci-dessous le tableau des codes d'erreur :
Code d'erreur |
Erreur |
01H |
Numéro de fonction invalide |
02h00 |
fichier introuvable |
03h00 |
chemin non trouvé |
04h00 |
trop de fichiers ouverts |
05h00 |
Accès refusé |
06h00 |
poignée invalide |
07h00 |
blocs de contrôle de mémoire détruits |
08h00 |
mémoire insuffisante |
09h00 |
Adresse de bloc de mémoire non valide |
0AH (10) |
environnement invalide |
0BH (11) |
Format invalide |
0CH (12) |
Code d'accès invalide |
0D (13) |
Données invalides |
0EH (14) |
unité inconnue |
0FH (15) |
Lecteur de disque non valide |
10 heures (16) |
tentative de suppression du répertoire actuel |
11 heures (17) |
ce n'est pas le même appareil |
12 heures (18) |
il n'y a plus de fichiers |
13 heures (19) |
disque protégé en écriture |
14 heures (20) |
unité inconnue |
15 heures (21) |
unité non prête |
16 heures (22) |
commande inconnue |
17 heures (23) |
erreur de données (CRC) |
18 heures (24) |
Longueur de la structure de la demande non valide |
19 heures (25) |
erreur de recherche |
1 AH (26) |
type de média inconnu |
1 chambre (27) |
secteur non trouvé |
1 canal (28) |
imprimante sans papier |
1D (29) |
erreur de frappe |
1E (30) |
erreur de lecture |
1FH (31) |
échec général |
20 heures (32) |
violation de partage |
21 heures (33) |
violation de blocage |
22 heures (34) |
Changement de disque invalide |
23 heures (35) |
FCB non disponible |
24 heures (36) |
tampon de partage dépassé |
du 25 au 31 |
réservé |
32 heures (50) |
demande réseau non prise en charge |
33 heures (51) |
la machine distante n'écoute pas |
34 heures (52) |
nom en double sur le réseau |
35 heures (53) |
nom de réseau non trouvé |
36 heures (54) |
réseau occupé |
37 heures (55) |
L'appareil n'existe plus sur le réseau |
38 heures (56) |
limite de commande du BIOS net dépassée |
39 heures (57) |
erreur matérielle de la carte réseau |
3 AH (58) |
mauvaise réponse du réseau |
3BH (59) |
erreur réseau inattendue |
3 canaux (60) |
Adaptateur de télécommande incompatible |
3D (61) |
file d'attente d'impression pleine |
3EH (62) |
Il n'y a pas assez d'espace pour le fichier d'impression |
3FH (63) |
fichier d'impression annulé |
40 heures (64) |
nom du réseau supprimé |
41 heures (65) |
accès au réseau refusé |
42 heures (66) |
Type de périphérique réseau incorrect |
43 heures (67) |
nom de réseau non trouvé |
44 heures (68) |
Limite de nom de réseau dépassée |
45 heures (69) |
Limite de session du BIOS réseau dépassée |
46 heures (70) |
Partage de fichiers temporairement suspendu |
47 heures (71) |
demande de réseau non acceptée |
48 heures (72) |
imprimer ou rediriger le disque en pause |
49H-4FH |
réservé |
50 heures (80) |
le fichier existe déjà |
51 heures (81) |
réservé |
52 heures (82) |
Impossible de créer le répertoire |
53 heures (83) |
erreur sur INT 24H (erreur critique) |
54 heures (84) |
trop de redirections |
55 heures (85) |
redirection en double |
56 heures (86) |
Mot de passe invalide |
57 heures (87) |
Paramètre invalide |
58 heures (88) |
panne du périphérique réseau |
59 heures (89) |
fonction non prise en charge par le réseau |
5AH (90) |
composant système requis non installé |
BH = classe d'erreur
01H |
si vous manquez de ressources (par exemple, d'espace de stockage ou de poignées) |
02h00 |
s'il ne s'agit pas d'une erreur, mais d'une situation temporaire (par exemple une région verrouillée dans le fichier) à laquelle on peut s'attendre à la fin |
03h00 |
si problème d'autorisation |
04h00 |
si erreur interne dans le logiciel système |
05h00 |
en cas de panne matérielle |
06h00 |
si la défaillance du logiciel système n'est pas la faute du processus actif (par exemple, fichiers de configuration manquants) |
07h00 |
si erreur du programme d'application |
08h00 |
si le fichier ou l'élément n'a pas été trouvé |
09h00 |
si le fichier ou l'élément est d'un type ou d'un format non valide |
0AH (10) |
si le fichier ou l'élément est verrouillé |
0BH (11) |
si le mauvais disque est dans le lecteur, un mauvais emplacement sur le disque ou un problème avec le support de stockage |
0CH (12) |
si l'article existe déjà |
0D (13) |
erreur inconnue |
BL = action recommandée
01H |
Réessayez un nombre raisonnable de fois, puis demandez à l'utilisateur de sélectionner Annuler ou Ignorer |
02h00 |
réessayez un nombre raisonnable de fois avec un délai entre les tentatives, puis demandez à l'utilisateur de sélectionner Annuler ou Ignorer |
03h00 |
obtenir des informations incorrectes de la part de l'utilisateur (généralement en raison d'un nom de fichier ou d'une spécification de périphérique incorrect) |
04h00 |
tuer l'application en la nettoyant (c'est-à-dire terminer le programme de la manière la plus ordonnée possible : libérer les verrous, fermer les fichiers, etc.) |
05h00 |
effectuer une sortie immédiate sans nettoyage |
06h00 |
ignorer l'erreur |
07h00 |
réessayer après l'intervention de l'utilisateur pour supprimer la cause de l'erreur |
CH = emplacement de l'erreur
01H inconnu
Périphérique de bloc 02H (disque ou émulateur de disque)
Réseau 03H
Appareil série 04H
Mémoire 05H
ES : DI = nom de volume ASCIIZ du disque
entrer, si AX = 0022H (changement de disque invalide)
Commentaires:
Cette fonction obtient des informations d'erreur détaillées après un appel de fonction INT 21H ayant échoué précédemment, y compris les mesures correctives recommandées.
INTERNE 21H (0x21)
Fonction 5AH (0x5A ou 90) --> Créer un fichier temporaire
Appel avec : AH = 5AH
CX = attribut (les bits peuvent être combinés)
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = poignée
DS : DX = segment : décalage ASCIIZ complet
nom du chemin
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction crée un fichier avec un nom unique, dans le répertoire courant ou spécifié sur le disque dur par défaut ou spécifié, et renvoie un handle qui peut être utilisé par le programme pour un accès ultérieur au fichier. Le nom généré pour le fichier est également renvoyé dans un tampon spécifié par le programme.
Si un élément de chemin n'existe pas ou si le fichier est créé dans le répertoire racine et que le répertoire racine est plein, la fonction échoue.
INTERNE 21H (0x21)
Fonction 5BH (0x5B ou 91) --> Créer un nouveau fichier
Appel avec : AH = 5BH
CX = attribut (les bits peuvent être combinés)
DS : DX = segment : décalage de chemin ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
AX = poignée
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction crée un fichier dans le répertoire désigné ou par défaut sur le lecteur désigné ou par défaut et renvoie un handle qui peut être utilisé par le programme pour un accès ultérieur au fichier pour un chemin ASCIIZ donné.
Si un fichier portant le même nom et le même chemin existe déjà, ou si un élément du chemin spécifié n'existe pas, ou si le fichier est créé dans le répertoire racine et que le répertoire racine est plein, ou si l'utilisateur ne dispose pas de droits d'accès suffisants, la fonction échoue.
INTERNE 21H (0x21)
Fonction 5CH (0x5C ou 92) --> Verrouiller ou déverrouiller la région du fichier
Appel avec : AH = 5CH
AL = 00H si région de bloc
01H si région déverrouillée
BX = poignée
CX = décalage de la partie supérieure de la région
DX = décalage de la partie inférieure de la région
SI = partie supérieure de la longueur de la région
DI = partie inférieure de la longueur de la région
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction verrouille ou déverrouille la région spécifiée d'un fichier. Cette fonctionnalité n'est pas disponible à moins que le module de partage de fichiers (par exemple SHARE.EXE) ne soit chargé.
INTERNE 21H (0x21)
Fonction 5DH (0x5D ou 93) --> Réservé
INTERNE 21H (0x21)
Fonction 5EH (0x5E ou 94), sous-fonction 00H (0x00) --> Obtenir le nom de la machine
Appel avec : AH = 5EH
AL = 00H
DS : DX = segment : décalage du tampon à recevoir
corde
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
CH = 00H si le nom n'est pas défini
<> 00H si le nom est défini
CL = numéro de nom netBIOS (si CH <> 0)
DX : DX = segment : décalage de l'identifiant (si CH <> 0)
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction renvoie l'adresse d'une chaîne ASCIIZ qui identifie l'ordinateur local. Cet appel de fonction n'est disponible que lorsque Microsoft Network est en cours d'exécution.
INTERNE 21H (0x21)
Fonction 5EH (0x5E ou 94), sous-fonction 02H (0x02) --> Définir la chaîne de configuration de l'imprimante
Appel avec : AH = 5EH
AL = 02H
BX = index de la liste de redirection
CX = longueur de la chaîne d'installation
DS : SI = segment : décalage de la chaîne de réglage
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction spécifie une chaîne à envoyer avant tous les fichiers adressés à une imprimante réseau particulière, permettant aux utilisateurs sur différents nœuds de réseau de spécifier des modes de fonctionnement personnalisés sur la même imprimante.
INTERNE 21H (0x21)
Fonction 5EH (0x5E ou 94), sous-fonction 03H (0x03) --> Obtenir la chaîne de configuration de l'imprimante
Appel avec : AH = 5EH
AL = 03H
BX = index de la liste de redirection
EX : DI = segment : décalage du tampon à recevoir
chaîne de configuration
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
CX = longueur de la chaîne de configuration de l'imprimante
EX : DI = segment : décalage du tampon à recevoir
chaîne de configuration
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction est utilisée pour obtenir la chaîne de configuration de l'imprimante pour une imprimante réseau particulière.
INTERNE 21H (0x21)
Fonction 5FH (0x5F ou 95), sous-fonction 02H (0x02) --> Obtenir l'entrée de la liste de redirection
Appel avec : AH = 5FH
AL = 02H
BX = index de la liste de redirection
DS : SI = segment : décalage de tampon de 16 octets vers
obtenir le nom de l'appareil local
ES : DI = segment : décalage de tampon de 128 octets à
obtenir le nom du réseau
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
BH = indicateur d'état de l'appareil
Bit 0 = 0 si l'appareil est valide
= 1 si invalide
BL = type d'appareil
03H, si l'imprimante
04H, si vous conduisez
CX = valeur du paramètre stocké
DX = détruit
BP = détruit
DS : OUI = segment : décalage des paramètres régionaux ASCIIZ
nom de l'appareil
ES : DI = segment : décalage réseau ASCIIZ
nom
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction permet d'inspecter la liste de redirection du système, qui mappe les noms logiques locaux aux fichiers, répertoires ou imprimantes réseau. Cet appel de fonction n'est disponible que lorsque Microsoft Networks est en cours d'exécution et que le module Partage de fichiers a été chargé.
INTERNE 21H (0x21)
Fonction 5FH (0x5F ou 95), sous-fonction 03H (0x03) --> Redirection de périphérique
Appel avec : AH = 5FH
AL = 03H
BL = type d'appareil
03H, si l'imprimante
04H, si vous conduisez
DS : OUI = segment : décalage des paramètres régionaux ASCIIZ
nom de l'appareil
ES : DI = segment : décalage réseau ASCIIZ
nom, suivi du mot de passe ASCIIZ
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Établit une redirection sur le réseau en associant un nom de périphérique local à un nom de réseau. Cet appel de fonction n'est disponible que lorsque Microsoft Networks est en cours d'exécution et que le module de partage de fichiers (SHARE.EXE) a été chargé.
INTERNE 21H (0x21)
Fonction 5FH (0x5F ou 95), sous-fonction 04H (0x04) --> Annuler la redirection de l'appareil
Appel avec : AH = 5FH
AL = 04H
DS : OUI = segment : décalage des paramètres régionaux ASCIIZ
nom de l'appareil
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette sous-fonction annule une demande de redirection précédente en supprimant l'association d'un nom de périphérique local avec un nom de réseau. Cet appel de fonction n'est disponible que lorsque Microsoft Networks est en cours d'exécution et que le module de partage de fichiers tel que SHARE.EXE a été chargé.
INTERNE 21H (0x21)
Fonction 60H (0x60 ou 96) --> Réservé
INTERNE 21H (0x21)
Fonction 61H (0x61 ou 97) --> Réservé
INTERNE 21H (0x21)
Fonction 62H (0x62 ou 98) --> Obtenir l'adresse du préfixe du segment de programme (PSP)
Appel avec : AH = 62H
Renvoie : BX = adresse du segment de programme
préfixe
Commentaires:
Cette fonction obtient l'adresse du segment (paragraphe) du préfixe de segment de programme (PSP) pour le programme en cours d'exécution.
INTERNE 21H (0x21)
Fonction 64H (0x64 ou 100) --> Réservé
INT 21H
Fonction 65H (0x65 ou 101) --> Obtenir des informations étendues sur le pays
Appel avec : AH = 65H
AL = sous-fonction
00H = Obtenir des informations générales
À propos de l’internationalisation
02H = Obtenir le curseur en majuscules
Tableau
04H = Obtenir le pointeur vers le nom du fichier
Tableau des majuscules
06H = Obtenir un pointeur vers la table de classement
07H = Obtenir un pointeur à double octet
Vecteur de jeu de caractères (DBCS)
BX = page de codes d'intérêt (-1 = active
Appareil AVEC)
CX = longueur du tampon à recevoir
information (doit être >=5)
DX = ID du pays (-1 = par défaut)
EX : DI = adresse du tampon à recevoir
information
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et les données demandées sont insérées dans le tampon du programme appelant.
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cela permet d'obtenir des informations sur le pays et/ou la page de codes spécifiés. Veuillez vous référer au tableau d'internationalisation fourni ci-dessus pour connaître les octets d'informations.
INTERNE 21H (0x21)
Fonction 66H (0x66 ou 102) --> Obtenir ou définir la page de codes
Appel avec : AH = 66H
AL = sous-fonction
01H = Obtenir la page de codes
02H = Sélectionner la page de codes
BX = page de codes à sélectionner, si AL = 02H
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Et, si appelé avec AL = 01H
BX = page de codes active
DX = page de codes par défaut
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction obtient ou sélectionne la page de codes actuelle.
INTERNE 21H (0x21)
Fonction 67H (0x67 ou 103) --> Définir le nombre de handles
Appel avec : AH = 67H
BX = nombre de poignées souhaitées
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction définit le nombre maximal de fichiers et de périphériques qui peuvent être ouverts simultanément à l'aide des handles du processus en cours.
INTERNE 21H (0x21)
Fonction 68H (0x68 ou 104) --> Fichier de validation
Appel avec : AH = 68H
BX = poignée
Renvoie : si la fonction réussit
Compagnie aérienne nationale = gratuit
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction force toutes les données des tampons internes MS DOS associés à un handle spécifié à être écrites physiquement sur le périphérique. Si le handle fait référence à un fichier et que le fichier a été modifié, l'horodatage, la date et la taille du fichier dans l'entrée du répertoire racine du fichier sont mis à jour.
INTERNE 21H (0x21)
Fonction 69H (0x69 ou 105) --> Réservé
INTERNE 21H (0x21)
Fonction 6AH (0x6A ou 106) --> Réservé
INTERNE 21H (0x21)
Fonction 6BH (0x6B ou 107) --> Réservé
INTERNE 21H (0x21)
Fonction 6CH (0x6C ou 108) --> Fichier ouvert étendu
Appelé depuis : AH = 6CH
AL = 00N
BX = mode ouvert
Page(s) |
Sens |
0-2 |
Type d'accès
000 = Lecture seule
001 = Écriture seule
010 = Lecture/écriture |
3 |
Réservé (0) |
4-6 |
Mode public
000 = Compatibilité
001 = Refuser la lecture/écriture (refuser tout)
010 = Refuser l'écriture
011 = Refuser la lecture
100 = Ne rien refuser |
7 |
Héritage
0 = le processus enfant hérite du handle
1 = le processus enfant n'hérite pas du handle |
8-12 |
Réservé (0) |
13 |
Gestion des erreurs critiques
0 = Exécuter INT 24H
1 = Renvoyer l'erreur au processus |
14 |
Écriture directe
0 = les écritures peuvent être mises en mémoire tampon et différées
1 = écritures physiques au moment de la demande |
15 |
Réservé (0) |
CX = attribut de fichier (les bits peuvent être combinés ;
si ignoré, si ouvert, reportez-vous au tableau de signification des bits .
DX = drapeau ouvert
Page(s) |
Sens |
0-3 |
Action si le fichier existe
0000 = erreur
0001 = ouvrir le fichier
0010 = remplacer le fichier |
4-7 |
Action si le fichier n'existe pas
0000 = erreur
0001 = créer le fichier |
8-15 |
Réservé (0) |
DS:SI = segment:décalage du chemin ASCIIZ
Renvoie : mSi la fonction réussit
Compagnie aérienne nationale = gratuit
HACHE = manche
CX = action entreprise
1 = le fichier existait et était
ouvrir
2 = le fichier n'existe pas et
il a été créé
3 = le fichier existait et était
remplacé
Si la fonction échoue
Porte-drapeau = ensemble
AX = code d'erreur
Commentaires:
Cette fonction ouvre, crée ou remplace un fichier dans le répertoire spécifié ou par défaut sur le lecteur spécifié ou par défaut pour le chemin ASCIIZ spécifié et renvoie un handle que le programme peut utiliser pour accéder ultérieurement au fichier.
Si un élément du chemin n'existe pas, ou si le fichier est créé dans le répertoire racine et qu'il est plein, ou si le fichier est créé et qu'un fichier portant le même nom et l'attribut de lecture seule existe déjà dans le répertoire spécifié, ou si l'utilisateur ne dispose pas de droits d'accès suffisants, la fonction échoue.