
- •Введение
- •2 Описание архитектуры микроэвм
- •Ряд команд не имеют аргументов и состоят только из кода операции, например, останов, сброс и установка флагов.
- •Описание системы команд и режимов адресации
- •3 Описание языка мнемокода
- •3.2 Разделы ассемблера
- •3.2.1 Алфавит
- •3.3 Описание структур данных модуля
- •4 Алгоритм трансляции
- •5 Описание объектного кода
- •6 Описание программного продукта
- •Приложение а
- •А.4 Основные этапы разработки
2 Описание архитектуры микроэвм
Структурно-логическая схема микропроцессора
На рисунке 2.1 изображена структурно-логическая схема разрабатываемого процессора.
Рисунок 2.1 – Структурно-логическая схема микропроцессора
В состав микропроцессора входят все устройства, необходимые для приема из памяти, хранения и выполнения команд с заданными согласно варианту режимами адресации, а именно:
8-разрядная адресная шина;
8-разрядная шина данных;
8-разрядный регистр адреса и данных (DAR) – программно недоступен, используется процессором для хранения значений получаемых с шины адреса;
8-разрядный регистр команд (IR) – программно недоступен, используется процессором для хранения кода очередной команды;
8-разрядный счетчик адреса команды (РС) – программно недоступен, используется для вычисления адреса очередной команды;
16-разрядный аккумулятор Acc;
селектор – при помощи БУС определяет, какой регистр будет использоваться для чтения/записи;
4-разрядный регистр флагов – является дополнением к АЛУ и содержит флаги нуля (Z), знака (S), переноса (C), переполнения (О)– используется в командах условного перехода;
дешифратор команд и блок управления и синхронизации (БУС) – предназначены для определения команды и её обработки.
Разрядность устройств достаточна для хранения соответствующих данных, номеров регистров, адресов и других частей команд.
2.2 Описание форматов команд
В разрабатываемом процессоре предусмотрены типы адресаций:
прямая;
относительная;
прямая регистровая;
непосредственная;
базовая.
Форматы команд представлены на рисунках 2.2, 2.3 и 2.4.
код операции |
код регистра |
код регистра |
0 6 |
12 13 |
14 15 |
Рисунок 2.2 – Формат команды для арифметических операций, команд пересылок, операций сдвига и поразрядных логических операций
код операции |
метка |
0 3 |
8 15 |
Рисунок 2.3 – Формат команды для операций условного перехода
код операции |
код регистра |
const |
0 3 |
6 7 |
8 15 |
Рисунок 2.4 – Формат команды для операций непосредственной адресации
Ряд команд не имеют аргументов и состоят только из кода операции, например, останов, сброс и установка флагов.
Описание системы команд и режимов адресации
В соответствии с требованием функциональной полноты система команд включает следующие операции:
загрузку регистров и запись в память;
сложение и вычитание целых чисел;
поразрядные логические операции И, ИЛИ, НЕ;
сдвиг;
условные переходы;
изменение содержимого разрядов регистра кода условия (флагов);
ввод и вывод;
останов.
Система команд обеспечивает с помощью вышеприведенных команд организацию циклов, переход к подпрограмме и возврат. Модификация данных обеспечивается наличием команд записи в память, арифметических и логических операций, и команд, изменяющих содержимое аккумулятора и произвольных регистров.
Подробное описание команд.
Таблица 2.1 – Набор команд микропроцессора
Мнемон. код операции |
Наименование |
Формат |
Описание |
Команды пересылок |
|||
ПЕР ПР, ПР |
Пересылка из ПР в ПР |
КОП XXX ПР ПР 100000 ////// 13-14 15-16 |
ПР->ПР прямая регистровая |
ПЕР ПР, const |
Пересылка в ПР константы |
КОП XXX ПР const 0000 // 7-8 9-16 |
сonst-> ПР непосредственная |
ПЕР Acc, ПР |
Пересылка из ПР в Acc |
КОП XXX Асс ПР 100001 ////// 13-14 15-16 |
ПР-> Асс прямая регистровая |
ПЕР ПР,ПM |
Пересылка из памяти в ПР |
КОП ПР ПM 100010 7-8 9-16 |
ПM->ПР Прямая |
ПЕР ПM,ПР |
Пересылка из регистра в память |
КОП ПР ПM 100011 7-8 9-16 |
ПР->ПM Прямая |
ПЕР ПРБ,ПМ |
ПРБ - базовый регистр. Пересылка данных в регистр из адреса памяти, который вычисляется как ПМ+ПРБ |
КОП ПР ПМ 100100 7-8 9-16 |
[ПМ+ПРБ]-> ПР базовая |
Арифметические команды |
|||
ДОБ ПР, ПР |
Сложение двух регистров и запись результата в первый регистр |
КОП XXX ПР ПР 100101 ////// 13-14 15-16 |
ПР+ ПР-> ПР прямая регистровая |
ДОБ Асс, ПР |
Сложение двух регистров и запись результата в первый регистр |
КОП XXX Асс ПР 100110 ////// 13-14 15-16 |
Асс+ ПР-> Асс прямая регистровая |
ДОЗ ПР, ПР |
Сложение двух регистров с переносом и запись результата в первый регистр |
КОП XXX ПР ПР 100111 ////// 13-14 15-16 |
ПР+ ПР+C-> ПР прямая регистровая |
ДОЗ Асс, ПР |
Сложение двух регистров с переносом и запись результата в первый регистр |
КОП XXX Асс ПР 101000 ////// 13-14 15-16 |
Асс+ ПР+C-> Асс прямая регистровая |
ВЫЧ ПР, ПР |
Вычитание двух регистров и запись результата в первый регистр |
КОП XXX ПР ПР 101001 ////// 13-14 15-16 |
ПР- ПР-> ПР прямая регистровая |
ВЫЧ Асс, ПР |
Вычитание двух регистров и запись результата в первый регистр |
КОП XXX Асс ПР 101010 ////// 13-14 15-16 |
Асс- ПР-> Асс прямая регистровая |
ВЫЗ ПР, ПР |
Вычитание двух регистров с переносом и запись результата в первый регистр |
КОП XXX ПР ПР 101011 ////// 13-14 15-16 |
ПР- ПР - C-> ПР прямая регистровая |
ВЫЗ Асс, ПР |
Вычитание двух регистров с переносом и запись результата в первый регистр |
КОП XXX Асс ПР 101100 ////// 13-14 15-16 |
Асс- ПР - C-> Асс прямая регистровая |
Таблица 2.1 – Набор команд микропроцессора(продолжение)
Поразрядные логические операции |
|||
И ПР, ПР |
Поразрядное логическое И над содержимым двух регистров и запись результата в первый регистр |
КОП XXX ПР ПР 101101 ////// 13-14 15-16 |
ПР & ПР-> ПР прямая регистровая |
ИЛИ ПР, ПР |
Поразрядное логическое ИЛИ над содержимым двух регистров и запись результата в первый регистр |
КОП XXX ПР ПР 101110 ////// 13-14 15-16 |
ПР | ПР-> ПР прямая регистровая |
ИЛИ ПР,ПР |
Поразрядное деление по модулю два над содержимым двух регистров и запись результата в первый регистр |
КОП XXX ПР ПР 101111 ////// 13-14 15-16 |
ПР ^ ПР-> ПР прямая регистровая |
НЕ ПР |
Поразрядное логическое НЕ над содержимым регистра |
КОП XXX ПР 110000 //////// 15-16 |
~ПР -> ПР прямая регистровая |
Сдвиги |
|||
АСП ПР, ПР |
Арифметический сдвиг вправо содержимого регистра на кол-во разрядов указанных в R |
КОП XXX ПР ПР 110001 ////// 13-14 15-16 |
прямая регистровая |
АСЛ ПР, ПР |
Арифметический сдвиг влево содержимого регистра на кол-во разрядов указанных в R |
КОП XXX ПР ПР 110010 ////// 13-14 15-16 |
прямая регистровая |
АЛЛ ПР, ПР |
Арифметический логический сдвиг влево содержимого регистра на кол-во разрядов указанных в R |
КОП XXX ПР ПР 110011 ////// 13-14 15-16 |
прямая регистровая |
АЛП ПР, ПР |
Логический сдвиг вправо содержимого регистра на кол-во разрядов указ. в R |
КОП XXX ПР ПР 110100 ////// 13-14 15-16 |
прямая регистровая |
Условные переходы |
|||
ПЕРЕХОД МЕТКА |
Безусловный переход на метку |
КОП XXX МЕТКА 0001 //// 9-16 |
относительная |
ПНП МЕТКА |
Переход если нет переполнения (С=0) |
КОП XXX МЕТКА 0010 //// 9-16 |
относительная |
ПП МЕТКА |
Переход если есть переполнения (С=1) |
КОП XXX МЕТКА 0011 //// 9-16 |
относительная |
ПНН МЕТКА |
Переход если числа не равны (Z=0) |
КОП XXX МЕТКА 0100 //// 9-16 |
относительная |
ПН МЕТКА |
Переход если числа равны (Z=1) |
КОП XXX МЕТКА 0101 //// 9-16 |
относительная |
ПНЗ МЕТКА |
Переход если нет знака (S=0) |
КОП XXX МЕТКА 0110 //// 9-16 |
относительная |
ПЗ МЕТКА |
Переход если есть знак (S=1) |
КОП XXX МЕТКА 0111 //// 9-16 |
относительная |
ЦИКЛ, МЕТКА |
Уменьшение индекс. Регистра Ri0 на единицу, и переход, если он <>0 |
КОП XXX МЕТКА 111101 // 9-16 |
относительная |
Изменение содержимого регистра флагов |
|||
УСЧ |
Установить C в 1 |
КОП XXX 110101 // |
C=1 |
ОБЧ |
Установить C в 0 |
КОП XXX 110110 // |
C=0 |
УСЗ |
Установить Z в 1 |
КОП XXX 110111 // |
Z=1 |
ОБЗ |
Установить Z в 0 |
КОП XXX 111000 // |
Z=0 |
УСС |
Установить S в 1 |
КОП XXX 111001 // |
S=1 |
ОБС |
Установить S в 0 |
КОП XXX 111010 // |
S=0 |
УСО |
Установить О в 1 |
КОП XXX 111011 // |
О=1 |
ОБО |
Установить О в 0 |
КОП XXX 111100 // |
О=0 |
Таблица 2.1 – Набор команд микропроцессора(окончание)
Операции ввода и вывода |
|||
В RIi, номер порта |
Копирует число из порта ввода- вывода, номер которого указан в команде, в приемник |
КОП IRi номер порта 111101 7-8 9-16 |
Порт->IRi прямая регистровая |
ВЫВ номер порта, RIi |
Копирует число из указанного регистра в порт ввода- вывода, номер которого указан в команде |
КОП номер порта IRi 111110 7-14 15-16 |
IRi -> порт прямая регистровая |
Останов |
|||
ЗАКР |
Выполняет блокировку шины данных |
КОП 111111 |
|
Обозначения, используемые в таблицах:
КОП – код операции;
ПР – произвольный регистр;
Acc – регистр аккумулятор;
ПM[адрес] – содержимое памяти по указанному адресу.
Таблица 2 - Нумерация регистров
-
регистр
код
Acc
00
Ri0
01
Ri1
10