Команды перехода - Команда BCR

Команда BCR является RR-модификацией команды ВС. Она работает абсолютно так же, как и команда ВС, только адрес, по которому следует совершить переход, выбирается из регистра R2, а не задается как операнд в памяти.

BCR M1,R2

Branch of Condition to Register

PC(R2), если признак результата соответствует Ml

Для использования команды BCR необходимо сначала загрузить адрес перехода в регистр. Маска определяется так же, как и для команды ВС. Вместо указания адреса, по которому следует передать управление, задается регистр R2, содержащий данный адрес. Предположим, что мы хотим осуществить переход по адресу SITU, если признак результата не равен нулю, используя команду BCR. Где-либо в программе до команды BCR нужно поместить команду

LA 5,SITU

которая загрузит адрес команды с меткой SITU в регистр 5. Затем следует написать команду

BCR 7,5

или

BCR В'0111',5

В результате выполнения такой команды будет произведен переход по адресу, содержащемуся в регистре 5, если признак результата не равен нулю.

На рис. 9.1 изображена блок-схема программы, отыскивающей полуслово с минимальным числовым значением содержимого в последовательности из 15 полуслов, первое из которых имеет имя DATA.

На рис. 9.2 представлена соответствующая программа. Первые две команды загружают в регистры 9 и 10 адреса LESS и CHECKER. Регистр 3 — индексный, в качестве его начального содержимого устанавливается число 2. Конечное значение индекса — 28; это число загружается в регистр 5 и сравнивается в цикле с содержимым регистра 3. Команда BCR в одном случае проверяет, является ли рассматриваемое в настоящий момент число меньшим, чем минимальное из предыдущих (X на блок-схеме), а в другом случае используется для проверки условия выхода из цикла и завершения решения.

Рис. 9.1. Блок-схема программы нахождения и печати наименьшего из 15 чисел, записанных в последовательных полусловах, начиная с адреса DATA.

Рис. 9.2. Программа нахождения наименьшего из 15 чисел, записанных в последовательных полусловах, начиная с адреса DATA. Для реализации переходов используется команда BCR.

Машинная форма команды BCR имеет формат обычной RR-команды, лишь вместо R1 указывается 4-разрядная маска:

Например, команда

BCR 13,10

транслируется в

07DA

а команда

BCR 15,8 в 07F8

Существуют две расширенные мнемоники команды BCR. Мнемоника BR (Branch-to-Register) соответствует маске, обеспечивающей безусловный переход по адресу, указанному в регистре. Команда BR имеет следующий вид:

BR R2

Ей эквивалентна команда

BCR 15,R2

BR 14

В результате выполнения команды управление будет передано по адресу, указанному в регистре 14, независимо от значения признака результата. В процессе трансляции эта команда будет заменена ассемблером на

BCR B'1 111',14

Другая расширенная мнемоника, NOPR, соответствует маске 0.

BCR 0,R2

Мнемоника NOPR используется для резервирования 2-байтового поля внутри программы, в Koiopoe впоследствии может быть внесена любая другая команда такой же длины. Первый байт зарезервированного таким образом поля содержит 07 (код операции BCR), а второй — 0R2. NOPR также может быть использована вместе с командой EX.

В некоторых моделях IBM 360/370 время выборки команд из памяти зависит от длины команды. При выполнении заданий на этих машинах выгодно, там где это возможно, использовать команды типа RR вместо RX, так как это сокращает время выполнения программы. Однако следует учитывать, что обычно выполнение команд типа RR требует белее длительной подготовки. Из рис. 9.2 видно, что если команду ВС мы хотим заменить командой BCR, то предварительно следует загрузить адрес перехода в соответствующий регистр. Время, тратящееся на выполнение команды LA, может превышать сэкономленное заменой время. Кроме того, для выполнения BCR в отличие от ВС требуется регистр, который, вообще говоря, может быть использован и для других целей. Таким образом, вопрос о том, какую из команд, ВС или BCR, использовать, не может быть решен однозначно — решение зависит от типа машины и от того, сколько раз выполняется команда перехода и сколько раз необходимо проводить предварительную подготовку.

Команда BCR обычно используется в том случае, когда имя команды, на которую следует передать управление, неизвестно. Эта команда может быть даже командой другой программы, что и имеет место в случае возврата из подпрограммы. Как мы увидим в гл. 13, одна из функций подпрограммы — организовать возврат в соответствующее место основной программы. Адрес возврата обычно передается подпрограмме через регистр 14. Таким образом, обычно последней в подпрограмме выполняется команда

BR 14

Другим примером использования BCR может служить организация работы с таблицей переключателей. Адрес, по которому следует произвести переход, вычисляется в предшествующей части программы и заносится в регистр. При необходимости произвести переход по вычисленному адресу используется команда BCR.



 
Оглавление

Карта сайта