Лабораторная работа № 1
РАЗРАБОТКА И ОТЛАДКА МИКРОПРОГРАММЫ ВЫПОЛНЕНИЯ КОРОТКОЙ АРИФМЕТИЧЕСКОЙ ОПЕРАЦИИ СУММИРОВАНИЯ
Пусть требуется составить и отладить микропрограмму выполнения операции суммирования чисел в прямых кодах для дробных чисел фиксированного формата в системе с фиксированной запятой программным неускоренным методом (код шифра 12111).
На первом этапе разрабатывается структурная схема алгоритма выполнения операции в содержательном описании, возможный вариант которой приведен на рис. 10, где используются следующие обозначения: ЗнA, ЗнB, ЗнС – знаковые биты операндов A, B и результата C; Am, Bm, Cm – модули операндов и результата.
На втором этапе осуществляется отображение алгоритма на множестве микроинструкций БМП К584ВМ1 с предварительным закреплением его внутренних регистров за определенными операндами. Пусть регистры общего назначения распределены следующим образом: РОН0 – для хранения операнда А; РОН1 – для хранения операнда B; РОН2 – для выполнения промежуточных вычислений и хранения конечного результата операции C; РОН3 – для хранения константы вида 10…0; РОН4 – для хранения Am; РОН5 – для хранения Bm. Регистр РР используется для хранения промежуточных значений. В регистре РРР формируется сообщение о наличии или отсутствии ошибок.
Текст микропрограммы выполнения операции суммирования, по рассмотренному алгоритму с использованием символьного языка отладчика «БМП К584ВМ1», приведён в табл. 3.
Таблица 3
Микропрограмма суммирования чисел
Адрес |
Микроинструкция |
Комментарий |
1 |
2 |
3 |
000 |
РОН0 := ШИНвх |
Ввод операнда А |
001 |
РОН1 := ШИНвх |
Ввод операнда В |
002 |
РР := !РОН0 + П (П=1) |
Если ПАЛУ3, то 35 (Проверка A = 0) |
003 |
РР := !РОН1 + П (П=1) |
Если ПАЛУ3, то 37 (Проверка B = 0) |
004 |
РР := !П (П=1) |
РР = 0...0 |
005 |
РР := СЦП(РР + П) (П = 1) |
РР = 10...0 |
006 |
РОН3 := РР + П (П = 0) |
Формирование константы 10...0 |
007 |
РР := !РОН3 + П (П = 0) |
РР = 01...1 |
008 |
РР := РОН0 and РР |
Выделение Аm |
009 |
РОН4 := РР + П (П = 0) |
Сохранение Аm |
010 |
РР := !РОН3 + П (П = 0) |
РР = 01...1 |
011 |
РР := РОН1 and РР |
Выделение Вm |
012 |
РОН5 := РР + П (П = 0) |
Сохранение Bm |
013 |
РР := РОН0 + П (П = 0) |
Пересылка операнда A в РР |
014 |
РР := РОН1 xor РР |
Суммирование операндов по mod2 |
015 |
РР := СЛЛ(РР + П) (П = 0) |
Если !СДЛ1, то 16 иначе 24 (Проверка знаков операндов) |
016 |
РР := РОН5 + П (П = 0) |
Пересылка Bm в РР |
017 |
РР := РОН4 + РР + П (П = 0) |
Сm = Аm Вm |
018 |
РОН2 := РР + П (П = 0) |
Сохранение Cm |
019 |
РР := СЛЛ(РР + П) (П = 0) |
Если !СДЛ1, то 21 иначе 20 (Проверка ЗнC) |
Окончание табл. 3
1 |
2 |
3 |
020 |
РРР := !П (П = 0) |
Идти к 40 (Сообщение "Переполнение") |
021 |
РР := РОН0 + П (П = 0) |
Пересылка операнда А в РР |
022 |
РР := РОН3 and РР |
Формирование ЗнС |
023 |
РОН2 := РОН2 or РР |
Идти к 39 (C = ЗнC Cm) |
024 |
РР := РОН5 + П (П = 0) |
Пересылка Am в РР |
025 |
РР := РОН4 - РР - 1 + П (П = 1) |
Cm = Am – Bm |
026 |
РОН2 := РР + П (П = 0) |
Сохранение Сm |
027 |
РР := !РР + П (П = 0) |
Если ПАЛУ3, то 28 иначе 29 (Проверка C = 0) |
028 |
РОН2 := !П (П = 1) |
Идти к 39 (C = 0) |
029 |
РР := РОН2 + П (П = 0) |
Пересылка Сm в РР |
030 |
РР := СЛЛ(РР + П) (П = 0) |
Если !СДЛ1, то 21 иначе 31 (Проверка ЗнC) |
031 |
РР := РОН5 + П (П = 0) |
Пересылка Bm в РР |
032 |
РР := РР - РОН4 - 1 + П (П = 1) |
Cm = Bm – Am |
033 |
РОН2 := РР + П (П = 0) |
Сохранение Cm |
034 |
РР := РОН1 +П (П = 0) |
Идти к 22 (Пересылка операнда B в РР) |
035 |
РР := РОН1 + П (П = 0) |
Пересылка операнда B в РР |
036 |
РОН2 := РР + П (П = 0) |
Идти к 39 (Сохранение операнда B) |
037 |
РР := РОН0 + П (П = 0) |
Пересылка операнда A в РР |
038 |
РОН2 := РР + П (П = 0) |
Сохранение операнда A |
039 |
РРР := !П (П = 1) |
Сообщение "Переполнения нет" |
040 |
ШИНвых := РРР + П (П = 0) |
Вывод сообщения |
041 |
ШИНвых := РОН2 |
Вывод С, "Конец" |
В микропрограмме применяется естественная адресация, возможные принудительные передачи управления указаны в колонке «Комментарий». Так, например, в микроинструкции по адресу 2 при выполнении условия П = 1 управление передается микроинструкции по адресу 35, в противном случае – по адресу 3.
При выполнении микроинструкции суммирования и вычитания логическим условием является значение выходного переноса ПАЛУ3 арифметико-логического устройства, а при выполнении микроинструкции сдвига – значение инверсного выходного сигнала сдвига одинарного слова !СДЛ1.
Правильность отображения исходного алгоритма в текст микропрограммы проверяется путём прогона данной микропрограммы на программно-логической модели «БМП К584ВМ1».