На сторінці вікіпедії про файли .COM https://en.wikipedia.org/wiki/COM_file воно гласить:
Файли .COM в DOS встановлюють всі регістри сегментів x86 на однакове значення, а SP (покажчик стека) реєструють 0xFFFE, таким чином стек починається в самому верху сегмента пам'яті і працює звідти.
Але це фактично встановлює стек починати одним словом внизу верхньої частини сегмента. При натисканні значення на стек CPU зменшить SP до 0xFFFC і збереже там значення, тим самим витрачаючи верхнє слово сегмента. Що є причиною того, що DOS замість SP не встановив 0?
int 20h
інструкцію, щоб ви могли вийти зі своєї програми, видавшиret
інструкцію.