Du musst erstmal wissen, wo die Datei ist (in welchen Sektoren).
Ohne Dateisystem wirst du das fest in den Kernel einprogrammieren müssen, oder eine 1-Sektor große Daten-Datei anlegen, die du einliest.
In der kann dann Größe und Positon der shell stehen. (womit du dann bereits ein minimales Dateisystem hättets
)
Wenn du weist, wo die Datei ist, kannst du den Ersten sektor laden, in der du Headerinformationen zum Programm speicherst.
u.a. An welcher Adresse die Datei geladen werden muss.
Dann einfach ein call auf diese adresse machen.
call deshalb, weil du die shell ja auch irgendwann wieder verlassen möchtest.