Theorie
 
 
 
 
 
Computertechnik
 
 
 
 
 
.. Stichwort: PSP -Program Segment Prefix
 
 
 
 
 

 
 
 
 

 

Wird ein Programm durch das Betriebsystem DOS, so wie es auch im SC12-Betriebssystem nachempfunden wurde, gestartet, so erhält es vom Betriebssystem einen Programmkopf (Header) der PSP oder Program Segment Prefix genannt wird. Dieser Kopf umfasst normalerweise 256 Bytes, so dass das eigentlich Programm an der Stelle, Codesegmentadresse + 100h beginnt. Man könnte auch sagen, das Programm beginnt mit einem Offset (Versatz) von 100h Speicherzellen.
Auf diesen Wert ist auch der Instruction Pointer IP der CPU gesetzt, wenn DOS das Programm startet, während das CS-Register der CPU zusammen mit dem Offset 0 immer auf den tatsächlichen Anfang des gesamten Programmblocks samt PSP zeigt.

 

 

Der PSP enthält Informationen zu dem Programm, die normalerweise vom Betriebssystem benutzt werden. Manchmal kann jedoch die Kenntnis seiner Einträge auch vom Programmierer einer Applikation sinnvoll genutzt werden. Die nachfolgende Liste zählt die Eintragungen im PSP auf ...

 

 

 

 

 

Feld

Offset ,

Bezug CS

Länge in

Bytes

Beschreibung

 

 

 

Dez

Hex

 

 

 

 

1

0

00

2

INT 32 Anweisung (Beende das Programm)

 

 

2

2

02

2

Segmentadresse der Speicherzelle, in der das Programm endet. Will man aus dieser Segmentadressen und der PSP-Adresse die Länge eines Programms berechnen, subtrahiert man beide Werte und multipliziert sie mit 16.

 

 

3

4

04

1

Reserviert normalerweise 0

 

 

4

5

05

5

DOS-Funktionsaufruf - Dispatcher mit ...

 

 

 

6

06

2

Offsetangabe, wieviele Bytes dem Programm im CodeSegment noch zur Verfügung stehen, wenn dieses < 64kByte ist. Diese Angabe beginnt auf Offset 06 im Feld 4. Scheint beim SC12 nicht benutzt zu werden.

 

 

5

10

0A

4

Endvektor

 

 

6

14

0E

4

Unterbrechungsvektor

 

 

7

18

12

4

Fehlerbehandlungsvektor

 

 

8

22

16

22

DOS interne Verwendung

 

 

9

44

2C

2

Umgebungsstringzeiger

 

 

10

46

2E

34

DOS Arbeitsbereich

 

 

11

80

50

3

INT 33, RETF Anweisung

 

 

 

 

 

 

Während die oberen Felder von DOS zwingend benötigt werden, können die unteren Felder in der Regel für eigene Zwecke benutzt werden. z.B. zur Ablage von Daten oder Programmteilen

 

 

12

83

53

2

reserviert

 

 

13

85

55

7

FCB 1 Erweiterung

 

 

14

92

5C

9

FCB 1, File Control Block 1

 

 

15

101

65

7

FCB 2 Erweiterung

 

 

16

108

6C

20

FCB 2, File Control Block 2

 

 

17

128

80

1

Parameterlänge

 

 

18

129

81

127

Parameter für das Programm

 

 

19

128

80

128

Diskettentransferbereich (DTA)

 

 

Quelle: Peter Norton, Programmierhandbuch für den ® IBM PC / Vieweg Verlag, ISBN 3-528-04489-6

 

 

 

 

 

Die obige Tabelle bezieht sich auf den PSP von DOS-PCs ohne Multitasksystem. Hier stand dem laufenden Programm immer der gesamte Speicher zur Verfügung. Beim multitaskfähigen Betriebssystem des IPC@Chip, wird jedem Programm nur ein Teil des Hauptspeicher zur Verfügung gestellt. Bis zu welcher Segmentadresse sich dieser Teil erstreckt, kann dem Feld 2 der PSP entnommen werden. Hier steht eine (zwei Byte) Segmentadresse, die das Ende des Programms angibt. Will man mit der Adresse des PSP und dieser Adresse die Länge des Programms berechnen, so muss man folgende Formel verwenden ..

PgmLänge = (SegmentAdresse PSP - Segmentadresse in Feld 2) * 16

Zur Ermittlung der PSP-Segmentadresse gibt es einen Softwareinterrupt im Betriebssystem. Über die PSP-Segmentadresse kann man auf die Adresse in Feld 2 zugreifen. Die Multiplikation mit 16 ist notwendig, weil je zwei Segmentadressen 16 Bytes voneinander entfernt sind.

Es gibt keinen Anhalt dafür, dass die Felder 3 und 4 der PSP-Tabelle beim IPC benutzt werden.

 

 

 

 

www..de