Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Программа с несколькими сегментами команд




Кафедра ЭВМ

 

 

Сегментная адресация и сегментная структура программ. Программы с несколькими сегментами команд.

Методические указания к лабораторным работам по курсу

«Организация ЭВМ и систем»

для студентов специальности 230101

«Вычислительные машины, комплексы, системы и сети»

 

Тверь 2008

Методическое указание разработано в соответствии с рабочей программой по дисциплине «Организация ЭВМ и систем» для студентов специальности 230101 и предназначено для оказания помощи студентам в подготовке к выполнению лабораторных работ по данной дисциплине.

 

Составили: Карельская К.А., Блохин К.Л., Рачишкин А.А.

 

© Тверской государственный технический университет

 


Раздел 1

Теоретическая часть

Разрядность процессора

Важнейшей характеристикой любого процессора является его разрядность.

Процессор 8086

Процессор 8086 имеет 16-разрядную внутреннюю архитектуру и 16-разрядную шину данных. Максимальное целое число, которое может быть адресовано, составляет 216 – 1, то есть 64 Кб. Однако, адресная шина имеет 20 линий. Это соответствует адресному пространству 220, то есть 1 Мб.

Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, в микропроцессоре предусмотрена сегментная адресация памяти, реализуемая с помощью четырех сегментных регистров.

Рисунок 1 – Образование физического адреса из сегментного адреса и смещения

 

Разрядные процессоры

32-разрядные процессоры имеют 32-разрядную шину, что соответствует адресному пространству 232  = 4 Гб. Однако описанный способ сегментный адресации памяти не позволяет выйти за пределы 1 Мб. Для преодоления этого в 32-разрядных процессорах используют 2 режима работы: режим реального адреса и защищенный режим (режим виртуальной защиты адресов).

В реальном режиме 32-разрядный процессор функционирует как процессор 8086 с повышенным быстродействием, может обращаться только к 1 Мб адресного пространства, а остальная память используется в защищенном режиме.

В защищенном режиме используются сегменты и смещения в них, но начальный адрес сегментов не вычисляется, а извлекается из специальной таблицы – Таблицы Дескрипторов Сегментов. Каждый сегментный дескриптор занимает 8 байт, половина из них отводится на сегментный адрес – таким образом обеспечивается полное использование 32-разрядного адресного пространства.

Регистры процессора 8086

Процессор содержит 12 программно адресуемых 16-разрядных регистров, которые делятся на группы.

Регистры данных

· AX – аккумулятор

· BX – базовый

· CX – счетчик

· DX – регистр данных

 

Каждый регистр данных содержит младший и старший байт, например, АХ = AH + AL (рисунок 2), к которым можно обращаться отдельно. Программа может использовать регистры по своему усмотрению: для временного хранения объектов и выполнения операций.

Рисунок 2 – Регистр данных АХ

Регистры-указатели (индексные регистры)

· SI – индекс источник

· DI – индекс приемника

· BP – указатель базы

· SP – указатель стека

 

Эти регистры могут использоваться произвольным образом, но их основное назначение – хранение индексов и смещений относительно некоторой базы. Адрес базы хранится в базовом регистре.

Сегментные регистры

· CS – регистр сегмента команд

· DS – регистр сегмента данных

· ES – регистр дополнительного сегмента данных

· SS – регистр сегмента стека

 

Эти регистры хранят начальные адреса сегментов программы и обеспечивают возможность доступа к этим сегментам. Сегментные регистры не могут выступать в качестве регистров общего назначения.

Сегментная адресация

Обращение к любым участкам памяти осуществляется исключительно посредством сегментов.

Сегмент – это логическое образование, накладываемое на требуемые участки  физического адресного пространства. Размер сегмента должен находиться в пределах от 0 до 64 Кб (допустимо иногда использовать сегменты нулевой длины).

 

Любая выполняемая программа должна состоять из сегментов. Обычно их 3:

Ø сегмент команд (код)

Ø сегмент данных

Ø сегмент стека

Однако, возможна интеграция сегментов стека и/или данных в сегмент кода.

 

Суть сегментной адресации заключается в следующем: физический 20-разрядный адрес любой ячейки памяти вычисляется процессором путем сложения начального адреса сегмента памяти, в котором располагается эта ячейка, со смещением к ней (в байтах) от начала сегмента, которое иногда называют относительным адресом.

Сегментный адрес без четырех младших битов (рисунок 1), то есть деленный на 16, хранится в одном из сегментных регистров. При вычислении физического адреса процессор умножает содержимое сегментного регистра на 16 и прибавляет к полученному 20-разрядному адресу относительный адрес.

Умножение базового адреса на 16 увеличивает диапазон адресуемых ячеек до величины 64 Кб * 16 = 1 Мб.

Программа с несколькими сегментами команд

В случае, если в программе имеется только один сегмент команд, то суммарный объем команд во всех процедурах не может превысить 64 Кб. Но иногда для написания программы необходимо превысить это ограничение. Однако увеличить размер сегмента нельзя; если суммарный объем команд программы превышает 64 Кб, в ней следует организовать несколько сегментов команд.

Программа, содержащая несколько сегментов команд, в принципе может иметь линейный характер. В этом случае сначала выполняются все команды первого сегмента, затем процессор переходит к выполнению команд второго сегмента, и так далее.

Для того, чтобы организовать такую программу, надо осуществлять переход не в пределах одного сегмента, а в другой сегмент команд.

Однако удобнее большую программу составить из процедур-подпрограмм. В этом случае надо уметь вызывать подпрограммы из другого сегмента.

Любое обращение к другому сегменту команд носит название дальнего или межсегментного. Обращение же в пределах одного сегмента называется ближним или внутрисегментным. В соответствии с этим различаются команды ближних и дальних переходов, а также команды ближних и дальних вызовов подпрограмм.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...