Interruption 21h |
Fonction 00h |
Mettre fin au programme |
---|---|---|
CP/M, DOS 1.0.+, OS/2, Windows NT |
Description
Cette fonction permet de mettre fin à l'exécution d'un programme de façon normal. Pour y arriver il prend soit de restaurer les adresses des interruptions contenu dans les champs de l'interruption 22h, 23h et 24h et de vider les tampons et tous les processus relié à l'application en cours. Ainsi, le système d'exploitation DOS effectue les actions suivantes : toute la mémoire appartenant au processus est libérée, les tampons de fichiers sont vidés et tous les descripteurs ouverts pour les fichiers ou les périphériques appartiennent au processus sont fermés, le vecteur du gestionnaire de terminaison (Interruption 22h) est restauré à partir de PSP:000Ah, le vecteur du gestionnaire Ctrl+C (Interruption 23h) est restauré à partir de PSP:000Eh, le vecteur de gestionnaire d'erreur critique (Interruption 24h) est restauré à partir de PSP:0012h, le contrôle est transféré au gestionnaire de terminaison et enfin si le programme revient à l'interpréteur de commande COMMAND.COM, il contrôle les transferts vers la partie résidente et la partie transitoire est rechargée si nécessaire. Si un fichier de traitement par lot est en cours, la ligne suivante du fichier est récupérée et interprétée; sinon, une prompt d'interpréteur de commande est émise pour la commande utilisateur suivante.
Entrée
Registre | Valeur ou description |
---|---|
AH | 00h |
CS | Ce registre permet d'indiquer l'adresse de segment du PSP |
Sortie
Aucune
Remarques
- Dans un programme de format «.COM» le code segment du programme est le même que le PSP, mais dans un programme de format «.EXE» il toutefois beaucoup plus complexe voir impossible d'appeler cette fonction puisqu'il faut qu'il soit appeler dans le premier segment du code du programme.
- Cette fonction effectue la même opération que l'Interruption 20h.
- Cette fonction ne restaure l'Interruption 24h qu'à partir de la version 2 du système d'exploitation DOS.
- ATTENTION ! Vous devez vous assurez que les fichiers utilisant les FCB doivent être fermé avant l'appel de cette fonction.
- Voici la structure de données d'un PSP (Prefix Segment Program) qu'utilise cette fonction :
Déplacement Longueur Description 00h 2 octets Ce champ contient l'instruction assembleur «INT 20h» (DB 0CDh,20h) 02h 2 octets Ce champ contient l'adresse du dernier segment alloué au programme 04h 1 octet Ce champ est réservé pour un usage interne ou futur 05h 5 octets Ce champ contient l'instruction d'appel de l'interruption DOS (INT 21h) 0Ah 4 octets Ce champ contient l'adresse de l'interruption 22h 0Eh 4 octets Ce champ contient l'adresse de l'interruption 23h 12h 4 octets Ce champ contient l'adresse de l'interruption 24h 16h 2 octets Ce champ contient l'adresse de segment du programme parent 18h 20 octets Ce champ contient une table des «Handles» permettant la gestion des fichiers par le système d'exploitation 2Ch 2 octets Ce champ contient une adresse de segment de l'environnement 2Eh 4 octets Ce champ est réservé pour un usage interne ou futur 32h 2 octets Ce champ contient la longueur de la table des «Handles» permettant la gestion des fichiers par le système d'exploitation 34h 4 octets Ce champ contient l'adresse de la table des «Handles» permettant la gestion des fichiers par le système d'exploitation 38h 23 octets Ce champ est réservé pour un usage interne ou futur 50h 3 octets Ce champ contient les instructions assembleur «INT 21h» et «RETF» (DB 0CDh, 021h, 0CBh) 53h 9 octets Ce champ réservé pour un usage interne ou futur 5Ch 16 octets Ce champ contient le premier FCB (File Control Block) nommé aussi FCB1 6Ch 16 octets Ce champ contient le deuxième FCB (File Control Block) nommé aussi FCB2 80h 127 octets Ce champ contient la ligne de commande et la DTA par défaut
Exemples
L'exemple suivant permet de terminer un programme exécutable de format «.COM» :
Références
La Bible du PC: Programmation système - Sixième Edition, Edition Micro-Application, Michael Tischer, 1996, ISBN: 2-7429-0544-8, page 1493.
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 117 à 118.
Quick Reference: Programmer avec les fonctions de MS-DOS, Edition Microsoft PRESS, Ray Duncan, 1991, ISBN: 2-266-04061-8, page 10 à 11.