Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
10.02.2015
Размер:
632.83 Кб
Скачать

Команды условного перехода.

При условном переходе адрес следующей команды зависит от выполнения некоторого условия. Обычно, если условие выполняется, то происходит переход к команде по адресу, указанному в адресной части команды условного перехода (УП).

УП А

В противном случае выбирается следующая по порядку команда, адрес которой определяется содержимым счетчика команд, увеличенным на приращение адреса команды lК. Так же, как и в команде безусловного перехода могут использовать те же способы адресации. Условия перехода (результат предыдущей операции >0, <0, =0, переполнение и т.д.) задаются кодом операции УП или в виде отдельного поля кода маски условия М в команде УП.

УП М А

В последнем случае следующая команда определяется по алгоритму:

1 0

СЧК : = РГК[A]

СЧК := СЧК +lK

Здесь УC[М] - логическая функция (условие), заданное маской М.

Если же условие перехода задается кодом операции, то алгоритм примет вид:

1 0

СЧК : = РГК[A]

СЧК := СЧК +lK

Так, например, в больших ЭВМ используется 4-х разрядная маска условия, каждый разряд маски управляет своим признаком. Это позволяет задавать в качестве условия перехода выполнение одного из четырех признаков результата (если в маске одна единица), либо дизъюнкция признаков (если в маске несколько единиц).

Результат операции

Код признака

Условное обозначение

Маска условия ЕС ЭВМ

=0

<0

>0

переполнение

00

01

10

11

ПР0

ПР1

ПР2

ПР3

1000

0100

0010

0001

При этом при М=1111 команда УП выполняется как безусловный переход, а при М=0000 (пустая команда) действует естественный порядок выборки команд. Таким образом, в ЭВМ исключается необходимость в отдельной команде БП.

Команды условных переходов позволяют реализовывать разветвляющиеся и циклические программы.

Команды перехода к подпрограммам.

Команды перехода к подпрограммам могут быть условными и безусловными, Их особенность в том, что помимо перехода они должны обеспечить по окончании подпрограммы возврат к исходной программе, к той точке ее, откуда был совершен переход. Обычно для перехода к программе используются специальные команды:

  • безусловный переход с возвратом (БПВ)

  • условный переход с возвратом (УПВ)

В случае команды БПВ выполняются следующие действия:

Команды программы Команды подпрограммы

БПВ

БПК

АВОЗ

(Р)

  1. Адрес возврата АВОЗ , т.е. содержимое СЧК, увеличенное на приращение адреса команды lK, запоминается по адресу Р, указанному в команде БПВ.

  2. В счетчик команд СЧК заносится содержимое поля А команды БПВ, т.е. адрес (А) начала подпрограммы.

  3. В конце подпрограммы должны размещаться команда возврата, которая может представлять собой команду БЛК, указывающую посредством косвенной адресации адрес ячейки, в которой находится адрес возврата АВОЗ команды.

Формально всю эту процедуру после приема в регистр команд РГК команды БПВ можно представить в виде:

СЧ К : = СЧ К + lK - образование АВОЗ

РГ ДОП : = СЧ К

РГ АОП : = РГ К[P]

ОП[РГ АОП] : = РГ DОП - запоминание АВОЗ

СЧ К : = РГ К[A] - передача в СЧ К адреса

начала подпрограммы

- - - - - - - - - - - - --

Выполнение подпрограммы

-- - - - - - - - - - - - -

РГ АОП : = РГ К[A] Выполнение возврата из подпрограмм по

РГ DОП : = ОП[РГ AОП ] команде БПК, в поле адреса которой

СЧ К : =РГ ДОП указан косвенный адрес Р.

БПК Р

В общем случае для хранения адреса возврата можно использовать:

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

1 к-да

2 к-да

- - - - - - - -

БПК, А

БПВ А

А

А+lK

СЧК

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

БПК А

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

БПВ R

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

БПКР R

При этом подпрограмма не должна изменять содержимое регистра R.

  1. Стек.

БПВС

В этом случае команда перехода с возвратом записывает в стек адрес возврата, а возврат из подпрограммы должен выполняться командой ПБСТ

ПБСТ

При выполнении команды БПВС, содержимое указателя стека должно увеличиться на lK.