Смекни!
smekni.com

Микропрограммирование операций ЭВМ (стр. 3 из 7)

Пусть, например, имеется микрооперация

G(1:6):= А(1:6) + В(1:6)

и А = 100110, В = 100111, G= 010101, тогда после выполнения данной микро-операции будет G(1:6) = 001110.

Для первых двух микроопераций левое слово должно иметь лишний разряд по сравнению с наиболее длинным словом правой части.

В Ф–языке принято применять дополнительные коды для сложения и вычитания.

При получении кода слова слева у слова добавляется знаковый разряд, коды выравниваются по длине за счет доопределения значениями знаковых разрядов.

Пусть, например, имеются микрооперации

С(1:7):= А(1:6) + В (1:6),

D(1:7):= А(1:6) - В(1:6),

E(1:7):= В(1:6) - А(1:6)

и А = 100110, В = 100111, С= 010101, D= 101010, E= 1010101, тогда после выполнения данных микроопераций будет C(1:7) = 1001101, D(1:7) = 1111111, E(1:7)= 0000001.

Наконец, к десятой группе относятся так называемые комбинированные микрооперации. В правой части таких микроопераций разрешается иметь две, три обычные микрооперации.

Например, получение обратного кода отрицательного слова В описывается именно комбинированной микрооперацией:

В (1:6):= В(1).ù В (2:6),

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

Нетрудно заметить, что выше уже имелись комбинированные микрооперации.

1.3.2. Двоичные выражения

В Ф-языке имеются двоичные выражения, которые относятся к конструкциям средней сложности.

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

Двоичные выражения делятся на двоичные простые (неусловные) и двоичные условные выражения. Из последующего будет ясно, что двоичные условные выражения не следует отождествлять с чисто условными выражениями.

1.3.2.1. Двоичные простые выражения

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

Применительно к двоичным простым выражениям установлена очередность выполнения микроопераций, в определенной степени совпадающая с очередностью выполнения логических операций:

инверсия,

составление,

логическое умножение,

логическое сложение,

сложение по модулю два,

микрооперации группы сложения.

Естественно, что при наличии скобок вычисления должны вначале выполняться в них.

Что касается микроопераций группы сложения, то надо иметь в виду их однотипность. Подобные микрооперации (в других алгебрах операций) должны выполняться в той последовательности, в которой они записываются в выражениях.

Запомнить указанную очередность нелегко, этому может помочь искусственное ключевое слово, составленное из начальных букв микроопераций, ИСУС2С.

Из очередности видно, что в двоичное простое выражение можно включать не все микрооперации. Запрещается включать микрооперации передачи, счета, сравнения и сдвига.

В качестве примера двоичного простого выражения рассматривается следующее выражение:

А := В.ùС ) + D.Е /\ F \/ F1 – GÅH + D.

Для В =11, С = 1101, D= 01, E = 1001, F = 111001, F1 = 010101, G = 110, H = 101, А = 010000 будет новое А = 010001.

Первой выполняется инверсия, получается С = 0010. Далее имеется две микрооперации составления, получаются значения 110010 и 011001.

Конъюнкция дает значение 011001, дизъюнкция – 011101, сложение по модулю два – 011.

Остались микрооперации группы сложения. Первой должна выполняться микрооперация циклического сложения. Она дает значение 010000.

Вычитание характеризуется значением 001101. Наконец, сложение приводит к значению 001110.

Следовательно, после вычисления микроопераций правой части указанного двоичного простого выражения и передачи его слову правой части получится А = 001110.

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

Для рассматриваемого примера это будет выглядеть следующим образом:

А := В.ùСD.Е /\ F \/ F1 – GÅH + D.

Значение последней микрооперации и есть значение слова левой части.

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

1.3.2.2. Двоичные условные выражения

Правая часть двоичных условных выражений включает в свой состав несколько двоичных простых выражений. Расчеты производятся по одному из них в зависимости от значения логического выражения.

При двух простых выражениях V1, V2 и логическом выражении B структура двоичного условного выражения для слова Vимеет следующий вид:

V:= ЕСЛИ В ТО V1 ИНАЧЕ V2.

Расчеты производятся по выражению V1 при В = 1 и по выражению V2 при В = 0.

В качестве выражения V2 может использоваться двоичное условное выражение. Тогда будет три варианта расчетов.

Что касается условного выражения В, то оно похоже на двоичное простое выражение. Однако при вычислении оно может быть равно 0 или 1. Это достигается за счет включения отношений, в том числе равенства. В отличие от простого выражения дополнительно не разрешается использовать микрооперации группы сложения и составления.

Для условного выражения установлена следующая очередность выполнения отношений и микроопераций:

отношение за исключением равенства

инверсия,

логическое умножение,

логическое сложение,

сложение по модулю два,

равенство.

Естественно, что при наличии скобок вычисления должны вначале выполняться в них.

Запомнить указанную очередность также нелегко, этому может помочь искусственное ключевое слово, составленное из начальных букв отношений и микроопераций, ОИУС2Р.

В качестве примера двоичного условного выражения рассматривается следующее выражение:

В := ùD /\ Е \/ F = G > HÅI.

Для В =1, D= 0101, E = 1100, F = 0110, G = 0101, H = 111, I = 1 будет новое B = 0.

Следовательно, расчеты требуется проводить по выражению V2.

При расчетах условного выражения первой выполняется проверка отношения ">", результату проверки присваивается значение 0, так как отношение неверно.

Второй по очереди выполняется микрооперация инверсии, получается значение 1010.

Третьей реализуется микрооперация конъюнкции, имеет место значение 1000.

Четвертая очередь касается микрооперации дизъюнкции, она дает значение 1110.

Пятой выполняется микрооперация сложения по модулю два, получается значение 1.

Наконец, последняя проверка равенства дает В = 0. Следовательно, расчеты требуется проводить по выражению V2.

После вычисления микроопераций правой части указанного двоичного простого выражения (пусть V2 = А) и передачи его слову правой части получится А = 001110.

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

Для рассматриваемого примера это будет выглядеть следующим образом:

В:= ùD /\ Е \/ F = G > HÅI.

Значение последней проверки (проверки равенства) и есть значение слова В левой части.

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

1.3.3. Сложные конструкции

Сложными конструкциями Ф-языка являются функциональные микропрограммы (ФМП). Их рассмотрение не обходится без использования схем алгоритмов (СА), графических схем алгоритма (ГСА), матричных схем алгоритма (МСА), систем формул перехода (СФП), которые к средствам Ф-языка не относятся и СА, ГСА, МСА, ФМП и СФП подробно описаны в [3].

1.3.3.1. Графические схемы алгоритма

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

Поскольку ГСА предложена для алгоритмов операций ЭВМ, то в ней нет средств для отражения ввода-вывода.

Вместо блоков в ГСА используются вершины: начальные Y0 , конечные Yк, операторные вершины Y1,Y2, … , условные вершины X1,X2, … .На рис.2 показана СА классического алгоритма нахождения наибольшего общего делителя (ННОД),

где: А и С - исходные числа,

НОД - наибольший общий делитель.

Видно, что заданные числа при А<С меняются местами (блоки 5¸7). Поскольку после этого получается А >С, то число А заменяется на значение

А - С. Подобные циклы повторяются до получения А= С (блоки 3¸8), число А и будет требуемым результатом (блок 9).

Имеются отличия применительно к условным вершинам. Прежде всего,

условие (чаще всего отношение) записывается в закодированном виде.

Если оно выполняется, то результату присваивается единичное значение, в противном случае - нулевое значение. С учетом этого выходы вершины отмечаются указанными значениями вместо “да” и “нет”.

Содержательная и закодированная граф-схемы алгоритмов представлены на рис. 2 и 3 соответственно, коды микроопераций уi, микрокоманд Yi и условий XI - в табл.1.

1

2