<?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=MZ-Datei</id>
	<title>MZ-Datei - 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=MZ-Datei"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=MZ-Datei&amp;action=history"/>
	<updated>2026-06-05T00:25: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=MZ-Datei&amp;diff=851337&amp;oldid=prev</id>
		<title>imported&gt;Horst Gräbner: Änderungen von 109.75.215.255 (Diskussion) auf die letzte Version von Lofote zurückgesetzt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=MZ-Datei&amp;diff=851337&amp;oldid=prev"/>
		<updated>2025-02-14T08:29:00Z</updated>

		<summary type="html">&lt;p&gt;Änderungen von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/109.75.215.255&quot; title=&quot;Spezial:Beiträge/109.75.215.255&quot;&gt;109.75.215.255&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Benutzer_Diskussion:109.75.215.255&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer Diskussion:109.75.215.255 (Seite nicht vorhanden)&quot;&gt;Diskussion&lt;/a&gt;) auf die letzte Version von &lt;a href=&quot;/index.php?title=Benutzer:Lofote&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Lofote (Seite nicht vorhanden)&quot;&gt;Lofote&lt;/a&gt; zurückgesetzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Dateiformat&lt;br /&gt;
| Name                 = MZ-Datei&lt;br /&gt;
| Icon                 = &lt;br /&gt;
| Logo                 = &lt;br /&gt;
| Screenshot           = &lt;br /&gt;
| Beschreibung         = &lt;br /&gt;
| Dateiendung          = .exe&lt;br /&gt;
| MIME                 = &lt;br /&gt;
| MIME-Anm             =&lt;br /&gt;
| MagischeZahl         = MZ&lt;br /&gt;
| MagischeZahlNotation = &lt;br /&gt;
| MagischeZahlHex      = 4D 5A&lt;br /&gt;
| Entwickler           = &lt;br /&gt;
| Veröffentlicht       = 1981&lt;br /&gt;
| LetzteVersion        =&lt;br /&gt;
| LetzteVersionDatum   =&lt;br /&gt;
| Art                  = [[Ausführbare Datei]]en ([[EXE]], [[Dynamic Link Library|DLL]]) für [[MS-DOS]], [[Windows]] und die [[Common Language Runtime|CLR]]&lt;br /&gt;
| Container für        =&lt;br /&gt;
| Enthalten in         =&lt;br /&gt;
| Erweitert von        = &lt;br /&gt;
| Erweitert zu         = &lt;br /&gt;
| Standard             =&lt;br /&gt;
| Website              =&lt;br /&gt;
}}&lt;br /&gt;
Der Begriff &amp;#039;&amp;#039;&amp;#039;MZ-Datei&amp;#039;&amp;#039;&amp;#039; leitet sich von einer [[Magische Zahl (Informatik)|magischen Zahl]] in den Verwaltungsdaten am Beginn ([[Header]]) einer Programmdatei ab. Eine [[ausführbare Datei]] mit der Datei-Endung „[[EXE]]“ für das Betriebssystem [[MS-DOS]] wird daher auch als „MZ-Datei“ bezeichnet. Der Header wurde später für EXE-Dateien unter [[Microsoft Windows]] weiterverwendet und lediglich mit weiteren Informationen ergänzt. Auch [[Dynamic Link Library|DLL-Dateien]] verwenden den gleichen Header. Weil auch die ursprüngliche Implementation der [[Common Language Runtime]] (die Ausführungsschicht von [[.Net-Framework]]-Programmern) zunächst für Windows vorgestellt wurde, verwenden auch [[Plattformunabhängigkeit|plattformunabhängige]] [[.NET Core|.NET-Core]]-Binärdateien diesen Header.&lt;br /&gt;
&lt;br /&gt;
== Begriff ==&lt;br /&gt;
Es handelt sich bei der magischen Zahl um eine Byte-Folge mit den [[Hexadezimalsystem|hexadezimalen]] Werten 4D und 5A, die den Buchstaben „M“ und „Z“ entspricht. Dies sind die Initialen von [[Mark Zbikowski]], eines langjährigen Softwareentwicklers von [[Microsoft]], der unter anderem an MS-DOS mitgewirkt hat.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.cio.de/g/die-koepfe-hinter-der-technik-unserer-zeit,69704,40 |titel=Die Köpfe hinter der Technik unserer Zeit: Craig Barrett |werk=cio.de |sprache=de |abruf=2020-12-12}}&amp;lt;/ref&amp;gt; „MZ“ bildet den Beginn einer Datenstruktur, die entsprechend als „MZ-Header“ bezeichnet wird.&lt;br /&gt;
&lt;br /&gt;
== MZ-Header ==&lt;br /&gt;
Der MZ-Header bildet mit einem feststehenden Aufbau den Anfang einer EXE-Programmdatei und beinhaltet Verwaltungsinformationen, die das Betriebssystem zum Laden und Starten des Programms benötigt. Er wird vom [[Linker (Computerprogramm)|Linker]] bei der Fertigstellung der EXE-Datei anhand deren konkreten inhaltlichen Aufbaus und ggf. weiteren Erfordernissen (z. B. [[Overlay (Programmierung)|Overlay]]) mit entsprechenden Daten belegt. Der Header hat folgenden Aufbau:&amp;lt;ref name=&amp;quot;Pascal&amp;quot;&amp;gt;{{Literatur|Autor=Christian Baumgarten |Titel=Systemnahe Programmierung mit Borland Pascal |Verlag=Vieweg |Ort =Braunschweig/Wiesbaden |Datum=1994 |ISBN=978-3-322-87239-5}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable zebra&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#DDDDDD&amp;quot; &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Offset&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Anzahl&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Typ&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Inhalt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0000h || style=&amp;quot;text-align:center&amp;quot; | 2 || char || style=&amp;quot;text-align:left&amp;quot; | Kennung &amp;#039;MZ&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0002h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Bytes in der letzten Page&lt;br /&gt;
|-&lt;br /&gt;
| 0004h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Anzahl der 512-Byte Pages&lt;br /&gt;
|-&lt;br /&gt;
| 0006h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Anzahl der Einträge in der Relokationstabelle&lt;br /&gt;
|-&lt;br /&gt;
| 0008h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Größe des Headers in Paragraphs (16 Bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 000Ah || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Minimale erforderliche Anzahl von Paragraphs &lt;br /&gt;
|-&lt;br /&gt;
| 000Ch || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Maximal erforderliche Anzahl von Paragraphs&lt;br /&gt;
|-&lt;br /&gt;
| 000Eh || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Startwert von SS (Stack Segment Register) relativ zum Programmstart&lt;br /&gt;
|-&lt;br /&gt;
| 0010h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Startwert von SP (Stack Pointer)&lt;br /&gt;
|-&lt;br /&gt;
| 0012h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Prüfsumme oder 0&lt;br /&gt;
|-&lt;br /&gt;
| 0014h || style=&amp;quot;text-align:center&amp;quot; | 1 || dword || style=&amp;quot;text-align:left&amp;quot; | Startwert von CS:IP (Code Segment und Instruction Pointer) relativ zum Programmstart&lt;br /&gt;
|-&lt;br /&gt;
| 0018h || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Offset der Relokationstabelle bzw. 40h bei neuen EXE-Formaten (NE, LE, LX, W3, PE etc.)&lt;br /&gt;
|-&lt;br /&gt;
| 001Ah || style=&amp;quot;text-align:center&amp;quot; | 1 || word || style=&amp;quot;text-align:left&amp;quot; | Overlay-Nummer oder 0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Laden und Ausführung ==&lt;br /&gt;
In DOS-Programmen mit der Endung „[[COM-Datei|COM]]“ findet man den MZ-Header nicht (bis auf Ausnahmen wie COMMAND.COM, die intern MZ-Dateien sind, aber aus Kompatibilitätsgründen die .com-Endung behalten). Sie werden – übernommen vom Betriebssystem [[CP/M]] – mit maximal 63,75 KiB (64 KB) Größe am Offset 100h eines Segments in den Speicher geladen und dort ausgeführt. EXE-Programme sind nicht auf ein Segment begrenzt und können an beliebiger Stelle im Speicher geladen werden. Daher sind die Adressen im Code so angelegt, dass die Segmentwerte erst beim Laden zugewiesen werden. Wo dies vorgenommen werden muss, ist in der Relokationstabelle aufgelistet. So wird zunächst aus dem MZ-Header die benötigte Speichergröße errechnet und anschließend der Programmcode ab Ende des Headers aus der Datei an den Anfang des Startsegments geladen. Gemäß der Anzahl der Einträge in der Relokationstabelle wird diese abgearbeitet und die entsprechenden Stellen des Programmcodes im RAM angepasst. Nach Einrichtung des [[Stapelspeicher|Stacks]] und Laden von Stacksegment-Register (SS) und Stackpointer (SP) erfolgt die Programmausführung mit einem Sprung nach CS:IP.&amp;lt;ref name=&amp;quot;Pascal&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weitere MZ-Nutzung ==&lt;br /&gt;
Die Buchstabenfolge „MZ“ ist auch am Anfang neuerer EXE-Formate ([[New Executable]] und [[Portable Executable]]) unter [[OS/2]] und [[Windows]] sowie in DLLs ([[Dynamic Link Library|Dynamischen Linkbibliotheken]]) zu finden. Dies rührt daher, dass diese späteren Programme der Einfachheit halber generell ein EXE-Programm im alten DOS-Format als sog. [[Stub (Programmierung)|Stub]] am Dateianfang beinhalten. Damit wird verhindert, dass unter MS-DOS ein EXE-Programm zu starten versucht wird, das nicht für DOS geeignet ist. In diesem Fall wird lediglich der Stub ausgeführt, der im Regelfall so programmiert ist, dass er nur eine einfache Fehlermeldung ausgibt und dann endet. Solche Stubs werden entweder standardmäßig vom Compilersystem oder individuell vom Programmersteller beim Linken eingebunden. Meist handelt es sich um eine kurze Meldung wie „This program cannot run in DOS mode“ (oder ähnlich).&lt;br /&gt;
&lt;br /&gt;
[[Hexdump]] einer als Stub genutzten MZ-Datei als Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00000000:   4D 5A 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00    MZP.............&lt;br /&gt;
00000010:   B8 00 00 00 00 00 00 00 40 00 1A 00 00 00 00 00    ........@.......&lt;br /&gt;
00000020:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
00000030:   00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00    ................&lt;br /&gt;
00000040:   BA 10 00 0E 1F B4 09 CD 21 B8 01 4C CD 21 90 90    ........!..L.!..&lt;br /&gt;
00000050:   54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E    This program can&lt;br /&gt;
00000060:   6E 6F 74 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D    not run in DOS m&lt;br /&gt;
00000070:   6F 64 65 0D 0D 0A 24 37 00 00 00 00 00 00 00 00    ode...$7........&lt;br /&gt;
00000080:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
00000090:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000A0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000B0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000C0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000D0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000E0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
000000F0:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem waren auch andere Stub-Varianten in Gebrauch:&lt;br /&gt;
* Bei kleineren Programmen wurde vereinzelt eine reine DOS-Version als Stub im [[Real Mode]] realisiert, während eine zweite Version für den [[Protected Mode]] unter OS/2 den Hauptteil des EXE-Programms bildete.&lt;br /&gt;
* Zur Überwindung der [[Konventioneller Speicher|Speichergrenze]] bei PCs unter MS-DOS wurden sog. [[DOS-Extender]] eingebunden, über die im Protected Mode auf mehr [[Arbeitsspeicher|RAM]] zugegriffen werden konnte.&lt;br /&gt;
* Zudem war es möglich, Programme für den Textmodus mittels sogenanntem &amp;#039;&amp;#039;Family Application Mode&amp;#039;&amp;#039; sowohl unter DOS als auch unter OS/2 lauffähig zu machen. In diesem Fall wurde über den Header mit MZ-Kennung eine Bibliothek von Microsoft (Family Application Program Interface, FAPI) eingebunden, die OS/2-Systemaufrufe auf entsprechende DOS-Funktionen umleitete. Es stand zwar nicht der gesamte Funktionsumfang von OS/2 zur Verfügung; erlaubte jedoch diesen „DOS-Programmen“ die Nutzung der Vorteile des modernen Betriebssystems.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[FreeDOS]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fileformat.info/format/exe/corion-mz.htm EXE Format] (englisch)&lt;br /&gt;
* [http://www.delorie.com/djgpp/doc/exe/ The MZ EXE File Format] (englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Binärformat für ausführbare Programme, Bibliotheken und/oder Objektcode]]&lt;br /&gt;
[[Kategorie:DOS-Betriebssystemkomponente]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Horst Gräbner</name></author>
	</entry>
</feed>