Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основной текст лекций.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
    1. Пример выполнения программы.

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

Предположим, что команды программы будут размещаться в основной памяти, начиная с адреса 300, а операнды- с адреса 400. Результат выводится на порт с номером 4.

Таблица 3.1. Команды гипотетической ВМ.

КОп

АЧ

Описание

LDA

Adr

Загрузка в аккумулятор содержимого ячейки ОП с адресом Adr

ADD

Adr

Сложение содержимого аккумулятора с содержимым ячейки ОП с адресом Adr. Результат остаётся в аккумуляторе

BRZ

Adr

Переход к команде, хранящейся по адресу Adr, если результат предыдущей арифметической операции равен 0, иначе естественный порядок вычислений не нарушается

OUT

PortN

Вывод содержимого аккумулятора на ПУ, подключённое к порту с номером PortN

HLT

Останов вычислений

Таблица 3.4. Программа к рассматриваемому примеру

Адрес ОП

Код операции

Адрес ячейки или номер порта

300

LDA

400

301

ADD

401

302

BRZ

304

303

OUT

4

304

HLT

400

Операнд 1

401

Операнд 2

Перед запуском программы в СК необходимо занести адрес ячейки ОП, содержащей первую выполняемую команду программы, то есть 300.

Этапы выборки и декодирования команды, формирование адреса следующей команды были рассмотрены ранее (рис. 3.3, 3.4). На рисунке 3.5 представлен алгоритм выполнения программы, загрузка счетчика команд и декодирование команд программы в алгоритме опущены, на рисунке 3.6 приведена функциональная схема ВМ с указанием соответствующих сигналов управления, вырабатываемых МПА.

Исполнение операции загрузки аккумулятора. Команда LDA 400 обеспечивает занесение в аккумулятор содержимого ячейки ОП с адресом 400 (выполнение микрокоманд 1-3 на рис 3.6).

Исполнение операции сложения. Команда ADD 401 (выполнение микрокоманд 1, 2, 4, 5 на рис 3.6).обеспечивает суммирование содержимого аккумулятора с содержимым ячейки 401 (вторым операндом). Результат сложения остаётся в аккумуляторе (микрокоманда 6). Одновременно с этим в АЛУ формируются признаки результата.

Исполнение операции условного перехода. Для изменения порядка выполнения программы используются команды условного и безусловного перехода (команда BRZ 304).Адрес перехода хранится в адресном поле команды. Команда анализирует хранящийся в РПрз признак (флаг) нулевого результата. При нулевом значении флага (условие перехода не выполнено) естественный порядок выполнения программы не нарушается (микрокоманда 7), при единичном значении флага в СК заносится содержимое РА (микрокоманда 8), т.е. значение 304.

Исполнение операции вывода. Команда OUT 5 обеспечивает вывод содержимого аккумулятора в периферийное устройство, подключённое к порту вывода с номером 5. Для выполнения команды по СУ РАДВВ (микрокоманда 9) адресная часть команды из РА поступает на вход дешифратора номера порта ввода/вывода для выбора требуемого порта. В следующем такте по сигналу Выв содержимое аккумулятора передается на подключенное к этому порту ПУ.

Исполнение команды останова. Команда HLT обеспечивает приостановку программы, т.е. завершает вычисления в программе. При этом вырабатывается сигнал Ост, извещающий операционную систему о завершении текущей программы.