Процессоры Intel аппаратно поддерживают сегментную организацию программы. Это означает, что любая программа состоит из трех сегментов: кода, данных и сте- ка. Логически машинные команды в архитектуре IA-32 построены так, что при выборке каждой команды для доступа к данным программы или к стеку неявно используется информация из вполне определенных сегментных регистров. В за- висимости от режима работы процессора по их содержимому определяются адре- са памяти, с которых начинаются соответствующие сегменты. В программной мо- дели IA-32 имеется шесть сегментныхрегистров CS, SS, DS, ES, GS, FS, служащих для доступа к четырем типам сегментов. іi Сегмент кода содержит команды программы. Для доступа к этому сегменту слу- жит регистр сегмента кода (Code Segment register) CS. Он содержит адрес сег- мента с машинными командами, к которому имеет доступ процессор (эти ко- манды загружаются в конвейер процессора). ш Сегмент данных содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр сегмента данных (Data Segment register) DS, который хранит адрес сегмента данных текущей программы. rn Сегмент стека представляет собой область памяти, называемую стеком. Рабо- ту со стеком процессор организует по следующему принципу: последний запи- санный в эту область элемент выбирается первым. Для доступа к этой области служит регистр сегмента стека (Stack Segment register) SS, содержащий адрес сегмента стека. ∙ № Дополнительный сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположе - ны в сегменте данных, адрес которого находится в регистре сегмента данных DS. Если программе недостаточно одного сегмента данных, то она имеет возмож- ность задействовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в регистре DS, при использовании дополнительных сегментов данных их адреса требуется указы- вать явно с помощью специальных префиксов переопределения сегментов в ко- манде. Адреса дополнительных сегментов данных должны содержаться в реги- страх дополнительного сегмента данных (Extension Data Segment registers) ES, GS, FS.