Сегментация памяти
Память трактуется как одномерный массив байтов, каждый байт ассоциируется с двоичным адресом (номером), который называется физическим адресом.
Физический адрес – это 20-битовое беззнаковое целое от 0h до FFFFFh (метка h обозначает 16-ричную систему счисления), которое позволяет описать адресное пространство объемом 1 Мбайт.
Разрядность основного слова МП равна 2 Байта = 16 бит, поэтому для вычисления физического адреса используется выделение из адресного пространства сегментов по 64Кбайта (216), и в пределах сегмента можно определять адрес с помощью 16-битового кода.
Сегменты в адресном пространстве должны размещаться, только начиная с байтов, адреса которых кратны 16, т.е. 4 младших бита – нулевые. Такие адреса называются параграфами.
Логический адрес представляет собой пару двухбайтовых беззнаковых целых чисел, разделенных двоеточием:
- начальный адрес сегмента (базовый),
- смещение (эффективный адрес), указывает расстояние в байтах от начала сегмента до адресуемого байта.
Например, могут быть указаны регистры, хранящие соответствующие коды
CS : IP
При вычислении физического адреса МП расширяет содержимое сегментного регистра четырьмя нулевыми битами, затем суммирует полученное число со смещением. Получим следующую схему образования физического адреса.
15 11 0
DS | начальный адрес сегмента | 0 0 0 0 | |
+ | 15 0 смещение внутри сегмента | ||
19 0 физический адрес байта | |||
Ячейка памяти – это неделимый в данной операции набор последовательных битов.