hi!
das Programm in den Speicher und übergibt dem Prozessor die
Speicheradresse der ersten Maschinencode-Anweisung.
Bei modernen Betriebssystemen nicht ganz. Zuerst werden die externen Referenzen (Sprungziele in
DLLs) aufgelöst, das Code-Segment auf execute-only gesetzt, und ein paar Sachen mehr, mit denen
ich mich nie beschäftigen musste.
Ok, kann sein. Das letzte mal, dass ich was mit ASM zu tun hatte, war unter MS-DOS ;)
Ältere Betriebssysteme hatten einfach einen Jump oder Call auf die Einsprungadresse.
So konnte man übrigens in QuickBasic INLINE-Code ausführen: den Code in eine Variable schreiben und
die Adresse der Variablen anspringen :) Habe ich zwar nie selbst ausprobiert, soll aber angeblich
funktionieren.
Der Prozessor beginnt dann an dieser Stelle
und arbeitet die Maschinencodes nach und nach ab, bis er auf eine Anweisung trifft, die diese Abarbeitung
beendet (hm, ein einfacher Interrupt schätze ich, kann mich aber auch irren).
Das müsste ich mal debuggen um genau zu sein, aber ich denke, dem Betriebssystem wird einfach
mitgeteilt dass das Programm jetzt fertig ist, durch einen Betriebssystemaufruf.
Schau dir mal eine der kleinen .com-Dateien im Windows-Verzeichnis an (zb. chcp.com oder loadfix.com
unter W2K). Die sind überblickbar. Kann es sein, dass man unter DOS eine INT21-Funktion aufrufen
musste? Das ist alles schon so lange her... ;)
bye, Frank!