В чём различие стека и сегмента?

Это совершенно разные понятия.
стек - это организация памяти по принципу магазина. стек LIFO работает как рожок у автомата. В него можно поместить значение, а можно извлечь, причем последнее помещенное значение извлекается первым. У процессора есть аппаратно поддерживаемый стек, командами push (поместить в стек) и pop (извлечь из стека), а также регистрами SS и SP, который своей парой указывают на вершину стека.
А сегмент - это часть адреса. Процессор в 16-разрядном режиме, а память адресуется 20-ю разрядами. Поэтому память нельзя адресовать одним числом. Надо двумя - сегментом и смещением. Физический адрес вычисляется как 4*сегмент+смещение. В итоге из двух 16-разрядных чисел вычисляется 20-разрядный физический адрес. Физический адрес вершины стека, к примеру, вычисляется как 4*SS+SP.

0