Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснилка.doc
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
431.1 Кб
Скачать

39

ВВЕДЕНИЕ

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

Целью данного проекта является ознакомление с принципами функционирования микропроцессоров семейства i8086.

В процессе реализации данного проекта необходимо разработать алгоритмы и ОА для выполнения заданных команд, структуру АЛУ и структуру микропроцессора, способного выполнять эти команды. Также необходимо реализовать разработанные алгоритмы и структуру процессора в программе-эмуляторе, имеющей режим пошаговой трассировки выполнения алгоритмов.

Программа эмулятор может быть использована для демонстрации работы процессора в учебных целях.

1 Постановка задачи

    1. Общая характеристика i8086

Б азовым для проектируемого микропроцессора выступает мик­ропроцессор i8086. Структура этого микропроцессора представлена на рисунке 1.1.

Как видно на рисунке микропроцессор содержит буфер адреса данных (БАД), устройство управления и синхронизации (УУиС), сумматор физического адреса (СФА), регистр команд (РК), регистр обмена (РО), очередь команд (ОК), регистры общего назначения (AX, BX, CX, DX), сегментные регистры (CS, DS, SS, ES), регистры указателей (SP, BP, IP), индексные регистры (SI и DI) , АЛУ, регистр флагов (РФ), местное устройство управления (МУ).

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

Местное устройство управления отвечает за взаимодействие АЛУ и регистра флагов с остальными частями микропроцессора.

Регистр флагов содержит набор флагов, характеризующих состояние микропроцессора:

  • CF – флаг переноса, устанавливается в 1, если в результате выполнения операции возник перенос из (n-1)-го разряда результата в несуществующий старший n-й разряд или потребовался заем несуществующего n-го разряда;

  • PF – флаг паритета, дополняет код результата до нечетного, т.е. устанавливается в 1, если количество единиц в коде результата четно;

  • AF – флаг вспомогательного переноса, устанавливается в 1, если при выполнении операции произошел перенос из 3 в 4 разряд результата или выполнился заем из 3 в 4 разряд. Используется для десятичной коррекции результата;

  • ZF – флаг нулевого результата, принимает единичное значение, если все разряды результата нулевые; если хотя бы один разряд результата отличен от 0, ZF сбрасывается в 0;

  • SF – флаг знака, устанавливается равным старшему (n-1)-му разряду кода результата. При выполнении операций над числами со знаком он соответствует знаку результата, если результат >= 0, будет сброшен в 0, если результат < 0 - будет установлен в 1.;

  • OF – флаг переполнения, устанавливается в 1, если в результате выполнения операций происходит переполнение разрядной сетки (если перенос из (n-2)-го разряда в(n-1) не совпадает с переносом из (n-1)-го разряда в несуществующий n-ый);

  • DF – флаг направления передачи, определяет способ изменения адресов источников/приемников кода в командах работы с цепочками данных. Если DF равен 0, то адреса наращиваются, 1 – уменьшаются;

  • IF - флаг разрешения прерывания, сброшенный в состояние 0, запрещает обработку запроса на прерывание, а в 1 разрешает ее;

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

Арифметико-логическое устройство предназначено для выполнения арифметических, логических и сдвиговых операций. Операнды поступают в АЛУ с А-шины, результат операции также на А-шину, откуда под управлением УУ передается далее по назначению.

Сегментные регистры предназначены для хранения адресов сегментов памяти. Используется четыре 16-разрядных сегментных регистра и, соответственно, четыре сегмента памяти. CS (Code Segment) – регистр сегмента кода, определяет сегмент памяти, в котором хранится выполняемая программа. DS (Data Segment)– регистр сегмента данных – задает сегмент памяти, содержащий переменные, описанные в программе. SS (Stack Segment) – регистр сегмента стека, определяет сегмент памяти, в котором расположен стек. ES (Extra Segment) – регистр экстра сегмента, задает дополнительный сегмент, в котором наряду с сегментом данных может храниться обрабатываемая информация.

IP (Instruction Pointer) – регистр адреса команды хранит 16-разрядное смещение очередной команды относительно начала сегмента кода, которая должна извлекаться из памяти.

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

Индексные регистры используются для доступа к элементам массивов (цепочек данных). SI (Source Index) – регистр индекса источника, хранит смещение адреса для чтения элемента из памяти. DI (Destination ) – регистр индекса приемника, хранит смещение адреса для записи в память.

Регистры указателей: SP, BP используются для работы со стеком. SP (Stack Pointer) – содержит адрес вершины стека. BP (Base Pointer) – хранит адрес базы стека.

Регистры общего назначения используются при выполнении тех или иных команд. Как правило они используются следующим образом AX – аккумулятор, BX – регистр базы, как правило в нем хранится начальный адрес обрабатываемого массива данных, CX – в ряде команд используется как счетчик при организации циклических вычислений, DX – регистр данных, используется для хранения различных данных, необходимых для выполнения некоторых команд. Все регистры общего назначения имеют младшую и старшую части, которые могут адресоваться отдельно (например, АХ состоит из AH и AL, BX – BH и BL и т. д.).

Сумматор физического адреса преобразует логический адрес вида СЕГМЕНТ:СМЕЩЕНИЕ в 20-ти битный линейный физический адрес. Подробнее о преобразовании логического адреса в физический будет сказано в п. 1.2.

1.2 Защищенный режим виртуальной адресации без страничной трансляции адресов.

Защищенный режим виртуальной адресации является основным режимом работы 32-разрядных процессоров. В реальном режиме (унаследованном ещё с семидесятых годов) процессор неспособен адресоваться к памяти выше границы первого мегабайта, более того, так как для адресации используются 16-битные смещения, невозможно работать с массивами более 65 536 байт. Защищенный режим лишён этих недостатков, в нём можно адресоваться к участку памяти размером 4Гб как к одному непрерывному массиву.

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

Основным защищаемым ресурсом является память, защита которой основана на сегментации. В защищенном режиме сегменты распределяются операционной системой, но прикладная программа может использовать только разрешенные для нее сегменты памяти, выбирая их с помощью селекторов (в качестве которых в защищённом режиме выступают 16-битные сегментные регистры) из предварительно сформированных таблиц дескрипторов сегментов. Селектор содержит номер дескриптора в таблице дескрипторов (биты 15 – 3), индикатор таблицы (бит 2 равен 0 если используется таблица глобальных дескрипторов (GDT), 1 – таблица локальных дескрипторов (LDT)), уровень привилегий запроса (биты 1 – 0), указывающий степень защиты сегмента. Процессор может обращаться только к тем сегментам памяти, для которых имеются дескрипторы в таблицах. Дескриптор состоит из трёх двухбайтных слов, в которых храниться вся информация о данном сегменте, среди которой 32-битный начальный адрес сегмента – база, и 20-битный размер сегмента – лимит (в виртуальном режиме сегменты могут иметь разную длину).

Числа, устанавливаемые процессором на адресной шине, являются адресами, т.е. номерами ячеек оперативной памяти, из которых необходимо считывать очередную команду или данные. Размер ячейки оперативной памяти составляет 8 разрядов, т.е. 1 байт. Поскольку процессор использует 16-ти разрядные адресные регистры, то это обеспечивает ему доступ к 65536 (FFFFh) байт или 64К (1К=1024 байт) основной памяти. Такой блок непосредственно адресуемой памяти называется сегментом. Любой адрес формируется из адреса сегмента (всегда кратен 16) и адреса ячейки внутри сегмента (этот адрес называют смещением). На компьютерах, оснащенных процессором 8086, оперативная память обычно имеет размер, равный 640К. Для того, чтобы работать с памятью такого размера, процессор осуществляет пересчет адресов с помощью процедуры, называемой вычислением эффективного адреса.

Физический 20-ти разрядный адрес вычисляется сложением сдвинутого влево на 4 разряда 16-ти разрядного адреса сегмента оперативной памяти со значением 16-ти разрядного смещения относительно начала этого сегмента. Используя 20-ти разрядные адреса, можно адресовать 1М оперативной памяти (1М=1024К=1048576 байт).

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