Naja...
du hast ja bestimmt eine "Startup" Funktion geschrieben, die deine main-Funktion aufruft. Dort könnte man den Kernel dann per System Call anweisen, das Programm aus dem Speicher zu entfernen.
Bsp.:
.global _start
.extern main
_start:
# main aufrufen
call main
# kernel anweisen, das Programm zu beenden
movl $0,%eax
int $0x80
Das ist zumindest die Vorgehensweise, die ich für mein OS geplant habe...