Na stronie Wikipedii o plikach .COM https://en.wikipedia.org/wiki/COM_file czytamy:
Pliki .COM w DOS ustawiają wszystkie rejestry segmentów x86 na tę samą wartość, a rejestr SP (wskaźnik stosu) na 0xFFFE, a zatem stos zaczyna się na samej górze segmentu pamięci i od tego momentu zaczyna działać.
Ale tak naprawdę ustawia stos, aby zaczął jedno słowo poniżej górnej części segmentu. Podczas wypychania wartości na stosie CPU obniży SP do 0xFFFC i zapisze tam wartość, marnując w ten sposób górne słowo segmentu. Jaki jest powód, dla którego DOS zamiast tego nie ustawia SP na 0?
int 20h
instrukcji, dzięki czemu możesz wyjść z programu, wydającret
instrukcję.