ЛР Форматы машинных команд (1075153), страница 3
Текст из файла (страница 3)
Команды условных переходов позволяют реализовывать разветвляющиеся и циклические программы.
Команды перехода к подпрограммам.
Команды перехода к подпрограммам могут быть условными и безусловными, Их особенность в том, что помимо перехода они должны обеспечить по окончании подпрограммы возврат к исходной программе, к той точке ее, откуда был совершен переход. Обычно для перехода к программе используются специальные команды:
-
безусловный переход с возвратом (БПВ)
-
условный переход с возвратом (УПВ)
В случае команды БПВ выполняются следующие действия:
Команды программы Команды подпрограммы
БПВ
БПК
АВОЗ
(Р)
-
Адрес возврата АВОЗ , т.е. содержимое СЧК, увеличенное на приращение адреса команды lK, запоминается по адресу Р, указанному в команде БПВ.
-
В счетчик команд СЧК заносится содержимое поля А команды БПВ, т.е. адрес (А) начала подпрограммы.
-
В конце подпрограммы должны размещаться команда возврата, которая может представлять собой команду БЛК, указывающую посредством косвенной адресации адрес ячейки, в которой находится адрес возврата АВОЗ команды.
Формально всю эту процедуру после приема в регистр команд РГК команды БПВ можно представить в виде:
СЧ К : = СЧ К + lK - образование АВОЗ
РГ ДОП : = СЧ К
РГ АОП : = РГ К[P]
ОП[РГ АОП] : = РГ DОП - запоминание АВОЗ
СЧ К : = РГ К[A] - передача в СЧ К адреса
начала подпрограммы
- - - - - - - - - - - - --
Выполнение подпрограммы
- - - - - - - - - - - - - -
РГ АОП : = РГ К[A] Выполнение возврата из подпрограмм по
РГ DОП : = ОП[РГ AОП ] команде БПК, в поле адреса которой
СЧ К : =РГ ДОП указан косвенный адрес Р.
БПК Р

В общем случае для хранения адреса возврата можно использовать:
-
Определенную ячейку оперативной памяти. Обычно адрес этой ячейки А указывают в адресном поле команды БПВ, а первая команда подпрограммы в этом случае должна располагаться в следующей ячейке ОП. (А+lK).
1 к-да
2 к-да
- - - - - - - -
БПК, А
БПВ А


А+lK
СЧК

Возврат из подпрограммы должен выполняться командой БПК:
БПК А

-
Одним из регистров общего назначения R, тогда для обращения к подпрограмме используют команду БПВ.
БПВ R

А для возврата из подпрограммы – команду БПКР
БПКР R

При этом подпрограмма не должна изменять содержимое регистра R.
-
Стек.
БПВС
В этом случае команда перехода с возвратом записывает в стек адрес возврата, а возврат из подпрограммы должен выполняться командой ПБСТ
ПБСТ
При выполнении команды БПВС, содержимое указателя стека должно увеличиться на lK.
Команды для организации циклов.
При организации циклов необходимо обеспечить необходимое число повторений некоторого фрагмента программы.
Для проверки того, что выполнено требуемое число повторений цикла и следует выйти из цикла, можно использовать либо обычную команду условного перехода (по условию, налагаемому в этом случае на некоторую переменную, изменяющуюся в процессе вычислений), либо специальные команды:
- условный переход по счетчику УПСЧ,
- условный переход по индексу УПИ.
-
Переход по счетчику.
Счетчиком обычно служит один из регистров общего назначения, в который перед началом цикла загружается число повторений цикла. Команда УПСЧ имеет вид (ЕС ЭВМ):
УПСЧ R1 X B D




Эта команда уменьшает на единицу содержимое счетчика (регистра R1) и , если оно после этого не равно «0», то управление передается по указанному в команде адресу
<B> + <X> + D.
В противном случае управление передается следующей по порядку команде.
УПСЧ R1 Х В D

РГ К



РОН
РОН
<R>=0
DОC
-1
ИНК

ИЛИ


М

СЧ К
В ОП
РОН[R1]:= РОН [R1] - 1

1
CЧ К : = РОН [Х]+ РОН [В]+
+ РГК [D]
CЧ К := CЧ К +1
-
Переход по индексу.
Рассмотрим команду УПИ (если индекс «<») имеет вид:
УПИ Х1 Х2 В D




Здесь Х1 – номер индексного регистра
Х2 – номер регистра – приращения
В – номер регистра базы
D – смещение.
Предельное значение индекса должна храниться в РОН с номером (Х2+1).
Команда производит суммирование содержимого регистров Х1 и Х2 новое значение индекса помещает в регистр Х1.
Если новое значение индекса меньше или равно содержимого регистра (Х2+1 ), то происходит переход к команде с адресом <B>+D (повторение цикла); в противном случае происходит переход к следующей за УПИ команде (выход из цикла).
Аналогично выполняется команда «Условный переход, если индекс больше».
2. Порядок выполнения лабораторной работы.
-
Загрузить пакет "CUU" и учебный пример.
-
Модернизировать учебный пример таким образом, чтобы использовались одноадресные команды. Проверить их работоспособность на модели.
-
Модернизировать учебный пример таким образом, чтобы использовались двухадресные команды.. Проверить их работоспособность на модели.
-
Модернизировать учебный пример таким образом, чтобы использовалась подпрограмма вывода элементов массива на экран. Проверить работоспособность программы на модели.
-
Разработать подпрограмму анализа недопустимого кода операции и проверить ее работоспособность на модели.