![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В архитектуру процессора i8086/i8088 была заложена идея сегментной организации памяти, которая сохранилась с появлением новых моделей процессоров. Изменялись только адресуемые размеры сегментов. Например, в ОС MS-DOS размер сегмента не мог превышать 64 Кб, т.к. система базировалась на 16-разрядных процессорах и смещение (в регистрах IP и SP) не могло превышать 216-1=65535. Диапазон изменения фозического адреса – до 1Мбайта, это определялось тем, что шина адреса i8086 имела 20 разрядов.
Под сегментом понимается блок смежных ячеек памяти, максимальным размером 64 Кбайт и начальным или базовым адресом, находящимся на 16-байтной границе (такая граница называется параграфом).
Для обращения к памяти необходимо определить базу сегмента (адрес его начала) и 16-битное расстояние от базы, называемое смещением (offset) или относительным адресом. Таким образом, 20-разрядный физический адрес состоит из двух 16-разрядных логических адресов: адрес базы (сегмента) и смещения (эффективного адреса).
CS | : | IP |
96AF | : | E305 |
DS | : | 00FD |
![]() | ![]() | |
сегмент | смещение |
Рисунок 6. Логические адреса
При загрузке выполняемой программы в память операционная система инициализирует, как правило, три сегментных регистра: CS, DS, SS. В них и находятся базовые адреса доступных программе сегментов. Исполнительный адрес любой ячейки вычисляется процессором путём сложения этого адреса, умноженного на 16, со смещением.
ОЗУ | Адрес | ||
… | |||
CS | Команда | 3DA00 | Начало сегмента кода |
… | |||
Команда | CS+IP | Исполняемая команда | |
… | |||
Команда | CS+FFFF | Конец сегмента кода (max) | |
… | |||
DS | Данное | 79F20 | Начало сегмента данных |
… | |||
Данное | DS+A | Адрес переменной А | |
… | |||
Данное | DS+FFFF | Конец сегмента данных (max) | |
… | |||
Данное | SS-FFFF | Конец сегмента стека (max) | |
… | |||
Данное | SS-SP | Вершина стека | |
… | |||
SS | Данное | 80AB0 | Начало сегмента стека |
… | |||
FFFFF | Конец ОЗУ |
Рисунок 7. Структура сегментной организации памяти процессоров i8086
Например, как процессор узнаёт, по какому адресу расположена нужная для выполнения команда? Для этого есть содержимое регистров CS:IP. Процессор выставляет на шину адреса 16- разрядное значение регистра CS и выполняе сдвиг влево на 4 бита (что равноценно умножению на 16) и складывает полученное значение с содержимым регистра IP. Если <CS>=3DA0h и <IP>=11FAh, то:
3DA00 h
+ 11FA h
3EBFA h – физический исполнительный адрес команды.
Дата публикования: 2014-12-08; Прочитано: 563 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!