Это просто выбор дизайнера ОС.
DOS - это минимальная ОС, поэтому минимально возможно. Регистры CS и SS необходимо установить. Без CS, установленного для вас, ваш код не мог работать. SS должен быть установлен, потому что DOS использует один стек для всего. Прерывания используют стек более 30 раз в секунду, даже когда ваша программа запущена. (Вот почему вы должны отключать прерывания при изменении SS.) Другие сегменты нужны только в том случае, если ваша программа использует их (и, безусловно, можно писать код, который этого не делает), поэтому DOS не касается.
На самом деле в версиях DOS я помню (и прошло много лет, так что это может быть неправильно), DS и ES были установлены равными CS, что вы хотите для очень маленьких программ с не более 64k кода + данных + стека.
В чем заключен контекст? Разумеется, MS-DOS инициализирует эти регистры, для чего нужна ОС *. Если вы пишете приложение и должны использовать эти регистры, они должны быть настроены на то, что вам нужно * приложение * (которое обычно отличается), и вы должны сохранить предыдущие значения регистра до того, как вернетесь в ОС. 'Cs' является сегментом кода и обязательно должен быть тем, что требуется вашему приложению для его выполнения. И стек управляется ОС всей системы, поэтому 'ss' должен быть правильно настроен для вашего приложения. 'ds' и' es' не имеют таких центральных ролей. – lurker