Организация памяти в процессорах семейства 80х86
Адреса, указатели, ссылки, массивы Указатели и адреса объектов Понятие переменной определялось как имя ячейки памяти, в которой хранится значение указанного типа. Каждая ячейка памяти имеет свой уникальный адрес. Чтобы получить адрес переменной (простой или структурированной) используется унарная операция &,которая применима к объектам, размещенным в памяти и имеющим имена. Указател ь – это объект (переменная), значениями которого являются адреса участков памяти, выделенных для объектов конкретных типов. Организация памяти в процессорах семейства 80х86 Основная память ПЭВМ – это память с непосредственным (прямым) доступом к участку памяти с любым адресом, не зависимо от того к какому участку выполнялось предыдущее обращение. Наименьшим адресуемым участком памяти является байт, содержащий 8 бит (двоичных разрядов). Оперативная память представляет собой последовательность пронумерованных байтов, физические адреса (номера байтов), которых начинаются от 0 и возрастают. Участки памяти, кратные 16 байт называются параграфами, которые пронумерованы от нуля до 65535. Всего 65536 параграфов, это соответствует объему оперативной памяти = 1 Мбайт. Физический адрес параграфа (номер байта, с которого начинается параграф) равен произведению номера параграфа на 16. Начало любого параграфа может быть принято за начало сегмента памяти. Длина сегмента памяти не может превышать 64Кбайт Процессоры семейства 80х86 используют сегментированную организацию памяти. В полном сегментированном адресе любого объекта два 16-ти разрядных числа: 0xHHHH: 0xHHHH, где H – любая шестнадцатеричная цифра. Первое число – это номер параграфа, с которого начинается сегмент. Это число называется сегментной частью адреса. Второе число – определяет смещение от начала сегмента интересующего нас первого байта объекта и называется смещением или относительной частью адреса. Обе части адреса – это четырехразрядные шестнадцатеричные числа, или 16-разрядные двоичные числа. Они могут принимать значения от 0 до 65535 (64Кбайт) По полному сегментному адресу формируется 20-ти разрядные физические адреса: сегментная часть* 16 (номер первого байта сегмента) + относительная часть (смещение в сегменте) = 0хНННН * 0х10 + 0хНННН = =0хНННН0 + 0хНННН = 0хННННН. Для работы с сегментированными адресами в процессорах семейства 80х86 имеются регистры сегментов: · CS (Code Segment)- регистр сегмента кода программы, используется для формирования адресов выполняемых команд; · DS (Data Segment) -регистр сегмента данных, используется для формирования адресов данных; · SS (Stack Segment) - регистр сегмента стека, для формирования адресов данных из стека; · ES (Extra Segment) -регистр сегмента расширения, дополнительного сегмента данных.
|