En la página de wikpedia sobre archivos .COM https://en.wikipedia.org/wiki/COM_file se lee:
Los archivos .COM en DOS establecen todos los registros de segmentos x86 en el mismo valor y el SP (puntero de pila) se registra en 0xFFFE, por lo tanto, la pila comienza en la parte superior del segmento de memoria y funciona desde allí.
Pero esto realmente establece que la pila comience una palabra debajo de la parte superior del segmento. Al empujar un valor en la pila, la CPU disminuirá SP a 0xFFFC y almacenará el valor allí, desperdiciando así la palabra superior del segmento. ¿Cuál es la razón por la que DOS no establece SP en 0 en su lugar?
int 20h
instrucción allí para que pueda salir de su programa emitiendo unaret
instrucción.