Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Логические и физические адреса памяти

СЕГМЕНТАЦИЯ ПАМЯТИ

 

Первая PC имела 16 бит адреса. В дальнейшем расширение разрядности ША до 20 бит привело к идее сегментации памяти.

Процессор рассматривает память как группу сегментов. Сегмент представляет собой единицу размером 64К. Все исполняемые программы используют один или более сегментов. Сегменты различаются по назначению: сегмент данных, сегмент стека и сегмент команд.

Сегменты располагаются в памяти с адресов кратных 16, шестнадцатеричный адрес сегмента содержит 0 в младшей тетраде. Например: 0Е840, 5FF40. В связи с этим младшая цифра адреса не записывается и считается, что адрес сегмента задается в параграфах: 0Е84 и 5FF4. Параграф – это шестнадцать байт ОЗУ, расположенные последовательно с адреса кратного шестнадцати.

Если бы программе выделялись сегменты размером 64К, то для любой EXE-программы требовалось бы 4 сегмента (минимум 192К). Однако программные сегменты имеют минимально допустимые размеры. Например, на рис. показано расположение в памяти небольшой EXE-программы. Сегмент стека занимает 64 байт. Это – минимальный объем, который требуется. Вслед за ним располагается сегмент данных, который занимает 14 байт. Сегмент кода (программы) располагается через 2 байта за сегментом данных. Два байта пропущены, так как адрес любого сегмента кратен 16.

 

0437Fh┌───────┐

04380h├───────┤ ──┐

├───────┤ │

│ | │ │ CЕГМЕНТ СТЕКА

043BFh├───────┤ │ >=64К

043C0h├───────┤ ──┤

├───────┤ │ CЕГМЕНТ ДАННЫХ

│ | │ │ 14 БАЙТ.

043CDh├───────┤ │

043CEh├───────┤ ──┤

043CFh├───────┤ │ НЕИСПОЛЬЗУЕМЫЕ БАЙТЫ ПАМЯТИ

043D0h├───────┤ ──┤

├───────┤ │

│ | │ │ СEГМЕНТ ПРОГРАММЫ

043F5h├───────┤ │ 25H=37БАЙТ

043F6h├───────┤ ──┘

└───────┘

 

 

 

Физический адрес представляет собой 20-ти битовое значение, которое выставляется на ША при обращении к памяти. Диапазон адресов 0..FFFFF -адресное пространство 1 МБ.

Логический адрес состоит из двух 16-ти битовых беззнаковых значений: базового (начального) адреса сегмента и смещения адреса ячейки внутри сегмента. Значение смещения 0..FFFF, то есть позволяет адресовать любой байт 64К сегмента. Смещение адреса относительно начала сегмента будем называть эффективным или исполнительным адресом (ЕА), так как на программном уровне можно не рассматривать аппаратное вычисление физического адреса.

Для хранения адресов сегментов в процессоре предусмотрены 4 сегментных регистра (адреса даны для предыдущего примера):

CS – code segment 043D0h

DS – data segment 043C0h

SS – stack segment 04380h

ES – сегмент расширения (используется, например, в некоторых операциях со строками).

Сегментные регистры – 16-ти разрядные.

В процессе выполнения программы в сегментные регистры загружены адреса «текущих» сегментов. Большие EXE-программы могут использовать несколько сегментов данных и сегментов кодов. В определенный момент производится выборка команды из текущего сегмента кода, и команда обрабатывает данные из текущего сегмента данных.

 

┌───────┐

┌───────────────────┤ 043Ch │ <- DS

V └───────┘

043C0h ┌───────────────────┐

0h-1h │ │} A1 - СЛОВО

├───────────────────┤

2h │ │} В1 - БАЙТ

├───────────────────┤

3h-4h │ │} A2 - СЛОВО

├───────────────────┤

5h-6h │ │} A3 - СЛОВО

├───────────────────┤

7h-8h │ │} A4 - СЛОВО

└───────────────────┘

 

логический адрес

 

Смещение данных может располагаться в каком-либо регистре МП или же входить в состав команды. При вычислении физического адреса используется сумматор адресов.

 

сегмент| |смещение

16 \ \ 16

| |

v v

┌───┴──┐ ┌─┴────┐

└┐ └─┘ ┌┘

└┐СУМ.АДРЕСОВ┌┘

└─────┬─────┘

└───/────>ША <- Физический адрес

 

1) Физический адрес переменной B1:

 
 
– адрес сегмента


– адрес смещения
– физический адрес

 

2) Физический адрес переменной A4:

 
 
– адрес сегмента


– адрес смещения
– физический адрес

<== предыдущая лекция | следующая лекция ==>
ПОРТЫ ВВОДА/ВЫВОДА | Адресация сегмента стека
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1471; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.