5 Разработка гипотетического микропроцессора
5.1 Разработка структуры микропроцессора
Гипотетический микропроцессор, разрабатываемый в данном курсовом проекте, основан на архитектуре микропроцессора i386. Он содержит: регистры общего назначения, сегментные регистры, микропрограммное устройство управления, устройство управления и синхронизации, 32-разрядное арифметико-логическое устройство, регистры указателей, индексные регистры, регистр команд, регистр флагов, устройство сегментации.
Общая структурная схема микропроцессора приведена на рисунке 5.1.
Рисунок 5.1 – Общая структурная схема микропроцессора
Пояснение к схеме:
EAX, EBX, ECX, EDX – регистры общего назначения;
ESP, EBP – регистры указателей;
ESI, EDI – индексные регистры;
РФ – регистр флагов;
АЛУ – арифметико-логическое устройство;
BR1, BR2 – буферные регистры операндов АЛУ;
РК – регистр команд;
УУиС – устройство управления и синхронизации;
МУУ – микропрограммное устройство управления;
CS, DS, SS, ES – сегментные регистры;
СЛА – сумматор линейного адреса;
HCS, HDS, HSS, HES – теневые регистры;
GDTR – регистр глобальной дескрипторной таблицы;
EIP – регистр адреса команды;
RO – регистр обмена;
CR3 – регистр базового адреса каталога страниц;
BR1, BR2 – буферные регистры адресов;
СФА – сумматор физического адреса.
К регистрам общего назначения относятся:
ЕAX – аккумулятор, в основном участвует в арифметических операциях и предназначен для хранения одного из операндов или результата операции. Возможно обращение к первому(AL) или второму(AH) байтам или к обоим вместе(AX);
EBX – регистр базы. В основном в нем хранится начальный адрес обрабатываемого массива данных. Возможно обращение к первому(BL) или второму(BH) байтам или к обоим вместе(BX);
ECX – используется как счетчик при организации циклов. Возможно обращение к первому(CL) или второму(CH) байтам или к обоим вместе(CX);
EDX – регистр данных. В командах умножения и деления сохраняет старшую половину 64-разрядных операндов, а в командах ввода-вывода содержит адрес внешних устройств. Возможно обращение к первому(DL) или второму(DH) байтам или к обоим вместе(DX).
Все регистры общего назначения 32-разрядные.
Регистры указателей ESP и EBP используются для работы со стековым сегментом: ESP – содержит адрес вершины стека, EBP – хранит адрес начального элемента массива данных в стековом сегменте. Эти регистры 32-разрядные. Возможно обращение к младшим 2-м байтам: SP – для регистра ESP и BP – для регистра EBP.
Регистры индексов используются для доступа к элементам массива. ESI – регистр индекса источника, хранит смещение адреса для чтения, EDI – регистр индекса приемника, хранит смещение адреса для записи. Эти регистры также 32-разрядные. Возможно обращение к младшим 2-м байтам: SI – для регистра ESI и DI – для регистра EDI.
Сегментные регистры индексируют глобальную дескрипторную таблицу, в записях которой хранятся базовые адреса сегментов. Используется четыре 16-разрядных сегментных регистра для адресации логических частей программы: CS – регистр сегмента команд, косвенно (через глобальную дескрипторную таблицу) адресует сегмент памяти, в котором хранится выполняемая программа, DS – регистр сегмента данных, косвенно адресует сегмент памяти, содержащий обрабатываемые данные, SS – регистр сегмента стека, косвенно адресует сегмент памяти, называемый сегментом, данные в котором хранятся по принципу LIFO, ES – косвенно адресует регистр дополнительного сегмента, в котором может храниться информация.
Регистр адреса команды EIP – хранит 32-разрядный адрес очередной команды, которая должна извлекаться из сегмента команд памяти.
48-разрядный регистр GDTR содержит в младших 32-х битах начальный адрес глобальной дескрипторной таблицы. Старшие 16-ть бит содержат максимальное смещение в глобальной дескрипторной таблице.
Регистр управления CR3 содержит в старших разрядах 20-битный физический базовый адрес каталога страниц и называется регистром базового адреса каталога страниц.
Регистр команд предназначен для хранения кода операции текущей команды. При необходимости из него считывается непосредственное значение операнда или его адрес в памяти.
Регистры BR1 и BR2 используются для временного хранения операндов арифметико-логических операций.
RO – используется для обмена между устройством сегментации и внутренней шиной процессора.
R1, R2 – регистры временного хранения составляющих для вычисления физического адреса.
БА – буферный регистр адреса, БД – буферный регистр данных. Используются для обмена с памятью.
5.2 Система команд микропроцессора
Система команд гипотетического микропроцессора включает такие команды: арифметические – IMUL, ADD, INC, пересылки MOV, XCHG и команду перехода JMP, JC/JNC.
Команда ADD
ADD Сложение целых чисел.
В результате выполнения команды операнд-приемник заменяется суммой обоих операндов (источника и приемника). При наличии переполнения устанавливается флаг CF.
Команда ADD выполняет сложение независимо от состояния флага переноса.
Последовательность команд:
14EB:0100 90 NOP
14EB:0101 B80000 MOV AX,0000
14EB: 0104 0440 ADD AL,40
14EB: 0106 1440 ADC AL,40
14EB: 0108 1440 ADC AL,40
14EB: 010A 1440 ADC AL,40
14EB: 010C 1440 ADC AL,40
14EB:010E 90 NOP
Регистры и флаги перед выполнением:
AX=0041 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0101
NV UP EI PL NZ NA PE NC
14EB:0101 B80000 MOV AX,0000
AX=0000 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0104
NV UP EI PL NZ NA PE NC
14EB: 0104 0440 ADD AL,40
AX=0040 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0106
NV UP EI PL NZ NA PO NC
*
Команда ADD устанавливает нечетность флага четности, потому что число установленных битов в младших 8 разрядах нечетно.
14EB: 0106 0440 ADD AL,40
AX=0080 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0108
OV UP EI NG NZ NA PO NC
* *
Поскольку результат сложения как знаковое 8-разрядное число не помещается в регистр AL, устанавливается флаг переполнения. Знаковый бит числа также устанавливается, в результате флаг знака делается отрицательным.
14EB: 0108 0440 ADD AL,40
AX=00С0 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=010А
NV UP EI NG NZ NA PE NC
*
Основное изменение в состоянии флагов заключается в сбросе флага переполнения: теперь результат как знаковая величина помещается в регистре-приемнике. В младших 8 разрядах установлено 2 бит, поэтому флаг четности устанавливается четным.
14EB: 010А 0440 ADD AL,40
AX=0000 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=010С
NV UP EI PL ZR NA PE CY
* *
В результате выполнения этой команды ADD возникает перенос из регистра-приемника. Устанавливается флаг переноса. Поскольку знаковый бит результата сброшен, флаг знака делается положительным. Результат равен 0, поэтому устанавливается флаг нуля.
14EB: 010C 0440 ADD AL,40
AX=0040 BX=0000 CX=0000 DX=0000 SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=010E
NV UP EI PL NZ NA PO NC
* * *
Эта команда ADD изменяет состояние флага нуля на ненулевое значение, сбрасывает флаг переноса и сбрасывает флаг четности.
Исключения для реального режима:
Прерывание 13 генерируется, если любая часть операнда в памяти имеет эффективный адрес больший, чем FFFFh в сегментах СS, DS, ЕS, FS, или GS. Если любая часть операнда памяти имеет эффективный адрес больший, чем FFFFh в стековом сегменте SS, то генерируется прерывание 12.
Исключения для защищенного режима:
Общая исключительная ситуация защиты (13) генерируется с кодом ошибки 0000h для операндов, расположенных в сегментах СS, DS, ЕS, FS, или GS в случае, если принимающий операнд расположен в сегменте, запись в который запрещена, или передающий операнд расположен в сегменте, из которого запрещено считывание, а также если любая часть операнда расположена по эффективному адресу выше границы сегмента. Стековая исключительная ситуация (12) с кодом ошибки 0000h для операндов, расположенных в стековом сегменте, генерируется в случае, если любая часть операнда имеет эффективный адрес выше границы сегмента. Стековая исключительная ситуация с кодом ошибки селектора сегмента возникает, если операнд в памяти находится в стековом сегменте SS, который помечен как отсутствующий в памяти. Исключительная ситуация отсутствия с кодом ошибки селектора сегмента возникает в случае, если операнд памяти находится в каком - либо из сегментов DS, ЕS, FS, GS, отмеченном как несуществующий. Может возникнуть исключительная ситуация потери страницы (14) с кодом ошибки потери линейным адресом ошибки страницы в регистре СR2.
- Министерство образования и науки украины
- 2 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд
- 3 Постановка задач проекта
- 4 Разработка алу микропроцессора
- 5 Разработка гипотетического микропроцессора
- Команда inc (Инкремент на 1) Команда inc прибавляет 1 к операнду - приемнику, но в отличие от add не влияет на флаг cf.
- Команда imul
- Команда mov
- 6 Разработка структуры центральной части микро эвм на базе микропроцессора
- Р исунок 6.1 – Структурная схема эвм
- 7 Разработка программы эмуляции работы микро эвм
- Приложение а
- Приложение б техническое задание на программу-эмулятор
- Приложение в руководство пользователя
- Приложение г