Передачи управления в программах — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Передачи управления в программах



Рассмотрим команды, управляющие порядком исполнения команд.

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

Выборка очередной и формирование адреса следующей команды (АСК), часто называемого «продвинутым адресом», происходит (при естественном порядке) следующим образом (рис. 9.9):

РгАОП := СчК;

Счит:

РгИОП := ОП[РгАОП];

РгК := РгИОП;

. . . . . . . . . . . . .

(Выполнение текущей команды)

. . . . . . . . . . . . .

АСКЕП: СчК := СчК + LК;

 

Естественный порядок выполнения команд может быть нарушен: 1) командами перехода (командами передачи управления); 2) командами замещения (Выполнение); 3) сменой состояния программы; 4) запросами прерывания программы.

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

Для упрощения изложения материала рассмотрим процедуры выполнения команд переходов без относительной адресации.

Различают два основных вида команд перехода: безусловный переход (БП) и условный (УП). Упрощенные структуры этих команд показаны на рис. 3.10.

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

АСКЕП : СчК := РгК [А};

Другим вариантом команды БП является безусловный переход по косвенному адресу (БПК) (рис. 3.10,б). На косвенную адресацию указывает код операции команды или специальное поле в формате команды, определяющее тип адресации. Управление передается команде, расположенной в ячейке, адрес которой указан в адресной части команды БПК. В этом случае выполняется следующая процедура:

РгАОП := РгК[А];

Счит : РгИОП := ОП[РгАОП];

АСКБПК : СчК := РгИОП[А];

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

Условия перехода (например, результат предыдущей команды равен, больше или меньше 0, переполнение разрядной сетки и др.) задаются кодом операции УП или в виде отдельного поля маска условия М в команде УП (рис. 3.10, в). В этом случае следующая команда определяется по правилу

если Ус [М] = 1

то АСКУП : СчК := РгК [А]

иначеАСКЕП : СчК := СчК + LК;

Здесь Ус[М] —логическая функция (условие), заданная маской М. Если условие перехода задается кодом операции команды, то в приведенном выражении Ус[М] надо заменить на Ус[К0п].

Обычно выполнение машинной команды сопровождается выработкой кода признака результата ПР, формируемого в специальном регистре РгПР. Команда УП анализирует сформированный предыдущей командой ПР. Смысл кодов ПP может быть установлен различным для разных операций. Например, в ЕС ЭВМ двухразрядный признак результата ПР при выполнении арифметических операций принимает значения, приведенные в табл. 3.1 (ПР[0] и ПР[1] — нулевой и первый разряды ПР).

С помощью двухразрядной маски можно задать в качестве условия УП любое значение ПР.

Таблица 9.1

Результат операции Код ПР Маска условия (ЕС ЭВМ)
ПР[0] ПР[1] М[0] М[1] М[2] М[3]
Равен 0
Меньше 0
Больше 0
Переполнение

В машинах ЕС ЭВМ используется четырехразрядная маска, и это дает возможность задавать в качестве условия перехода выполнение не только любого из ПР, но и их дизъюнкции (если в маске М несколько 1).

В общем случае имеем

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

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

Важным случаем передачи управления являются безусловные переходы к подпрограммам. Их особенность состоит в том, что помимо перехода они должны обеспечить по окончании подпрограммы возврат к исходной программе, к той точке ее, откуда был совершен переход. Обычно для переходов к под программам используется специальная команда Безусловный перевод с возвратом (БПВ). По этой команде (рис. 3.11) сначала адрес возврата АВОЗ, т.е. содержимое СчК (увеличенное па «приращение адреса команды» LК), запоминается по адресу Р, указанному в команде БПВ. затем в счетчик команд заносится содержимое поля А команды БПВ, т.е. адрес А начала подпрограммы. В конце подпрограммы размещается команда возврата, которая представляет собой команду БПК, указывающую путем косвенной адресации адрес ячейки (или регистра), в которой находится адрес АВОЗ.

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

СчК := СчК + LК; образование адреса возврата АВОЗ

РгИОП := СчК;

РгАОП := РгК [Р];

Запись: ОП[РгАОП] = РгИОП; запоминание адреса возврата АВОЗ, в ячейке Р

СчК := РгК[А]; передача в СчК адреса начала подпрограммы

. . . . . . . . . . . .

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

. . . . . . . . . . . .

; Считывание и передача в РгК заключающей подпрограммы команды БПК, содержащей в поле А косвенный адрес Р *)

РгАОП := РгК[А];

Счит: РгИОП := ОП[РгАОП]; извлечение адреса возврата АВОЗ

АСКБПВ: СчК := РгИОП [А]; возврат к основной программе

- команде в ячейке АВОЗ

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

РгАОП := РгК[А];

Счит:РгИОП := ОП[РгАОП];

РгК := РгИОП; выборка замещающей команды

. . . . . . . . . . . .

; Выполнение замещающей команды

. . . . . . . . . . . .

СчК := СчК + LК восстановление естественного порядка выборки команд.




Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2020 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.02 с.