|
 |
PSP - Prefisso del
Segmento di Programma |
SCHEDA n° 05 [
1
di 5] |
 | Il PSP è
un'area di memoria di 256 bytes collocata all'inizio (Prefisso)
del Segmento destinato (dal loader
del dos) ad un Programma eseguibile, nel
momento del suo caricamento in memoria; questa definizione giustifica dunque
il suo nome. |
 | Quando il
Caricatore DOS è chiamato ad allocare in memoria un programma eseguibile riserva per esso
la
prima zona di memoria Ram libera, almeno un intero
segmento (65526 locazioni consecutive), facendole puntare tutti
i registri di segmento, CS,
DS, ES e
SS. |
 | Nelle prime locazioni
di questo segmento, a partire cioè dall'indirizzo di offset
0000H,
predispone comunque
il PSP, una vera miniera di informazioni
destinate alla gestione del programma stesso, ma estremamente utili anche a
noi. |
 | In particolare le prime 92 locazioni, al di sotto dell'offset
005CH, contengono dati gestionali molto importanti, come l'indirizzo a cui verrà ceduto il controllo quando il programma ha termine, gli indirizzi delle
procedure di servizio degli errori critici e della
combinazione di tasti
Ctrl-C, il puntatore alle stringhe AsciiZ
dell'Environment (ambiente) che DOS utilizza per passare informazioni al programma.
|
 |
Per questa ragione è fortemente sconsigliato alterare il contenuto del
PSP, almeno al fino a questo indirizzo. |
 | Il contenuto delle rimanenti 164 locazioni non
è indispensabile: sono sostanzialmente dei buffer
di servizio utilizzabili dal nostro programma, ufficialmente per
il trasferimento di dati verso o da la memoria di massa, per altro con
tecniche ormai obsolete. |
 | Ciò significa che in determinate condizioni
questa parte del prefisso può essere recuperata al programma, specialmente quando esso deve rimanere
residente (TSR). |
 | Solitamente il programma (codice e dati) viene
caricato subito dopo il PSP, a partire, quindi, dalla locazione
0100H, almeno per gli eseguibili
intrasegmentali, cioè di
tipo
COM: in questo caso il
contenuto dei registri di segmento non viene modificato, cioè puntano
ancora tutti l'inizio del PSP;
i 4 segmenti sono dunque fisicamente sovrapposti. |
 | In un programma tipo
EXE può capitare invece che
la sua intestazione
(header) suggerisca al loader di cambiare l'indirizzo di partenza del codice
(comunque puntato da CS:IP) lasciando in IP ad un valore diverso da
0100H;
in questo caso può succedere che CS e
SS assumano valori diversi da quelli
inizialmente predisposti, uguali a DS e
ES. |
 | In ogni caso DS
e ES continuano dunque a puntare all'inizio del
PSP. |
 | Nelle prossime pagine la
scheda affronta i dettagli del Prefisso
del Segmento di Programma; ecco l'elenco degli argomenti: |
|
Scheda n° 05 |
|
|
Prefisso di Segmento di
Programma |
|
 |
 |
 |
| Scheda n° 05 -
1
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|