Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сегментная адресация и сегментная структура программСтр 1 из 5Следующая ⇒
Организация электронно-вычислительных машин Преподаватель: Карельская Катерина Александровна, доцент каф. ЭВМ, к.т.н. 7 семестр – зачёт + курсовая работа
Лекция 1 Сегментная адресация и сегментная структура программ Важнейшей характеристикой любого процессора является разрядность его внутренних регистров, а так же внешних шин адреса и данных. Процессор i8086 имеет 16-ти разрядную внутреннюю архитектуру и 16-ти разрядную шину данных. Максимальное целое число (либо данное, либо адрес), с которым может работать процессор составляет 216 -1 = 64 кбайта. Адресная шина процессора содержит 20 линий, а соответствует адресному пространству 220 = 1Мбайт. Чтобы получить физический двадцати разрядный адрес ячейки, необходимо выполнить следующее:
Взять физический адрес начала сегмента в памяти и сложить его со смещением. Таким образом, получается физический 20ти разрядный адрес адресуемой ячейки.
Таким образом, диапазон адресуемых ячеек составляет 1 Мбайт.
32-ти разрядные процессоры (Pentium) имеют 32-ти разрядную адресную шину, а это соответствует адресному пространству в 232 = 4 Гбайт, но описанный способ сегментной адресации не позволяет выйти за пределы одного Мбайта. Для преодоления такого ограничения 32-ти разрядные процессоры используют два режима работы: реальный режим (режим реального адреса) и защищенный режим (режим виртуального защищенного адреса). В реальном режиме процессор функционируют как i8086 с повышенным быстродействием. Может обращаться лишь к одному мегабайта адресного пространства. Остальная памяти (даже если она установлена) не используется. Защищенный режим всё равно использует сегменты и смещения в них, но начальные адреса сегментов не вычисляются, а извлекаются из специальных таблиц (называют «Таблицы дескрипторов сегментов»). Каждый дескриптор сегмента занимает 8байт, из которых 4 байта (32 бита) отводится под сегментный адрес. И тем самым обеспечивается полное использование 32-х разрядного адресного пространства.
Итак, сегмент – это логическое образование, которое накладывается на требуемые участки физического адресного пространства. Размер сегмента находится в пределах от 0 до 64 кбайт.
Любая выполнимая программа должна обязательно состоят из сегментов, которых обычно три (три типа сегментов): сегмент команд, сегмент данных, сегмент стеков. Каждого вида сегментов может быть несколько.
CS – сегмент команд - обеспечивает адресацию к сегменту, в котором находятся программные коды. DS, ES – сегменты данных и дополнительный сегмент данных – обеспечивает адресацию к видеобуферу, системным ячейкам и так далее. SS – сегмент стека. Все регистры хранят начальные адреса сегментов программы и тем самым обеспечивают возможность обращения к этим сегментам. Эти сегментные регистры не могут выступать как сегменты общего назначения и не допускают обращения к младшему или старшему байту в отдельности. К этому регистру можно обратиться только целиком.
Регистры общего назначения – РОН: AX (15-0) – аккумулятор = AH (15-8) + AL (7-0) BX (15-0) – базовый регистр CX (15-0) - счетчик DX (15-0) - регистр данных Программист может использовать РОН по своему усмотрению для временного хранения любых объектов и выполнением над ними требуемых операций. Регистры допускают независимое обращение к младшему и старшему байтам. (Предпочтительно использовать АХ).
Регистры-указатели: SI – индекс источника DI – индекс приемника BP – указатель базы SP – указатель стека Основные назначение: хранить индексы (то есть смещения) относительно некоторых базы. Адрес базы находится обычно в ВХ.
Регистр флагов: включается шесть флагов состояния и три бита управления состояния процессора.
|