|
Оперативная память представляет собой совокупность элементарных ячеек для хранения информации – байтов, каждый из которых имеет свой собственный номер, называемый адресом. Адрес позволяет обращаться к любому байту памяти. Структура адреса MS DOS – это два 16-разрядных слова типа WORD, которые трактуются как сегмент и смещение внутри сегмента. Сегмент – это участок памяти, имеющий длину 65536 байт (64 Кбайт = 216 байт) и начинающийся с физического адреса, кратного 16 (т.е. 0, 16, 32 и т.д.). Смещение указывает, на каком расстоянии от начала сегмента находится нужный байт памяти. Таким образом, любая ячейка адресного пространства определяется парой чисел СЕГМЕНТ : СМЕЩЕНИЕ. Адресное пространство современных компьютеров гораздо больше 64 Кбайт и организовано оно последовательными непрерывными областями -сегментами. Для адресации в пределах, например, 1 Мбайта необходимо 20 двоичных разрядов (1 Мбайт = 220 байт), которые получаются из двух 16-разрядных слов (сегмента и смещения) следующим образом: содержимое сегмента сдвигается влево на 4 разряда, освободившиеся правые разряды заполняются нулями, результат складывается с содержимым смещения. Фрагмент памяти размером 16 байт называется параграфом, следовательно, сегмент адресует память с точностью до параграфа, а смещение – с точностью до байта. Адреса принято записывать в 16-ричном формате. Можно получить адрес ячейки оперативной памяти, отсчитанный от начала памяти, т.е. от адреса 0000 : 0000. Такой адрес называется сплошным, его элементом хранения является число типа LongInt. Сплошной адрес = СЕГМЕНТ * 16 + СМЕЩЕНИЕ. Существует понятие нормализованного адреса, у которого смещение находится в диапазоне 0..15 ($0000..$000F). Сплошной адрес переводится в нормализованный формат следующим образом: СЕГМЕНТ = Сплошной адрес div 16, СМЕЩЕНИЕ = Сплошной адрес mod 16.
|