Program Segment Prefix

Als Programmsegmentpräfix (englisch Program Segment Prefix, PSP) bezeichnet man die ersten 256 Byte eines von MS-DOS geladenen Programmes. Es befindet sich in der Regel an Adresse CS:0 bis CS:FF, wobei CS für das Codesegmentregister steht und die Anfangsadresse des Codesegments enthält. Das PSP ist nicht in den ausführbaren Exe- oder COM-Dateien enthalten, sondern wird beim Laden des Programmes vom Betriebssystem erstellt. Die erste Hälfte des PSPs beinhaltet verschiedene Informationen für das Betriebssystem, insbesondere zur Handhabung mehrerer (nacheinander) ausgeführter Programme. In der zweiten Hälfte befindet sich die Kommandozeile (command tail, ohne den eigentlichen Namen des Programmes).

Struktur

Weitere Bereiche des PSPs werden von Betriebssystem-Erweiterungen oder manchen TSR-Programmen genutzt.

Beispiel-Programm

Dieses Programm zeigt die Kommandozeilenargumente des aufgerufenen Programms aus seinem PSP an: (COM-Datei, geschrieben in Assemblersprache, NASM-Syntax)

org  100h

; Interrupt 21h, Funktion 09h benötigt ein Dollarzeichen als Endmarkierung
mov  bl, byte [0080h]
xor  bh, bh
mov  byte [0081h+bx], '$'

; Ausgabe der Kommandozeile (bis zum ersten Dollarzeichen) mit Funktion 09h
mov  ah, 09h
mov  dx, 0081h
int  21h

; Beenden des Programmes mit Funktion 4Ch, Rückgabewert 00h
mov  ax, 4C00h
int  21h

Einzelnachweise

Uses material from the Wikipedia article Program Segment Prefix, released under the CC BY-SA 4.0 license.