
1. Алгоритм умножения и деления заданных двоичных чисел.
Принимаем X=00001100, Y=00001101, тогда X х Y = 10011100. В таблице 1 приведём последовательность действий, приводящих к указанному результату. Для наглядности младший разряд ДР(ДР0i) вынесен в отдельную графу.
Таблица 1
i |
M0i |
PP ДР |
ДР0i |
M0i+1 |
|
|
0000000 00001100 |
0 |
Сдвиг 1 |
1 |
Сдвиг 1 |
0000000 00000110 |
0 |
Сдвиг 2 |
2 |
Сдвиг 2 |
0000000 00000011 |
1 |
Сложение +Сдвиг 3 |
3 |
Сложение |
00001101 |
|
|
|
+ |
00001101 |
|
|
|
Сдвиг 3 |
00000110 10000001 |
1 |
Сложение +Сдвиг 4 |
4 |
Сложение |
00001101 10000001 |
1 |
Сдвиг 5 |
|
+ |
00010011 10000001 |
|
|
|
Сдвиг 4 |
00001001 11000000 |
0 |
|
5 |
Сдвиг 5 |
00000100 11100000 |
0 |
Сдвиг 6 |
6 |
Сдвиг 6 |
00000010 01110000 |
0 |
Сдвиг 7 |
7 |
Сдвиг 7 |
00000001 00111000 |
0 |
Сдвиг 8 |
8 |
Сдвиг 8 |
00000000 10011100 |
0 |
|
i – номер цикла при реализации алгоритма умножения на МП; М0i – микрооперация, используемая в i-ом цикле алгоритма; М0i+1 – микрооперация, рекомендуемая по результатам анализа ДР0i для исполнения в i+1 цикле алгоритма. После 8-ого цикла в РР, ДР фиксируется результат.
2. Реализация микрокомандного режима.
Соединение гнезда СИМ с гнездом СИНХР микропроцессора;
Занесение МК 0000 01 000 в РМК: обнуление рабочего регистра (0РР);
Занесение МК 0001 11 010 в РМК для переноса вводимых данных в регистр данных (РД) в дополнительный регистр (ДР) (ШВхДР);
Занесение данных в РД операнда Y00001101 (ШВх=Y) в ДР и МК 1111 10 000 в РМК для переноса вводимых на следующей операции данных в нулевой регистр регистров общего назначения (РОН) (ШВхР0);
Ввод данных в РД операнда Х 00001100 в Р0 и МК 1110 11 010 (ШВх=X) для вывода содержимого РД в выходной регистр, то есть на шину выхода (РДШВых), и с помощью индикации светодиодов в выходном регистре определяем младший разряд дополнительного регистра: если 0, то выполняем на следующей операции логический сдвиг вправо, если 1, то прибавляем к содержимому рабочего регистра значение операнда X в нулевом регистре РОН и потом арифметический сдвиг вправо;
Так как младший разряд ДР равен 0, то выполняем логический сдвиг вправо рабочего и дополнительного регистра (РР,ДР)СЛПРР,ДР с помощью ввода команды с кодом 1100 11 101, тем самым реализуя первый цикл i=1;
Ввод команды 1110 11 010 для вывода дополнительного регистра на шину выхода, и рабочего регистра на шину адреса, отображающихся индикаторами на выходных регистрах сверху от мнемосхемы в прямоугольниках «Выход информации» и «Выход адреса» соответственно (ДРШВых, РРШАдр);
Снова младший разряд ДР равен 0, выполняем то же , что и в пункте 6, цикл i=2;
Повторяем пункт 7;
По индикаторам на выходных панелях снова определяем младший разряд ДР, в этом случае равный 1, поэтому вводим в РМК команду 1011 10 000, которая к нулевому значению РР 00000000 прибавляет содержимое регистра Р0 в РОН, равное 00001100, в результате получается 00001100 и затем выполняет арифметический сдвиг вправо (РР+Р0,ДР)САПРР,ДР, реализуется циклi=3;
Далее всё аналогично повторяем в зависимости от значения пладшего разряда ДР, пока число циклов не достигнет 8;
На панелях «Выход информации» и «Выход адреса» (ШВых и ШАдр) с помощью индикации светодиодов видим результат: значение произведения X*Y, равное 10011100, то есть работа в системе микрокоманд выполнена верно.
Все выполненные операции представлены для удобства в таблице 2:
Таблица 2
k |
i |
Установка |
Контроль |
Пояснения | ||||
П |
ШВх |
Код вводимой МК вводимойМК |
ДР0 |
| ||||
1 |
|
0 |
|
0000 01 000 |
|
0РР | ||
2 |
|
1 |
|
0001 11 010 |
|
ШВхДР | ||
3 |
|
0 |
00001101 |
1111 10 000 |
|
ШВх=Y, ШВхР0 | ||
4 |
|
0 |
00001100 |
1110 11 010 |
0 |
ШВх=X, РДШВых | ||
5 |
1 |
0 |
|
1100 11 101 |
|
(РР,ДР)СЛПРР,ДР | ||
6 |
|
0 |
|
1110 11 010 |
0 |
ДРШВых, РРШАдр | ||
7 |
2 |
0 |
|
1100 11 101 |
|
(РР,ДР)СЛПРР,ДР | ||
8 |
|
0 |
|
1110 11 010 |
1 |
ДРШВых, РРШАдр | ||
9 |
3 |
0 |
|
1011 10 000 |
|
(РР+Р0,ДР)САПРР,ДР | ||
10 |
|
0 |
|
1110 11 010 |
1 |
ДРШВых, РРШАдр | ||
11 |
4 |
0 |
|
1100 11 101 |
|
(РР+Р0,ДР)САПРР,ДР | ||
12 |
|
0 |
|
1110 11 010 |
0 |
ДРШВых, РРШАдр | ||
13 |
5 |
0 |
|
1011 10 000 |
|
(РР,ДР)СЛПРР,ДР | ||
14 |
|
0 |
|
1110 11 010 |
0 |
ДРШВых, РРШАдр | ||
15 |
6 |
0 |
|
1011 10 000 |
|
(РР,ДР)СЛПРР,ДР | ||
16 |
|
0 |
|
1110 11 010 |
0 |
ДРШВых, РРШАдр | ||
17 |
7 |
0 |
|
1100 11 101 |
|
(РР,ДР)СЛПРР,ДР | ||
18 |
|
0 |
|
1110 11 010 |
0 |
ДРШВых, РРШАдр | ||
19 |
8 |
0 |
|
1100 11 101 |
|
(РР,ДР)СЛПРР,ДР | ||
20 |
|
0 |
|
1110 11 010 |
|
ДРШВых, РРШАдр |
Примечания: k – порядковый номер шага реализуемого алгоритма или введённой в МП микрокоманды; i – порядковый номер цикла;