ЛР Типовые микрооперации (1075150), страница 2
Текст из файла (страница 2)
2) Внутренние - значения присваиваются и используются внутри МП (тип L).
5) Вспомогательные - аналогичны внутренним, но значения сохраняют только в течение одного машинного такта (А).
4) Выходные - значения присваиваются внутри МП, а используются - вне МП (тип - О).
Некоторые слова могут характеризоваться сразу несколькими типами – IL,LO,ILO.
Все слова, которые используются в ФМП, должны быть описаны в виде таблицы:
ТИП | Наименование иформат | ПОЛЯ | ПОЯСНЕНИЯ |
I | Д(0:15) | - | Входное слово |
L | А(0:15) | ЗнА=А(0) | 1-й операнд |
L | В(0:15) | ЗнВ=В(0) | 2-й операнд |
LO | С(0:15) | ЗнС=С(0) | Результат |
L | Сч(0:15) | - | Счетчик |
A | X | - | Признак |
Двоичные выражения.
Для записи преобразований, выполняемых МО-ми, и для записи условий используются двоичные выражения.
Двоичное выражение - это последователь первичных двоичных выражений, соединенных знаками двоичных операций.
Двоичные выражения определяют правило вычисления двоичного значения путем выполнения операций над первичными двоичными выражениями.
Первичные двоичные выражения - это константа, слово, элемент массива и поле.
Разрешается использовать двоичные, восьмеричные, десятичные и шестнадцатеричные константы:
10102, 468, 9310, 1С516
Слова в двоичных выражениях представляются своими идентификаторами, т.к. их разрядность определена в описании. Например, Д, А, В, С, Сч, ЗнА, ЗнС.
Слово, являющееся элементом массива записывается в виде M[i], где M - идентификатор массива, а i - номер слова в массиве, т.е. m1 i m2 .
Поля записываются в виде А(0), А(1:4), А(14:15), где указывается идентификатор слова и границы поля или представляются непосредственно идентификаторами, имеющими поля: ЗнА, ЗнВ, ЗнС.
В двоичных выражениях элементы массивов и поля используют наравне со словами, представляя соответствующие двоичные значения.
Первичные двоичные выражения - константы, слова и поля объединяются в двоичные выражения с помощью двоичных операций (см.табл.).
Знак операции | Наименование операции | Старшинство |
| Инверсия | 1 |
. | Составление | 2 |
| Конъюнкция | 3 |
| Дизъюнкция | 4 |
| Сложение по mod2 | 4 |
+ | Сложение | 5 |
| Циклическое сложение | 5 |
- | Вычитание | 5 |
Примеры.
Пусть А(1:4)=1010 и В(1:4)=0110
1)А=0101 и В=1001
-
А
.В=10100110 и В.А=01101010
-
АВ=1110 Выполняются поразрядно
-
АВ=0010
-
А+В=1010
+
0110
10000
-
АВ=1100
-
В-А=0110
-
1010
…11100
-
А-В=1010
-
0110
0100
-
А
В=1010
0110
10000
0001
При вычитании большего числа из меньшего результат получается в дополнительном коде и содержит бесконечное число разрядов, причем, старшие разряды равны I.
П
ри выполнении бинарных операций () операнды совмещаются по младшим разрядам. При этом операнд с меньшим числом разрядов дополняется нулями со стороны старших разрядов до выравнивания длины.
Порядок вычисления двоичного выражения определяется скобками, старшинством операций и последовательностью операции одинакового старшинства:
4 2 1 3 5
С+11.А(1:15)В+1
Микрооперации.
В синтаксической смысле микрооперация (МО) - это оператор присваивания, посредством которого слову или полю присваивается значение двоичного выражения.
МО состоит из левой части, знака присваивания := и двоичного выражения.
В левой части оператора присваивания указывается слово, поле или составное слово вида А.В.
Рассмотрим примеры записи микроопераций:
1. А:=0 - присвоение слову А нулевого значения.
2. В(1):=1 - присвоение полю слова В значения I.
3. А:=В - присвоение слову А значения слова В.
4. С:=С+1 - увеличение значения слова С на I.
5. С:=С-1 - уменьшение значения слова С на I.
6. С:=С+А - увеличение значения слова С на значение слова А.
7. С:=С+А+1 - сложение С с дополнительным кодом слова А,
т.е. вычитание А из С.
8. А.В:=X - присваивание слову А старших разрядов слова X,
а слову В - младших.
Операция присваивания выполняется следующим образом. Сначала вычисляется значение двоичного выражения, стоящего в правой части оператора присваивания, а затем вычисленное значение присваивается слову, стоящему в левой части оператора присваивания.
МО выполняется за один такт. Если в левой части оператора указано l-разрядное слово, а двоичное значение содержит r, разрядов, то
- при l < r слову присваивается l младших разрядов двоичного выражения, а (r-l) старших разрядов двоичного выражения отбрасываются.
- при l > r старшим (l-r) разрядам присваиваются "0" и r младшим разрядам - значение двоичного выражения.
l l
а) б)
r r
Классификация микроопераций
Исторически выделяют следующие классы микроопераций:
1) установки, 2) инвертирования, 3) передачи, 4)сдвига, 5) счета, 6) сложения, 7) бинарные логические, 8) комбинированные.
1) Микрооперация установки - присваивает слову значение константы. Например,
А:=0 С:=1 К(1:17):=12710
В:=1111 DC:=1F16
2) МО инвертирования -изменяет значение слова на инверсное. Например, А:= А,
С(0): =С(0)
3) МО передачи - присваивает слову значение другого слова, в том числе инверсии или составного слова:
А:=В С:=А
А(0):=В(0) С:=11.А(1:15)
4) МО сдвига - изменяет положение разрядов слова по отношению к начальному путем перемещения каждого разряда на К позиций влево или вправо.
Любая МО сдвига может быть представлена в форме оператора присваивания. Рассмотрим различные сдвиги слова А(1:32);
1. А:=А(2:32).0 - сдвиг на I разряд влево с введением 0 в освобождающийся при сдвиге разряд.
2. А:=А(2:32).А(1) - циклический сдвиг на I разряд влево.
3. А:=00.А(1:30) - сдвиг на 2 разряда вправо с введением нулей в освобождающиеся разряды.
4. А:=А(31:32).А(1:30) - циклический сдвиг на два разряда вправо.
Для сокращения записи МО сдвига в Ф-языке используются две стандартные процедуры:
а) RK(A) - удаление из двоичного выражения А К младших (правых) разрядов, т.е. сдвиг А на К разрядов вправо.
б) LK(A) - удаление из двоичного выражения А К старших (левых) разрядов, т.е. сдвиг А на К разрядов влево. С использованием этих процедур рассмотренных выше примеры будут иметь вид:
т) А: =L1(A.0)
2) A: =L1(A.A(1))
5) A: =R2(00.A)
4) A: =R2(A(31:32).A)
МО сдвига надо отличать от МО передачи. Так если A(1:31) и В(1:31) - 31-разрядные слова, то
А: =0.В(1:30)
будет не МО сдвига, а МО передачи слова В со сдвигом на один разряд вправо, т.е. передача поля В(1:30).
В ЭВМ различают три типа сдвигов:
логические, арифметические и циклические.
При логическом сдвиге сдвигаются все разряды слова, а освобождающиеся разряды заполняются нулями. Выдвигаемые разряды теряются.
При арифметическом сдвиге знаковый разряд не сдвигается. Освобождающиеся при сдвиге разряды числа, представленного в дополнительном коде, заполняются содержимым знакового разряда числа (0 - для положительных чисел, I - для отрицательных). Выдвигаемые разряды теряются.
При циклическом сдвиге крайние разряды слова как бы соединяются между собой так, что выдвигающиеся разряды слова поступают в освобождающиеся позиции этого же слова.
В качестве примера организуйте логический, арифметический и циклический сдвиги пятиразрядного слова С(0:4) на два разряда вправо. Пусть С=-0,1011. Тогда в дополнительном коде
1 | 0 | 1 | 0 | 1 |

а
(01)
) арифметический сдвиг
1 | 1 | 1 | 0 | 1 |


С(1:4):=R2(11.C(1:4))
б) логический сдвиг
0 | 0 | 1 | 0 | |
(01)

С:=R2(00.С)
в
) циклический сдвиг
0 | 1 | 1 | 0 | |
(01)

