Interruption 21h |
Fonction 62h |
Lecture de l'adresse du PSP |
---|---|---|
DOS 3.0+, OS/2, Windows NT |
Description
Cette fonction permet d'effectuer la lecture de l'adresse du PSP.
Entrée
Registre | Valeur ou description |
---|---|
AH | 62h |
Sortie
Registre | Valeur ou description | ||
---|---|---|---|
BX | Ce registre permet d'indiquer l'adresse de segment du PSP. Voici la structure d'un PSP (Prefix Segment Program) : | ||
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 la 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 est 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 |
Remarques
- Dans le langage évolué comme Pascal, les compilateurs QuickPascal de Microsoft, Turbo Pascal et Borland Pascal mettent l'adresse du PSP dans la variable PrefixSeg de l'unité SYSTEM au lancement du programme; il est donc inutile d'appeler cette fonction.
- A partir de la version 3 du système d'exploitation DOS, on peut trouver le nom du programme après le code ASCII 0 de fin d'environnement. Voici un
exemple de programme écrit en Turbo Pascal 7 permettant de connaître le chemin complet du programme auquel appartient le PSP :
- Avant qu'un programme reçoive le contrôle du système d'exploitation DOS, son préfixe de segment de programme est configuré pour contenir certaines informations vitales, telles que : l'adresse de segment du bloc d'environnement du programme, la ligne de commande initialement entrée par l'utilisateur, le contenu d'origine des vecteurs de gestion des terminaisons, la combinaison de touches Ctrl+C et des erreurs critiques et l'adresse supérieure de la mémoire RAM disponible.
- L'adresse de segment du PSP est normalement transmise au programme dans les registres DS et ES lorsqu'il reçoit initialement le contrôle du système d'exploitation DOS.
- Cette fonction permet à un programme de récupérer facilement l'adresse PSP à tout moment pendant son exécution, sans avoir à l'enregistrer à l'entrée du programme.
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 293.
Dernière mise à jour : Jeudi, le 3 mars 2016