Home

Zurück zur Assemblerauswahlseite

8086 Assembler (MS-DOS):
Eigenschaften von COM- und EXE-Programmdateien

Gemeint sind lediglich die unter MS-DOS ausführbaren Dateien der Arten .COM und .EXE. Ihre wesentliche Unterschiede lassen sich in einer Tabelle[250, Seite 352] darstellen.

COM-ProgrammEXE-Programm
Maximale Programmgröße65278 Bytes. Errechnet sich aus 65536 Bytes abzüglich 256 Bytes für den Programm-Segment-Präfix ( i PSP) und Umgebungsblock (Environment Block)
(PSP) und abzüglich 2 Bytes für den anfänglichen Stack.
Beliebig
Anzahl SegmenteGenau 1Eines oder mehrere Segmente sind zulässig
Programmstartadresse für die Ausführung100hFrei wählbar. Definition im END-Statement.
CS beim StartPSPPSP
DS und ES beim StartPSPPSP
SS beim StartPSPStacksegment
SP beim Start0fffeh oder - falls kleiner - oberstes belegtes Wort des belegten BereichesGröße des Stacksegments.
Inhalt des Stacks beim Start0000hInitialisiert oder auch nicht.
Maximale Stackgröße (Bytes)65536 - Programmgröße - 256Länge des Stacksegments, maximal 65536
Dateigröße der COM - oder EXE - DateiGröße des Programmes minus 256 Bytes (wegen PSP)Größe des Programmes plus EXE-Header (mehrfaches von 512 Bytes).
UnterprogrammaufrufeNEARNEAR wenn im gleichen Segment, FAR wenn in einem anderen Segment.

Der Assembler mit dem nachfolgenden Linker erstellt immer ein .EXE-Programm. Wenn die Voraussetzungen erfüllt sind, lässt sich das EXE-Programm in ein COM-Programm umwandeln. Das COM-Programm belegt weniger Platz auf der Platte und wird schneller gestartet als das entsprechende EXE-Programm. Das COM-Programm auf der Platte ist ein speichergetreues Abbild des ausführbaren Programmes. Beim EXE-Programm müssen nach dem Laden der Programmdatei die Adressteile der Befehle angepasst werden. Dies geschieht mit Hilfe von Informationen im Header der Programmdatei. Erst nach Durchführung der Anpassung startet das Betriebssystem den Ablauf des EXE-Programms.

Bei der Fehlersuche im noch nicht fertigen Programm mit dem Debugger DEBUG sind COM-Programme klar im Vorteil. Hier stimmen die Adressangaben aus der beim Assemblieren anfallenden Programmliste (Listing) vollständig überein. Wird DEBUG dagegen zum Testen eines EXE-Programms benutzt, so muss die im Listing angegebenen Adressen durch die von DEBUG angezeigten Segmentregisterstände vervollständigt werden.


Letztes Upload: 30.03.2017 um 08:29:33