Работа с памятью. Подпрограммы и циклы
Цель работы: Изучение структуры и функций блока микропрограммного управления, микропрограммирование обработки данных, записанных в ОП, с использованием циклов и подпрограмм.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Используя как образец микропрограмму, приведенную в разделе 3, разработать, закодировать и ввести микропрограмму решения задачи. Ввести исходные данные, отладить микропрограмму и решить задачу, проследив за состояниями процессора при выполнении операций.
РАБОТА С ОПЕРАТИВНОЙ ПАМЯТЬЮ
Ввод данных в ОП производится, как было описано в работе 1. Возможны просмотр и корректировка данных в приостановках после выполнения очередного шага моделирования.
Адресация ОП выполняется различными способами, которые рассматриваются ниже. При этом 16-ричный адрес не должен превышать 3FF.
Прямая адресация. Адрес слова ОП задается в поле CONST МК. Загрузка адреса происходит через процессор по цепочке “шина DA - MR - ALU - SDA - ARAM” и требует отдельной МК с кодом 2 в поле WM и кодом 5 в поле SRC.
Косвенная регистровая адресация. Адрес хранится в одном из регистров РЗУ, куда он может быть загружен предварительно из поля CONST или сформирован иным образом. Адрес регистра задается полем В. Содержимое регистра передается в ARAM из RGB, для чего в поле WM нужно записать 3. Параллельно в АЛУ могут выполняться различные преобразования информации.
Автоинкрементная адресация. Адрес также передается в ARAM через RGB. Одновременно к регистру прибавляется 2. Это можно сделать, записав число 2 в поле CONST и указав CONST в качестве источника операнда R.
Автодекрементная адресация. Из регистра вычитается 2, полученное значение передается в ARAM с выхода SDA.
Косвенная адресация. Адрес ОП выбирается из другой ячейки ОП, адресуемой полем CONST или регистром РЗУ. Передача адреса в ARAM после его чтения из ОП производится через операционный блок по цепочке RGR - MS - ALU - SDA - ARAM.
ПОДПРОГРАММЫ И ЦИКЛЫ
Работа с подпрограммами выполняется с помощью функций CJS (условный вызов) и CRTN (условный возврат) схемы УПМ. Чтобы сделать их безусловными в поле JFI записывается 4. При вызове адрес возврата запоминается в стеке и происходит переход по адресу подпрограммы, заданному в поле CONST. При возврате происходит переход по адресу из стека и декремент указателя стека STP.
Для организации циклов с числом повторений N в счетчик RACT загружается значение N-1 из поля CONST с помощью функции LDCT. Для возврата в начало цикла используют функцию RPCT. Если RACT=0, следующая МК выбирается в естественном порядке. В противном случае происходит декремент счетчика и переход по адресу из поля CONST.
МИКРОПРОГРАММИРОВАНИЕ АЛГОРИТМОВ
Рассмотрим пример нахождения минимального элемента в массиве М чисел, записанных в ОП, начиная с адреса NADDR. Найденный элемент записывается в ОП по адресу MIN.
Программа MINEL (нахождение минимального элемента в массиве) имеет вид:
MINEL: MOV AX, NADDR ; начальный адрес
MOV BX, [NADDR] ; первый элемент
MOV RACT, M-1 ; Число циклов
LMIN: JSR SRAV ; Сравнение элементов
LOOP RACT, LMIN ; Переход по счетчику
MOV [MIN] ;Запись результата
HLT ; Останов
Входящая в нее подпрограмма сравнения SRAV имеет вид:
SRAV: ADD AX,2 ; Инкремент адреса
CMP [AX], BX ; Сравнение
JNL LSRAV ; Новый элемент не меньше
MOV BX, [BX] ; Запись меньшего элемента
LSRAV: RET ; Выход из подпрограммы
Минимальный элемент первоначально получается в ВХ, а затем передается в ОП по требуемому адресу.
При интерпретации программы примем, что основная микропрограмма (табл.1) начинается с адреса 0, подпрограмма (табл.2) - с адреса 10, массив из десяти чисел записан начиная с адреса 100, результат записывается по адресу 20, число циклов подсчитывается в счетчике RACT. Поскольку число выполняемых циклов на 1 больше начального значения счетчика, в него заносится значение 8.
Отметим особенности микропрограмм. По микрокоманде 0 начальный адрес массива заносится одновременно в AX и ARAM. По микрокоманде 1 первый элемент массива читается в ВХ, а в счетчик заносится число циклов из поля CONST. Таким образом три команды интерпретируются двумя микрокомандами. Команда записи результата интерпретируется двумя микрокомандами: четвертая заносит в ARAM адрес, а пятая записывает по этому адресу.
По микрокоманде 10 подпрограммы к содержимому АХ прибавляется 2, и полученная сумма засылается в АХ и ARAM как адрес следующего элемента. В последующих двух микрокомандах по этому адресу выбирается число соответственно для сравнения и записи в ВХ если оно меньше того, что там находится. В микрокоманде 11 предусмотрен условный, а в микрокоманде 12 - безусловный выход из подпрограммы.
|
Микропрограмма нахождение минимального элемента |
Таблица 1 | ||||
|
Адрес МК |
Операция |
Поле |
Значение |
Функция | |
|
0 |
MINEL: MOV AX, 100 |
B SRC DST CONST WM |
0 5 4 100 2 |
АХ DA Запись в РЗУ
Запись в ARAM | |
|
1 |
MOV BX, [AX] MOV RACT, 8 |
B MEM DST CHA CONST |
1 5 1 6 8 |
ВХ Чтение ОП Запись в РЗУ из RGR LDCT | |
|
2 |
LMIN: JSR SRAV |
JFI CHA CONST |
4 1 10 |
Б/у переход CJS
| |
|
3 |
LOOP RACT, LMIN |
CHA CONST |
4 2 |
RPCT | |
|
4 |
MOV ARAM, 20 |
SRC WM CONST |
5 2 20 |
DA Запись в ARAM | |
|
5 |
MOV [20], BX HLT |
A WM MEM JFI |
1 1 7 5 |
BX Запись в RGW Запись в ОП Останов | |
СОДЕРЖАНИЕ ОТЧЕТА
В отчет включаются схема алгоритма, программа с подробными комментариями, микропрограмма, исходные данные и результаты с указанием их размещения в памяти.
КОНТРОЛЬНЫЕ ВОПРОСЫ
Опишите структуру блока микропрограммного управления и функции его составляющих. Для каких целей используется стек, счетчик, мультиплексор кода условия в вашей микропрограмме?
Какие способы формирования адреса следующей МК реализуется в БМУ?
|
Микроподпрограмма сравнения |
Таблица 2 | ||||
|
Адрес МК |
Операция |
Поле |
Значение |
Функция | |
|
10 |
SRAV: ADD AX, 2 |
B SRC ALU DST CONST WM |
0 5 3 4 2 2 |
AX DA, RGB R+S Запись в РЗУ Запись в ARAM | |
|
11 |
CMP [BX], BX BGE RTS PC |
A MEM SRC ALU CCX DST CC JFI CHA |
1 5 3 1 1 0 5 1 5 |
BX Чтение ОП RGA, RGB R-S-1+C0 C0=1 Без записи JL Инверсия условия CRTN | |
|
12 |
MOV BX, [AX] RTS PC |
B MEM DST JFI CHA |
1 5 1 4 5 |
BX Чтение ОП Запись в РЗУ Б/у переход CRTN | |
Проанализируйте формирование условий перехода в зависимости от значения поля СС. В каких случаях используется инверсия условия? Когда следует использовать дополнительный регистр флажков?
Какие инструкции БМУ используются для организации циклов и подпрограмм? Можно ли в вашей микропрограмме организовать циклы и подпрограммы иначе, чем вы это сделали? Как это повлияет на качество микропрограммы?
Опишите способы адресации ОП, используемые в процессоре. Какие из них имеют место в вашей микропрограмме?
ЗАДАНИЯ НА МИКРОПРОГРАММИРОВАНИЕ
Вычислить количество нулевых, положительных и отрицательных элементов массива. Выборку и анализ элемента оформить как подпрограмму.
Вычислить суммы положительных, отрицательных и количество нулевых элементов массива. Выборку и анализ элемента оформить как подпрограмму.
Вычислить количество элементов массива А, равных некоторой константе, больше и меньше ее. Выборку и сравнение элемента оформить как подпрограмму.
Определить номера Н1 и Н2 первых элементов двух массивов, равных M и N соответственно и найти сумму этих элементов. Определение номера элемента оформить как подпрограмму.
Построить массив Q квадратов элементов массива А. Вычисление квадрата оформить как подпрограмму.
формировать 2 массива, элементы которых равны остаткам и частным от деления одноименных элементов исходного массива А на целую степень двойки. Вычисление остатка и частного для одноименного элемента оформить как подпрограмму.
Сформировать массив остатков от деления элементов исходного массива А на 15. Вычисление остатка оформить как подпрограмму.
Элементы исходного массива А дополнить остатками от деления этих элементов на 15: коды исходных чисел сдвигаются на 4 бита влево, а остатки записываются на освободившееся место. Вычисление остатка оформить как подпрограмму.
Подсчитать число элементов массива А, которые дают ненулевые остатки при делении на 15. Вычисление остатка оформить как подпрограмму.
Сформировать массив остатков от деления десятичных чисел на 9. Вычисление остатка оформить как подпрограмму.
РАБОТА №3
