Лекция: Задание 2. Выполнение команды умножение.
Постановка задачи: составить программу вычисляющую произведение двух операндов. Результат сохранить в ячейке ОП.
Исходные данные: первый операнд принять равным «66», записать его вячейку ОП по адресу «61»; второй равным «29», записать по адресу «62»; сохранить произведение в ячейке ОП по адресу «91». Программу начать с адреса «10».
1. Занесём данные в ячейкиОП, аналогично заданию 1, пункт 1. Таким образом, получим:
· В ячейке 61 – первый операнд равный 66;
· В ячейке 62 – второй операнд равный 29.
2. Составим программу согласно заданию. Она приведена на рис. 4.
| Адрес Команды | Команда | Пояснения | ||||
| Поля команды | ||||||
| КОП | ТА | А | ||||
| Загрузка первого операнда из ячейки ОП с адресом 61 в АК | ||||||
| Выполнение команды умножение. Результат будет изначально находиться в АК | ||||||
| Запись результата в ОП по адресу 91 | ||||||
| Останов | ||||||
Рис. 4. Программа умножения двух чисел
3. Введем в СЧАКадрес первой команды программы.Для этого вБлоке управляющих сигналов в окне Выбор регистров выберем Счетчик адреса команды, соответствующее окно регистра окрасится в синий цвет.Наберем адрес первой команды «10».
4. Введем составленную программу в модель, аналогично заданию 1, пункт 2.
5. В Блоке управляющих сигналов выберемрежим работы – Такт. Последовательно нажимая кнопку Старт, выполним первую команду не акцентируя внимания на этапах её выполнения (выполнение команды Загрузкапроисходитза шесть тактов).
6. Начало выполнения команды Умножениепредставлено на рис.5. В Регистре команднаходится команда «07 0 61» – загрузить в АК содержимое ячейки «61». В АК находится первый операнд – «66», в ОП — содержимое ячейки «61». В окне МК БУСпоявится микрокоманда – СЧАК:=СЧАК +1, которая будет выполнена в следующем такте.
Рис. 5. Начало выполнения команды умножение
7. Нажмем кнопку Старт. В результате выполнения микрокоманды СЧАКувеличится на единицу, в окне МКпоявится микрокоманда:
РА:=СЧАК – Регистру адреса присвоить значение Счетчика адреса команд.
8. Последовательно нажимая кнопку Старт, проследим все этапы выполнения команды Умножение (рис. 6).
| № такта | Микрокоманда | Результат выполнения МК |
| 1- 5 | — | Выполнение команды «Загрузка» в АК первого операнда (66) |
| СЧАК:=СЧАК+1 | Формирование адреса следующей команды | |
| РА:=СЧАК | На РА появится адрес команды из СЧАК | |
| Чтение (РС:=ОП(РА)) | В РС заносится содержимое РА, т.е. команда 05 0 62(умножение) | |
| РК:=РС | В РК считывается команда умножение из РС ОП | |
| РА:=А | На регистр адреса заносится адрес второго операнда (62) из поля А команды, находящейся на РК | |
| Чтение (РС:=ОП(РА)) | В РС (ОП) заносится второй операнд (29) | |
| РО:=РС | Регистру операнда присваивается значение РС | |
| ПУСК АУ | Запуск арифметического устройства, т.е. в следующем такте выполнится команда сложение и в АК будет сформирован результат | |
| СЧАК:=СЧАК +1 | Окончание выполнения команды Сложение. Формирование адреса следующей команды. В следующем такте значение СЧАК будет увеличено на 1(в данной модели команды занимают одну ячейку памяти) для формирования адреса следующей команды |
Рис. 6. Микропрограмма выполнения команды умножение
9. Выберем в Блоке управляющих сигналоврежим работы Автоматинажмем кнопку Старт.В результате выполнения программы в ячейке ОПпо адресу «91» будет записан результат равный «01914».
10. Проверьте правильность выполнения программы (аналогично ЛР№1, заданию 2, пункт 8).
Задание для самостоятельной работы.Составить программу деления первого операнда на второй. Результат сохранить в ячейке ОП. Исходные данные:
· Операнд 1 — 400, записать по адресу = 63;
· Операнд 2 — 20, записать по адресу равному 64;
· Адрес ячейки ОП — 47 (в ней будет сохранен результат);
· Программу начать с адреса — 23;
· Выполнить по тактам команду Делениеи объяснить назначение микрокоманд;
· Выполнить по тактам команду Записьи объяснить назначение микрокоманд.