Interruption 21h |
Fonction 4Bh, Sous-fonction 00h |
Exécute un fichier (EXEC) |
---|---|---|
DOS 2.0+, OS/2, Windows NT |
Description
Cette fonction permet de lancer l'exécution d'un programme enfant.
Entrée
Registre | Valeur ou description | ||
---|---|---|---|
AX | 4B00h | ||
ES:BX | Cette paire de registres permet d'indiquer l'adresse du bloc de paramètre : | ||
Déplacement | Longueur | Description | |
00h à 01h | 2 octets (1 mot) | Ce champ contient l'adresse de segment du bloc d'environnement. | |
02h à 03h | 2 octets (1 mot) | Ce champ contient l'adresse de déplacement des paramètres de commandes. | |
04h à 05h | 2 octets (1 mot) | Ce champ contient l'adresse de segment des paramètres de commandes. | |
06h à 07h | 2 octets (1 mot) | Ce champ contient l'adresse de déplacement du premier FCB. | |
08h à 09h | 2 octets (1 mot) | Ce champ contient l'adresse de segment du premier FCB. | |
0Ah à 0Bh | 2 octets (1 mot) | Ce champ contient l'adresse de déplacement du deuxième FCB. | |
0Ch à 0Dh | 2 octets (1 mot) | Ce champ contient l'adresse de segment du deuxième FCB. | |
DS:DX | Cette paire de registres permet d'indiquer l'adresse du nom de programme sous forme d'une chaîne de caractères ASCIZ. |
Sortie
Registre | Valeur ou description | |||
---|---|---|---|---|
FC | Ce registre de drapeau de retenue permet d'indiquer le résultat de l'opération : | |||
Valeur | Description | |||
0 | Cette valeur permet d'indiquer que l'opération a été un succès | |||
1 | Cette valeur permet d'indiquer une erreur, dans ce cas : | |||
Registre | Description | |||
AX | Ce registre permet d'indiquer le code d'erreur : | |||
Valeur | Description | |||
1 | Cette erreur permet d'indiquer que le numéro de la fonction n'est pas valide | |||
2 | Cette erreur permet d'indiquer que le fichier est introuvable | |||
5 | Cette erreur permet d'indiquer que l'accès est refusé | |||
8 | Cette erreur permet d'indiquer que la mémoire disponible est insuffisante | |||
10 | Cette erreur permet d'indiquer que l'environnement est incorrecte | |||
11 | Cette erreur permet d'indiquer le format est invalide |
Remarques
- Windows NT et OS/2 : Le système d'exploitation Windows NT offre la possibilité de lancer des fichiers exécutables aussi bien du système d'exploitation DOS que des programmes Windows, tandis que le système d'exploitation OS/2 offre uniquement la possibilité de lancer des fichiers exécutables de format DOS et non pas des programmes OS/2. Ainsi, si vous souhaitez lancer des fichiers exécutables OS/2 à partir du DOS, vous devrez plutôt utiliser l'interruption 21h, fonction 64h.
- Avant qu'un programme utilise l'interruption 21h, fonction 4Bh pour exécuter un autre programme, il doit libérer toute la mémoire qu'il n'utilise pas réellement avec un appel à l'interruption 21h, fonction 4Ah, en passant l'adresse de segment de sa propre PSP et le nombre de paragraphes à conserver.
- En règle générale, tous les descripteurs actifs du programme parent sont hérités par le programme enfant, bien que le parent puisse empêcher cette situation dans le DOS 3.0 et les versions ultérieures en définissant le bit d'héritage à l'ouverture du fichier ou du périphérique. Toute redirection de l'entrée et/ou de la sortie standard dans le processus parent affecte également le processus enfant.
- Le bloc d'environnement peut être utilisé pour transmettre des informations au processus enfant. Si le pointeur du bloc d'environnement dans le bloc de paramètres est nul, le programme enfant hérite d'une copie exacte de l'environnement du parent. Dans tous les cas, l'adresse de segment de l'environnement de l'enfant se trouve au déplacement 002Ch dans la PSP de l'enfant.
- Après le retour de l'appel de fonction EXEC, le type de terminaison et le code de retour du programme enfant peuvent être obtenus avec l'interruption 21h, fonction 4Dh.
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 254 à 257.
Dernière mise à jour : Jeudi, le 3 mars 2016