Министерство образования Республики Беларусь
Белорусский Национальный технический университет
Международный институт дистанционного образования.
КОТРОЛЬНАЯ РАБОТА
По теме “Регистры микропроцессора”
Студента 1-го курса МИДО
гр.417315\8
__________
Преподаватель:
Лакин Владимир Иванович
___________
Минск 2006
РЕГИСТРЫ МИКРОПРОЦЕССОРА
Цель работы:
Изучить регистры и регистры общего назначения.
Теоретические сведения
Регистр является устройством временного хранения данных и используется с целью облегчения арифметических, логических и пересылочных операций. Регистры МП 80386 являются расширением регистров прежних МП 8086, 80186, 80286. Все 16-разрядные регистры МП предыдущих поколений содержатся внутри 32-разрядной архитектуры. Микропроцессор 80386 включает шесть непосредственно доступных программисту регистров селекторов сегментов, которые содержат указатели сегментов. Значения этих селекторов могут быть загружены при исполнении программы и являются специфичными для задачи. Это значит, что регистры сегментов перезагружаются автоматически при переключении МП 80386 на другую задачу. За регистрами селекторов сегментов стоят реальные регистры кэш-памяти сегментов, которые содержат описания сегментов, указываемых селектором. Это сделано на аппаратном уровне для того, чтобы избежать дополнительной выборки из памяти в случае, когда требуется описание сегмента.
Регистры общего назначения
Восемь регистров общего назначения имеют длину в 32 бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8, 16, 32 и 64 бит: битовые поля от 1 до 32 бит: операнды-адреса длиной 16 и 32 бит. Эти регистры называются ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР, ESP. Доступ к младшим 16 бит этих регистров выполняется независимо. Это делается в большинстве ассемблеров при использовании 16-разрядных имен регистров: АХ, ВХ, СХ, DX, Sl, Dl, BP,SP.
Регистр системных флагов
Регистр EFLAGS управляет вводом-выводом, маскируемыми прерываниями, отладкой, переключением задач и включением исполнения в режиме виртуального МП 8086 в защищенной многозадачной среде - все это в дополнение к флагам состояния, которые отражают результат исполнения команды. Младшие 16 бит его представляют собой 16-разрядный регистр флагов и состояния МП 80286, называемый FLAGS, который наиболее полезен при исполнении программ для МП 8086 и 80286.
Регистры сегментов
Шесть 16-разрядных регистров содержат значения селекторов сегментов, которые указывают на текущие адресуемые сегменты памяти. Ниже перечислены эти регистры. Регистр сегмента программы (CS) - указывает на сегмент, который содержит текущую последовательность исполняемых команд. Процессор выбирает все команды из этого сегмента, используя содержимое счетчика команд как относительный адрес. Содержимое CS изменяется в результате выполнения внутрисегментных команд управления потоком, прерываний и исключений. Он не может быть загружен явным способом. Регистр сегмента стека (SS). Вызовы подпрограмм, записи параметров и активизация процедур обычно требуют области памяти, резервируемой под стек. Все операции со стеком используют регистр SS при обращении к стеку. В отличие от регистра CS регистр SS может быть загружен явно с помощью команды программы. Остальные четыре регистра являются регистрами сегментов данных (DS, ES, FS, GS), каждый из которых адресуется текущей исполняемой программой. Доступ к четырем раздельным областям данных имеет целью повысить эффективность программ, позволяя им обращаться к различным типам структур данных. Содержимое этих регистров может быть заменено под управлением программы.
Регистры управления сегменированной памятью
Регистр таблицы глобальных дескрипторов (GDTR). Содержит 32-разрядный линейный адрес и 16-разрядную границу таблицы глобальных дескрипторов. Регистр таблицы локальных дескрипторов (LDTR). Содержит 16-разрядный селектор для таблицы локальных дескрипторов. Так как эта таблица является специфичным для задачи сегментом, то она определяется значением селектора, хранимым в регистрах системного сегмента. Регистр дескриптора сегмента, связанный с этой таблицей, программно недоступен. Регистр таблицы дескрипторов прерываний (IDTR). Указывает на таблицу точек входа в программы обработки прерываний. Регистр содержит 32-разрядный линейный базовый адрес и 16-разрядную границу таблицы дескрипторов прерываний (IDT). Регистр задачи (TR). Указывает на информацию, необходимую процессору для определения текущей задачи. Регистр TR содержит 16-разрядный селектор дескриптора сегмента состояния задачи. Поскольку этот сегмент специфичен для задачи, то он определяется значениями селекторов, хранящихся в регистрах системного сегмента.
Указатель команд
Расширенный указатель команд (EIP) является 32-разрядным регистром. Он содержит относительный адрес следующей команды, подлежащей выполнению. Относительный адрес отсчитывается от начала сегмента текущей программы. Указатель команд непосредственно не доступен программисту, но он управляется явно командами управления потоком, прерываниями и исключениями. Младшие 16 бит регистра EIP называются IP и могут быть использованы процессором независимо. Это свойство полезно при исполнении команд МП 8086 и 80286, которые имеют только регистр IP.
Регистры управления
Микропроцессор 80386 имеет три 32-разрядных регистра управления (CRO, CR2 и CR3, a CR1 зарезервированы фирмой Intel), в которых хранятся состояния машины или глобальные состояния. Глобальное состояние - это такое состояние, к которому может получить доступ любой из логических блоков системы или которое управляет этими блоками. Вместе с регистрами системных адресов эти регистры хранят информацию о состоянии машины, которая влияет на все задачи в системе. Для доступа к регистрам управления определены команды их загрузки и сохранности содержимого. Системным программистам регистры управления доступны только через варианты команды MOV, которые позволяют их загружать или сохранять в регистрах общего назначения.
Регистры отладки
Шесть доступных программисту регистров отладки (DRO-DR3, DR6 и DR7) расширяют возможности отладки в МП 80386, они устанавливают точки останова по данным и позволяют устанавливать точки останова по командам без модификации сегментов программ. Регистры DRO-DR3 предназначены для четырех линейных точек останова. Регистры DR4 и DR5 зарезервированы фирмой Intel для будущих разработок. Регистр DR6 показывает текущее состояние точек останова, а регистр DR7 используется для установки точек останова.
Листинг программы
Программа выполняет вычисление с помощью регистров.
Program registri;
var
a,b,c: integer;
begin
Writeln( 'Введите значение 1');
Readln(a);
Writeln( 'Введите значение 2');
Readln(b);
asm
mov ax,a
add ax,b
mov c,ax
end;
Writeln(' Ответ:',c);
end.
Вывод
При выполнении лабораторной работы я приобрел практические навыки работы с регистрами памяти.
СИСТЕМА ПРЕРЫВАНИЙ
Цель работы:
Изучить прерывания.
Теоретические сведения:
Прерывания и исключения.
Прерывания и исключения (исключительные ситуации) изменяют нормальное выполнение задачи, чтобы обработать внешние условия, сообщить об ошибках или исключительных обстоятельствах. Различия между прерываниями и исключениями состоят в том, что прерывания обрабатывают асинхронные внешние условия, в то время как исключения обрабатывают ошибки команд. Хотя прерывание п программа может выполнить посредством команды INT n, процессор рассматривает прерывание за счет программного обеспечения как исключение. Прерывания, произведенные машинным оборудованием, происходят в результате внешних событий и бывают двух видов: маскируемые и немаскируемые, и выполняются после выполнения текущей команды. После того, как программа обработки прерываний заканчивает обслуживание прерывания, выполнение продолжается с команды, которая следует сразу за командой прерывания. Исключения классифицируются как ошибки, ловушки или прекращения в зависимости от способа их сообщения и от того, поддерживается ли перезапуск команды, вызывающей исключение. Ошибки - это исключения, которые обнаруживаются и выполняются до выполнения команды с ошибкой. Ошибка будет происходить в системе виртуальной памяти, когда процессор ссылается на страницу или сегмент, которые отсутствуют. Операционная система выберет страницу или сегмент с диска, после чего 80386 перезапустит команду. Ловушки - исключения, о которых сообщается немедленно после выполнения той программы, которая вызывает исключение. Прекращения - исключения, которые не позволяют определить точно местоположение команды, вызывающей исключение. Прекращения используются для сообщения о грубых ошибках, таких как аппаратная ошибка, неправильные значения в системных таблицах. Таким образом, когда программа обслуживания прерывания заканчивается, выполнение продолжается с команды, следующей сразу за командой вызвавшей прерывание. Микропроцессор 80386 способен обрабатывать до 256 различных прерываний/исключений. Для обслуживания прерываний, необходимо определить (составить) таблицу с 256 векторами прерываний. Вектора прерываний - это указатели на соответствующие программы обслуживания; Из 256 возможных прерываний, 32 зарезервированы для использования INTEL, оставшиеся 224 свободны для использования пользователем.
Обработка прерываний
Когда происходит прерывание, происходят следующие действия. Во-первых, адрес текущей команды и регистр флагов EFLAGS сохраняются в стеке, что позволяет возобновить прерванную программу. Затем, 80386 снабжается 8-ми битовым вектором, который определяет соответствующий элемент в таблице прерываний. В таблице содержится начальный адрес программы обработки прерываний. После этого, выполняется вызываемая программа обработки. И, наконец, после команды IRET восстанавливается старое состояние процессора и по адресу возврата (т.е. по адресу, сохраненному в стеке) возобновляется выполнение программы. 8-ми битовый вектор прерывания подается на 80386 несколькими различными способами: исключения "поставляют" вектор прерывания внутренне; команды INT содержат или включают в себя вектор; прерывания маскируемые аппаратурой "поставляют" 8-ми битовый вектор через последовательность шины подтверждения прерываний. Прерывания немаскируемые аппаратурой присвоены к вектору прерывания 2.