Na página da wikpedia sobre arquivos .COM https://en.wikipedia.org/wiki/COM_file , lê-se:
Os arquivos .COM no DOS definem todos os registros do segmento x86 com o mesmo valor e o SP (ponteiro da pilha) é registrado como 0xFFFE, portanto, a pilha começa no topo do segmento da memória e desce a partir daí.
Mas isso realmente define a pilha para começar uma palavra abaixo da parte superior do segmento. Ao pressionar um valor na pilha, a CPU decrementa SP para 0xFFFC e armazena o valor lá, desperdiçando assim a palavra principal do segmento. Qual é o motivo do DOS não definir SP como 0?
int 20h
instrução lá para que você possa sair do programa emitindo umaret
instrução.