<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Program_Segment_Prefix</id>
	<title>Program Segment Prefix - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Program_Segment_Prefix"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Program_Segment_Prefix&amp;action=history"/>
	<updated>2026-05-18T05:50:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Program_Segment_Prefix&amp;diff=390715&amp;oldid=prev</id>
		<title>imported&gt;Duschgeldrache2: in der Kat DOS-Betriebssystem fehlplaziert (PSP ist kein Betriebssystem, sondern gehört zu Betriebssystem!)</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Program_Segment_Prefix&amp;diff=390715&amp;oldid=prev"/>
		<updated>2024-07-16T23:57:23Z</updated>

		<summary type="html">&lt;p&gt;in der Kat DOS-Betriebssystem fehlplaziert (PSP ist kein Betriebssystem, sondern gehört zu Betriebssystem!)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Als &amp;#039;&amp;#039;&amp;#039;Programmsegmentpräfix&amp;#039;&amp;#039;&amp;#039; ({{enS|Program Segment Prefix}}, PSP)&amp;lt;ref&amp;gt;https://thestarman.pcministry.com/asm/debug/debug.htm#SPECM A Guide to DEBUG - Special Memory Locations in MS-DEBUG&amp;lt;/ref&amp;gt; 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 [[MZ-Datei|Exe]]- oder [[COM-Datei]]en 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]] (&amp;#039;&amp;#039;command tail&amp;#039;&amp;#039;, ohne den eigentlichen Namen des Programmes).&lt;br /&gt;
&lt;br /&gt;
== Struktur ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset (hexadezimal)&lt;br /&gt;
! Größe (Bytes)&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|| 00 – 01 || 2 Bytes (Code) || [[Softwareinterrupt|Interrupt]]-20h–Befehl zum Beenden des Programms nach einem Sprung zur Adresse 0000h&amp;lt;ref&amp;gt;https://devblogs.microsoft.com/oldnewthing/20200309-00/?p=103547 Why does MS-DOS put an int 20h at byte 0 of the COM file program segment? by Raymond Chen&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 02 – 03 || [[Datenwort#Prozessoren der x86-Architektur|Word]] (2 Bytes) || Segmentadresse des ersten vom Programm nicht mehr belegten Speichers&lt;br /&gt;
|-&lt;br /&gt;
|| 04 || Byte || reserviert&lt;br /&gt;
|-&lt;br /&gt;
|| 05 – 09 || 5 Bytes (Code) || CP/M-80 ähnlicher FAR CALL Eintrag in DOS&amp;lt;ref&amp;gt;http://www.os2museum.com/wp/who-needs-the-address-wraparound-anyway/ Who needs the address wraparound, anyway? by Michal Necasek (englisch)&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 0A – 0D || [[Datenwort#Prozessoren der x86-Architektur|DWord]] (4 Bytes) || Kopie des Interrupt-Vektors 22h, Rückkehradresse nach Beenden des Programms&lt;br /&gt;
|-&lt;br /&gt;
|| 0E – 11 || DWord  || Kopie des Interrupt-Vektors 23h, Interrupt für Strg-C&lt;br /&gt;
|-&lt;br /&gt;
|| 12 – 15 || DWord ||Kopie des Interrupt-Vektors 24h, Interrupt für fatale Fehler&lt;br /&gt;
|-&lt;br /&gt;
|| 16 - 17 || Word || Segment des Parent-PSPs: das Programm, das dieses Programm ausgeführt hat&lt;br /&gt;
|-&lt;br /&gt;
|| 18 - 2B || 20 Bytes || Standardmäßige Job File Table (JFT), enthält je eine Dateitabellen-Nummer (System File Table, SFT) für bis zu 20 Datei-[[Handle]]s&lt;br /&gt;
|-&lt;br /&gt;
|| 2C – 2D || Word || Segment des [[Umgebungsvariable]]n-Blocks (Environment) für dieses Programm&lt;br /&gt;
|-&lt;br /&gt;
|| 2E - 31 || DWord || Adresse des [[Stapelspeicher]]s (Stack) beim letzten Ausführen des Interrupts 21h&lt;br /&gt;
|-&lt;br /&gt;
|| 32 - 33 || Word || Nummer aller Datei-Handles in der JFT, standardmäßig 20&lt;br /&gt;
|-&lt;br /&gt;
|| 34 - 37 || DWord || Adresse der aktuellen JFT, standardmäßig Offset 0018h in diesem PSP&lt;br /&gt;
|-&lt;br /&gt;
|| 38 - 3B || DWord || Zeiger zum vorhergehenden PSP (Wird nur für SHARE ab MS-DOS 3.3 verwendet) &lt;br /&gt;
|-&lt;br /&gt;
|| 3C - 3F || 4 Bytes || reserviert&lt;br /&gt;
|-&lt;br /&gt;
|| 40 - 41 || Word || Enthält ab MS-DOS 5.0 die DOS Version als HEX Wert.  &lt;br /&gt;
|-&lt;br /&gt;
|| 42 - 4F || 14 Bytes  || reserviert&lt;br /&gt;
|- &lt;br /&gt;
|| 50 – 52 || 3 Bytes (Code) || Code um Interrupt 21h bei einem FAR CALL zur Adresse 0050h auszuführen&lt;br /&gt;
|-&lt;br /&gt;
|| 53 - 54 || 2 Bytes || reserviert&lt;br /&gt;
|-&lt;br /&gt;
|| 55 - 5B || 7 Bytes  || reserviert (kann dazu benutzt werden den File Control Block (FCB) in einen extended FCB zu verwandeln)&lt;br /&gt;
|-&lt;br /&gt;
|| 5C – 6B || 16 Bytes || [[File Control Block]] (FCB) des ersten Parameters der Kommandozeile&lt;br /&gt;
|-&lt;br /&gt;
|| 6C – 7F || 20 Bytes || FCB des zweiten Parameters&lt;br /&gt;
|-&lt;br /&gt;
|| 80   || 1 Byte || Längenangabe der Kommandozeile&lt;br /&gt;
|-&lt;br /&gt;
|| 80 - AB || 43 Bytes || Bei Dateisuchoperationen von der standardmäßigen Disk Transfer Area (DTA) überschrieben&lt;br /&gt;
|-&lt;br /&gt;
|| 81 – FF || 127 Bytes || Kommandozeile mit allen Parametern, aber ohne den Kommandonamen selbst&lt;br /&gt;
|}&lt;br /&gt;
Weitere Bereiche des PSPs werden von Betriebssystem-Erweiterungen oder manchen [[TSR-Programm]]en genutzt.&lt;br /&gt;
&lt;br /&gt;
== Beispiel-Programm ==&lt;br /&gt;
Dieses Programm zeigt die Kommandozeilenargumente des aufgerufenen Programms aus seinem PSP an: ([[COM-Datei]], geschrieben in [[Assemblersprache]], [[Netwide_Assembler|NASM]]-Syntax)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
org  100h&lt;br /&gt;
&lt;br /&gt;
; Interrupt 21h, Funktion 09h benötigt ein Dollarzeichen als Endmarkierung&lt;br /&gt;
mov  bl, byte [0080h]&lt;br /&gt;
xor  bh, bh&lt;br /&gt;
mov  byte [0081h+bx], &amp;#039;$&amp;#039;&lt;br /&gt;
&lt;br /&gt;
; Ausgabe der Kommandozeile (bis zum ersten Dollarzeichen) mit Funktion 09h&lt;br /&gt;
mov  ah, 09h&lt;br /&gt;
mov  dx, 0081h&lt;br /&gt;
int  21h&lt;br /&gt;
&lt;br /&gt;
; Beenden des Programmes mit Funktion 4Ch, Rückgabewert 00h&lt;br /&gt;
mov  ax, 4C00h&lt;br /&gt;
int  21h&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Betriebssystemkomponente]]&lt;br /&gt;
[[Kategorie:DOS-Betriebssystemkomponente]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Duschgeldrache2</name></author>
	</entry>
</feed>