Сегментная адресация

eXeL@B DVD

Материал из Справочник исследователя программ

Перейти к: навигация, поиск

Один из способов адресации памяти.

Предисловие. В процессоре 8088 использовались 16 битные регистры и 20 битная шина адреса, позволявшая адресовать 1 мегабайт оперативной памяти. Для формирования 20 битного адреса с использованием 16 битных регистров был предложен способ адресации получивший название "Сегментная адресация"

Идея. Суть сегментной адресации - представление 20 битного адреса через две 16 битные величины seg_a b ofs_a, связанные формулой seg_a*10h+ofs_a. Величину seg_a обычно называют сегментным адресом, а ofs_a - смещением или относительным адресом.

Реализация. Узел отвечавший за формирование 20 битного адреса назвали сумматором. Для хранения сегментных адресов используемых сумматором при формировании 20 битного адреса выделены следующие регистры, получившие название сегментных: CS, DS, ES, SS. Позже, начиная с 386-го процессора были добавлены еще два регистра FS и GS. Регистр CS содержит сегментный адрес кода, выполняемого в текущий момент, SS - сегментный адрес стека, DS - сегментный адрес используемых данных в памяти, ES сегментный адрес приемника строковых инструкций.

Профит. Использование сегментных регистров дает возможность в каждый момент времени использовать 4 или 6(начиная с 386-го процессора) участка оперативной памяти. В инструкциях храниться лишь смещение, что сокращает их размер, делает код перемещаемым.

См. также

Страничная адресация