Контрольная работа: Микропрограммирование операций ЭВМ

Сдвиги делятся на логические и арифметические.

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

При арифметическом сдвиге знак остается на своем месте, перемещаются значения только значащих разрядов.

Вид сдвига оформляется нужной записью микрооперации.

Ключевое слово R(k) соответствует сдвигу вправо на k разрядов, ключевое слово L(k) – сдвигу влево на kразрядов.

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

А(1 : 6):= R(2)А(1 : 6),

В(1 : 6):= L(2)В(1 : 6)

и А = 100101, В = 011011, тогда после выполнения данных микроопераций сдвига на два разряда слова А вправо и слова В влево будет А(1 : 6) = 001001, В = 101100. Видно, что освобождающиеся разряды доопределены нулями.

Циклический сдвиг дополнительно оформляется на основе составления, "выталкиваемые" разряды слева добавляются справа, а "выталкиваемые" разряды справа добавляются слева.

Выше рассмотренные примеры сдвигов слов А и В при циклических сдвигах будут записаны следующим образом:

А(1 : 6):= А(5 : 6). (R(2)А(1 : 6)),

В(1 : 6):= (L(2)В(1 : 6)).В(1 : 2).

Пусть, как и прежде А = 100101, В = 011011, тогда после выполнения микроопераций циклического сдвига будет А(1 : 6) = 011001, В = 101101. Видно, что освобождающиеся разряды доопределены значениями "вытолкнутых " разрядов.

Арифметические сдвиги имеют определенные особенности в зависимости от применяемых специальных машинных кодов. При сдвиге вправо свободные разряды слева доопределяются значениями знакового разряда независимо от применяемого кода, при сдвиге влево – нулями для дополнительного кода и значениями знакового разряда для обратного кода. Это рассматривается в курсе "Дискретная математика".

Например, арифметический сдвиг слова С(1 : 8) = 10011001 вправо на 3 разряда в любом коде должен быть записан так:

С(1 : 8):= С(1). С(1). С(1). С(1). (R(3)С(2 : 8)).

Видно, что знак у слова является отрицательным. После сдвига слова С будет С = 11110011.

При сдвиге влево на один разряд для обратного кода микрооперация будет иметь вид:

С(1 : 8):= С(1).((L(1)С(3 : 8)).С(1)).

Если как и прежде С = 10011001, то после сдвига будет С = 10110011.

При сдвиге влево на один разряд для дополнительного кода микрооперация будет иметь вид:

С(1 : 8):= С(1).((L(1)С(3 : 8)).0).

В дополнительном коде С = 10011010 (имеется лишняя единица для младшего разряда), тогда после указанного сдвига будет С =10110100. Видно, что дополнительный код отличается от обратного кода лишней единицей для младшего разряда.

К восьмому типу микроопераций относится микрооперация сравнения (на самом деле эта микрооперация является микрооперацией несравнения). В отличие от всех предыдущих микроопераций она имеет два вида результата.

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

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

С(1:6):= А(1:6) Å В (1:6)

и А = 100110, В = 000111, С= 010101, тогда после выполнения данной микрооперации будет C(1:6) = 100001, это говорит о несравнении слов А и В.

К-во Просмотров: 338
Бесплатно скачать Контрольная работа: Микропрограммирование операций ЭВМ