4 типа сегментов:
Сегмент кода – в нем находятся машинные инструкции, кот. составляют текст программы;
Сегмент данных – хранит определенные в программе константы и переменные;
Сегмент стека – хранит промежуточные данные, а также адреса возврата из подпрограммы в точку вызова;
Сегмент дополнительных данных – используется для размещения динамически определяемых переменных. Логические сегменты задаются программистом, так же как порядок расположения их памяти.
Сегмент стека. Адресация стека, команды работы со стеком, изменение состояния стека.
Стек задается программно или определяется системно. Программный стек организован по принципу LIFO. Регистр SS содержит базовый адрес текущего сегмента стека, а регистр SP указывает на вершину стека. Стековые команды осуществляют «проталкивание» (PUSH) в стек или «выталкивание» (POP) из стека. Причем, в отличие от обычной памяти, стек растет в область младших адресов, т.е. при
выполнении команды PUSH значение регистра SP аппаратно уменьшается на 2. Помещать в стек и извлекать из него можно только 16-разрядные операнды. т.е. слова. Это значит, что двойное слово, например дальний адрес, помещается и извлекает из стека в два приема, а для помещения в стек одного байта необходимо дополнять его до слова фиктивным байтом.