.com/.exe
-
Hey Jungs, wie gehts denn so ?
Ich hätte da mal eine Frage an euch, und zwar:
Warum kann ich in einer DOS .exe mehrere Segmente haben und in einer .com nur ein einziges ?
Das war es auch schon. Kurz. Und schmerzlos.
Einen Schönen Abend wünsche ich noch.
Dankeschön, auf Wiedersehen!
-
Ich kann dir jetzt keine historischen Fakten nennen, aber ich behaupte einfach mal, weil es so schön einfach zu handhaben ist.
-
COM stammt aus der 8bit-Rechner-Zeit, als man einfach nicht mehr als 64KByte RAM hatte/brauchte
-
Nee es ist nur so, dass wenn ich mein Programm assembliere, dann sieht folgende Zeile
mov ax, seg daten
im Speicher (ich benutze Dos' debug.exe zur Disassemblierung) so aus:
mov ax, 1556
. Mein Programm läuft unter Dos. (Ich erinnere nur kurz an die 16 Bit)
Im Code steht also eine feste Segmentadresse, nachdem das Programm assembliert wurde (damit meine ich die '1556'). Ich frage mich nur, ob Dos-Programme allgemein immer an die selbe Adresse geladen werden, oder ob der Loader das Programm an irgendeine freie Segmentadresse lädt und dann nachträglich die "1556" hinzuaddiert. Und wenn, wie macht er das ?Danke schon mal im Voraus
Greeeeeeeeeetz
-
Bei DOS werden die Progs immer an 100h geladen.
Hast ja schonmal das org 100h gesehen?
Das muss da sein damit wenn du die addresse 1h nimmst der Assembler automatisch 101h daraus machen kann, was ja dann die korrekte addresse im RAM ist.