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öße:65278 Bytes. Errechnet sich aus 65536 Bytes abzüglich
256 Bytes für den Programm-Segment-Präfix (PSP)
und Umgebungsblock (Environment Block) sowie
abzüglich 2 Bytes für den anfänglichen Stack.
Beliebig
Anzahl Segmente:Genau 1Eines oder mehrere Segmente sind zulässig
Programmstartadresse
für die Ausführung:

100h

Frei wählbar. Definition im END-Statement
CS beim Start:PSPPSP
DS und ES beim Start:PSPPSP
SS beim Start:PSPStacksegment
SP beim Start:0fffeh oder - falls kleiner - oberstes belegtes Wort des belegten BereichesGröße des Stacksegments
Inhalt des Stacks
beim Start:

0000h

Initialisiert oder auch nicht
Maximale Stackgröße
(Bytes):

65536 - Programmgröße - 256

Länge des Stacksegments, maximal 65536
Dateigröße der
COM - oder EXE - Datei:

Größe des Programmes minus 256 Bytes (wegen PSP)

Größe des Programmes plus EXE-EQUser
(mehrfaches von 512 Bytes)
Unterprogrammaufrufe:NEARNEAR 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 EQUser 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: 24.03.2023 um 11:35:16 • Impressum und Datenschutzerklärung