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

IBM370

.pdf
Скачиваний:
36
Добавлен:
02.06.2015
Размер:
5.21 Mб
Скачать

СЛОЖЕНИЕ

 

 

 

 

 

 

 

AR

R1,R2

 

[RR]

 

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

¦

1A

¦

R1

¦

R2

¦

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

0

7

8

11

12

15

 

 

 

 

 

A

R1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

5A

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Второй операнд складывается с первым операндом, и сумма помещается на место первого

операнда.

Всложении участвуют все 32 разряда каждого операнда. Если переносы из знакового бита

истаршего бита целой части числа одновременно либо отсутствуют, либо присутствуют, то это говорит о том, что сложение выполнено нормально. Если перенос делается только из какого-

либо одного из указанных битов, возникает переполнение. При переполнении полученный зна-

ковый разряд суммы остается без изменения. Поэтому при переполнении, возникшем в резуль-

тате сложения положительных чисел, получается сумма с отрицательным знаком, а при пере-

полнении, возникшем в результате сложения отрицательных чисел, – с положительным знаком.

Если бит маски переполнения с фиксированной точкой равен единице, переполнение вызы-

вает программное прерывание.

Признак результата:

0– сумма равна нулю;

1– сумма меньше нуля;

2– сумма больше нуля;

3– переполнение.

Программные прерывания:

доступ (выборка второго операнда в команде A);

переполнение с фиксированной точкой.

Замечания по программированию

Поскольку используется дополнительный код, нулевой результат всегда положителен.

201

СЛОЖЕНИЕ ПОЛУСЛОВА

 

 

 

 

AH

R1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

4A

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

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

ком, расположенным в старшем бите.

Перед сложением второй операнд расширяется до 32 разрядов путем присвоения старшим

16 битам значения знакового разряда. Содержимое поля второго операнда в основной памяти остается без изменения.

Всложении участвуют все 32 разряда каждого операнда. Если переносы из знакового бита

истаршего бита целой части числа одновременно либо отсутствуют, либо присутствуют, то это говорит о том, что сложение выполнено нормально. Если перенос делается только из какого-

либо одного из указанных битов, возникает переполнение. При переполнении полученный зна-

ковый разряд суммы остается без изменения. Поэтому при переполнении, возникшем в резуль-

тате сложения положительных чисел, получается сумма с отрицательным знаком, а при пере-

полнении, возникшем в результате сложения отрицательных чисел, – с положительным знаком.

Если бит маски переполнения с фиксированной точкой равен единице, переполнение вызы-

вает программное прерывание.

Признак результата:

0– сумма равна нулю;

1– сумма меньше нуля;

2– сумма больше нуля;

3– переполнение.

Программные прерывания:

доступ (выборка второго операнда в команде A);

переполнение с фиксированной точкой.

СЛОЖЕНИЕ КОДОВ

ALR

R1,R2

 

[RR]

+--------------------

 

 

 

 

+

¦ 1E

 

¦

R1

¦

R2 ¦

+--------------------

 

 

 

 

+

0

7

8

11

12

15

202

AL

R1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

5E

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

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

Сложение кодов представляет собой сложение всех 32 разрядов обоих операндов без по-

следующего изменения знакового бита результата. Данная команда отличается от команды СЛОЖЕНИЕ отсутствием прерывания при переполнении и тем, как устанавливается признак результата.

Если имеет место перенос из знакового разряда, левый бит признака результата устанав-

ливается равным единице. При отсутствии переноса этот бит устанавливается равным нулю.

Если сумма равна нулю, правый бит признака результата устанавливается равным нулю. При ненулевой сумме этот бит устанавливается равным единице.

Признак результата:

0 – сумма равна нулю, перенос отсутствует;

1 – сумма не равна нулю, перенос отсутствует;

2 – сумма равна нулю, есть перенос;

3 – сумма не равна нулю, есть перенос.

Программные прерывания:

доступ (выборка второго операнда в команде AL).

?

 

 

 

 

 

 

 

 

 

 

NR

R1,R2

[RR]

 

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

¦

14

¦

R1

¦

R2

¦

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

0

7

8

11

12

15

 

 

 

 

 

N

R1,D2(X2,B2)

 

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

54

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

203

NI

D1(B1),I2

[SI]

 

 

 

 

 

 

 

 

+-------------------------------

 

 

 

 

 

 

 

+

 

 

 

 

 

¦

94

¦

I2

¦

B1

¦

D1

¦

 

 

 

 

 

+-------------------------------

 

 

 

 

 

 

 

+

 

 

 

 

 

0

7

8

15

16

19

20

31

 

 

 

 

 

 

NC

D1(L,B1),D2(B2)

[SS]

 

 

 

 

 

 

 

+----------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

+

¦

D4

¦

L

¦

B1

¦

D1

 

¦

B2

¦

D2

¦

+----------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

+

0

7

8

15

16

19

20

 

31

32

35

36

 

47

Поразрядное логическое произведение (И) первого и второго операндов помещается на ме-

сто первого операнда.

Операнды обрабатываются как логические величины, не имеющие внутренней структуры, и

к соответствующим битам применяется операция логического И. В бите результата устанавли-

вается единица, если в соответствующих битах обоих операндов содержатся единицы, в про-

тивном случае устанавливается нуль.

В случае команды NC поля операндов обрабатываются слева направо. Если операнды пе-

рекрываются, результат получается таким, как если бы операнды обрабатывались побайтно и каждый байт результата записывался в память сразу же после выборки нужного байта операн-

да.

Признак результата:

0– результат равен нулю;

1– результат не равен нулю;

2– не бывает;

3– не бывает.

Программные прерывания:

доступ (выборка второго операнда в командах N и NC, выборка и запись в память первого операнда в командах NI и NC).

Замечания по программированию

Команда N может быть использована для того, чтобы установить некоторый бит равным ну-

лю.

Выполнение команд NI и NC заключается в выборке байта первого операнда из основной памяти и последующей записи в память нового значения. Запись конкретного байта не обяза-

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

пользовать для обновления содержимого разделяемой ячейки основной памяти без учета воз-

можных непредвиденных последствий, если существует вероятность того, что другой процес-

204

сор в это же время может производить изменение содержимого указанной ячейки. В случае ко-

манды NI в память записывается только один байт.

ПЕРЕХОД С ВОЗВРАТОМ

BALR

 

R1,R2

[RR]

 

 

 

 

 

+--------------------

 

 

 

 

 

 

+

 

 

 

 

¦

05

 

¦

R1

¦

R2

¦

 

 

 

 

+--------------------

 

 

 

 

 

 

+

 

 

 

 

0

 

7

8

11

12

15

 

 

 

 

 

BAL

 

R1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

 

+

¦

45

 

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

 

+

0

 

7

8

11

12

15

16

19

20

 

31

Информация из текущего PSW, в том числе и продвинутый адрес команды, запоминается в качестве информации для возврата в общем регистре, заданном полем R1. После этого адрес команды замещается адресом перехода.

Вкачестве адреса перехода в команде формата RX используется адрес второго операнда,

ав команде формата RR – содержимое разрядов 8–31 общего регистра, заданного полем R2.

Однако, если поле R2 содержит нули, операция выполняется без перехода.

Адрес перехода определяется до запоминания информации для возврата. Информация для возврата имеет формат, совпадающий с форматом правых 32 разрядов PSW режима BC, и

содержит код длины команды, признак результата, маску программы и продвинутый адрес ко-

манды. Код длины команды равен 1 или 2.

Признак результата не изменяется.

Программные прерывания отсутствуют.

Замечания по программированию

Если в команде формата RR поле R2 содержит только нули, информация, необходимая для обеспечения возврата, запоминается, но переход не происходит. Формат и содержимое ин-

формации для возврата не зависят от того, какой режим управления задан в PSW.

Если команда ПЕРЕХОД С ВОЗВРАТОМ выполняется в результате ссылки на нее в коман-

де ВЫПОЛНИТЬ, код длины команды равен двум.

УСЛОВНЫЙ ПЕРЕХОД

BCR

M1,R2

 

[RR]

+--------------------

 

 

 

 

+

¦ 07

 

¦

M1

¦

R2 ¦

+--------------------

 

 

 

 

+

0

7

8

11

12

15

205

BC

M1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

47

¦

M1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Продвинутый адрес команды в текущем PSW замещается адресом перехода, если значе-

ние признака результата соответствует коду, указанному в поле M1; в противном случае про-

должается обычное последовательное выполнение команд с использованием продвинутого адреса.

Вкачестве адреса перехода в команде формата RX используется адрес второго операнда,

ав формате RR – содержимое разрядов 8–31 общего регистра, заданного полем R2. Однако,

если поле R2 содержит нули, операция выполняется без перехода.

Поле M1 используется в качестве четырехразрядной маски. Четыре бита маски соответ-

ствуют слева направо четырем значениям признака результата (0, 1, 2 и 3).

Бит кода ко-

Значение поля

Признак резуль-

манды

маски

тата

 

 

 

8

8

0

 

 

 

9

4

1

 

 

 

10

2

2

 

 

 

11

1

3

 

 

 

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

PSW, равен единице. Если содержимое полей M1 и R2 в команде BCR равно соответственно 15

и 0, выполняется временная отмена совмещений.

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

Пока не завершено выполнение данной команды, обращения в память за последующими ко-

мандами или их операндами не производятся.

Признак результата остается без изменения.

Программные прерывания отсутствуют.

Замечания по программированию

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

Например, значение маски, равное 12, указывает на то, что переход должен быть выполнен в том случае, если признак результата равен 0 или 1.

Когда все четыре разряда маски равны нулю или поле R2 команды формата RR содержит нули, команда перехода эквивалентна отсутствию операции. Если же все четыре бита маски

206

равны единице, т.е. значение маски равно 15, то происходит безусловный переход. Исключе-

ние составляет случай, когда поле R2 команды формата RR содержит нули.

Выполнение команды BCR 15,0 может привести к значительному снижению производитель-

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

бегать использования команды BCR 15,0, за исключением тех случаев, когда действительно необходима отмена совмещений.

Следует отметить, что соотношение между форматами RR и RX при задании адреса пере-

хода отличается от соотношения этих форматов при задании адреса операнда. В командах пе-

рехода формата RX адрес перехода – это адрес, заданный полями X2, B2 и D2. В формате RR

адрес перехода представляет собой содержимое младших 24 битов регистра, заданного полем

R2. В случае операндов адрес, заданный полями X2, B2 и D2, является адресом операнда, тогда как общий регистр, заданный полем R2, содержит сам операнд.

ПЕРЕХОД ПО СЧЕТЧИКУ

BCTR

 

R1,R2

[RR]

 

 

 

 

 

+--------------------

 

 

 

 

 

 

+

 

 

 

 

¦

06

 

¦

R1

¦

R2

¦

 

 

 

 

+--------------------

 

 

 

 

 

 

+

 

 

 

 

0

 

7

8

11

12

15

 

 

 

 

 

BCT

 

R1,D2(X2,B2)

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

 

+

¦

46

 

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

 

+

0

 

7

8

11

12

15

16

19

20

 

31

Из содержимого общего регистра, заданного полем R1, алгебраически вычитается единица.

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

манды в текущем PSW замещается адресом перехода.

В качестве адреса перехода в формате RX используется адрес второго операнда, а в ко-

манде RR – содержимое битов 8–31 общего регистра, заданного полем R2. Однако, если в поле

R2 содержатся нули, операция выполняется без перехода.

Адрес перехода определяется перед операцией вычитания из счетчика. Вычитание из счет-

чика не изменяет признака результата. Переполнение, возникающее при переходе от макси-

мального отрицательного числа к максимальному положительному числу, игнорируется. В

остальном вычитание выполняется, как обычная операция с фиксированной точкой, и в ней принимают участие все 32 разряда общего регистра.

Признак результата не изменяется.

Программные прерывания отсутствуют.

207

Замечания по программированию

Начальное значение счетчика, равное единице, дает после вычитания нуль, и переход от-

сутствует. Если начальное значение счетчика равно нулю, то при выполнении команды оно станет равным –1 (FFFFFFFF16), и переход произойдет.

Если поле R2 команды формата RR содержит нули, вычитание из счетчика производится, но переход отсутствует.

ПЕРЕХОД ПО ИНДЕКСУ БОЛЬШЕ

BXH

R1,R3,D2(B2)

[RS]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦ 86

 

¦

R1

¦

R3

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Приращение складывается с первым операндом, и сумма алгебраически сравнивается с заданным значением. Затем сумма помещается на место первого операнда вне зависимости от того, происходит переход или нет. Адрес второго операнда используется в качестве адреса перехода.

Если сумма больше заданного значения индекса, адрес команды в текущем PSW замеща-

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

Первый операнд и приращение находятся в общих регистрах, заданных полями R1 и R3 со-

ответственно. Адрес общего регистра, содержащего значение, с которым производится срав-

нение, всегда нечетный. Он или на 1 больше, чем адрес в поле R3, или равен ему. Адрес пере-

хода определяется до сложения и сравнения.

Переполнение, возникающее при сложении, не учитывается и не влияет на операцию срав-

нения. В остальном сложение и сравнение выполняются как обычные операции с фиксирован-

ной точкой. Участие в операциях принимают все 32 разряда в общих регистрах. Отрицатель-

ные величины представляются в дополнительном коде. Если адрес регистра, содержащего первый операнд, совпадает с адресом регистра, содержащего значение для сравнения, то в качестве сравниваемого значения используется первоначальное содержимое этого регистра.

Признак результата не изменяется.

Программные прерывания отсутствуют.

Замечания по программированию

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

ложительным или отрицательным и иметь любую абсолютную величину.

208

ПЕРЕХОД ПО ИНДЕКСУ МЕНЬШЕ ИЛИ РАВНО

BXLE

 

R1,R3,D2(B2)

 

[RS]

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦ 87

 

¦

R1

¦

R3

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Приращение складывается с первым операндом, и сумма алгебраически сравнивается с заданным значением. Затем сумма помещается на место первого операнда вне зависимости от того, происходит переход или нет. Адрес второго операнда используется в качестве адреса перехода.

Если сумма меньше заданного значения индекса или равна ему, адрес команды в текущем

PSW замещается адресом перехода. Если же сумма больше, продолжается выполнение ко-

манд в обычной последовательности с использованием продвинутого адреса команды.

Первый операнд и приращение находятся в общих регистрах, заданных полями R1 и R3 со-

ответственно. Адрес общего регистра, содержащего значение, с которым производится срав-

нение, всегда нечетный. Он или на 1 больше, чем адрес в поле R3, или равен ему. Адрес пере-

хода определяется до сложения и сравнения.

Эта команда подобна команде ПЕРЕХОД ПО ИНДЕКСУ БОЛЬШЕ и отличается от нее лишь тем, что переход имеет место. если сумма равна заданному значению или меньше его.

Признак результата не изменяется.

Программные прерывания отсутствуют.

?????????

CR

R1,R2

[RR]

 

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

¦

19

¦

R1

¦

R2

¦

 

 

 

 

+--------------------

 

 

 

 

 

+

 

 

 

 

0

7

8

11

12

15

 

 

 

 

 

C

R1,D2(X2,B2)

 

[RX]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

59

¦

R1

¦

X2

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Первый операнд сравнивается со вторым, и в зависимости от результата сравнения уста-

навливается признак результата.

Сравнение выполняется алгебраически, сравниваемые операнды рассматриваются как це-

лые числа со знаком, состоящие из 32 разрядов, включая знаковый. В результате операции ис-

ходные операнды в общих регистрах и в памяти не изменяются.

209

Признак результата:

0 – операнды равны;

1– первый операнд меньше;

2– первый операнд больше;

3– не бывает.

Программные прерывания:

доступ (выборка второго операнда в команде C).

СРАВНЕНИЕ С ОБМЕНОМ

CS

R1,R3,D2(B2)

[RS]

 

 

 

 

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

¦

BA

¦

R1

¦

R3

¦

B2

¦

D2

¦

+--------------------------------------

 

 

 

 

 

 

 

 

 

+

0

7

8

11

12

15

16

19

20

 

31

Производится сравнение первого и второго операндов. Если они равны друг другу, третий операнд записывается в память на место второго операнда. Если они не равны, второй опе-

ранд помещается на место первого операнда.

Каждое из полей R1 и R3 задает общий регистр. Второй операнд представляет собой слово

восновной памяти.

Взависимости от результата сравнения всех 32 разрядов (равенства или неравенства)

устанавливается признак результата. В случае неравенства не делается попытки записи в па-

мять, и никакие действия, связанные с установкой бита изменения и защитой памяти, не произ-

водятся.

Если имеет место равенство, то в период от момента выборки второго операнда для срав-

нения и до момента записи в память третьего операнда на место второго запрещаются обра-

щения какого-либо другого процессора к ячейке второго операнда.

Перед выборкой второго операнда для сравнения и – в случае установки признака резуль-

тата, равного нулю, – после записи результата в память выполняется временная отмена сов-

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

шены все предыдущие обращения к основной памяти по отношению к каналам и к другим про-

цессорам. Только после этого производится выборка второго операнда. До тех пор пока не бу-

дет завершено выполнение данной команды, включая возможную запись значения результата в основную память, доступ к памяти за последующими командами или их операндами по отно-

шению к каналам и другим процессорам не производится.

Второй операнд должен быть расположен на границе слова. При нарушении этого требова-

ния фиксируется особый случай спецификации и операция подавляется.

Признак результата:

0 – первый и второй операнды равны, второй операнд замещен третьим;

1 – первый и второй операнды не равны, первый операнд замещен вторым;

210

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]