
IBM370
.pdfИстинный нуль получается в результате выполнения команды ПОПОЛАМ только в том слу-
чае, когда мантисса второго операнда равна нулю или когда возникает исчезновение порядка при установленной в нуль маске исчезновения порядка. Если даже все биты мантиссы второго операнда, кроме самого младшего, равны нулю, то этот последний сдвигается в старший бит дополнительной цифры и участвует в нормализации результата.
ЗАГРУЗКА
LER R1,R2 |
|
[RR, ???????? ????????] |
|
|||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
38 |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
LE |
R1,D2(X2,B2) |
[RX, ???????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
78 |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
LDR |
R1,R2 |
|
[RR, ??????? ????????] |
|
||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
28 |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
LD |
R1,D2(X2,B2) |
[RX, ??????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
68 |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
Второй операнд без изменения помещается на место первого операнда.
Поля R1 и R2 должны определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата не изменяется.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
доступ (выборка второго операнда в командах LE и LD);
спецификация.
291
|
ЗАГРУЗКА И ПРОВЕРКА |
|||||
LTER |
|
R1,R2 |
[RR, ???????? ????????] |
|||
+ |
|
|
|
|
|
+ |
¦ |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
|
LTDR |
|
R1,R2 |
[RR, ??????? ????????] |
|||
+-------------------- |
|
|
|
|
|
+ |
¦ |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
|
Второй операнд без изменения помещается на место первого операнда, и в зависимости от его знака и величины устанавливается признак результата.
Поля R1 и R2 должны определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата:
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
спецификация.
Замечания по программированию
Если один и тот же регистр задан для определения и первого, и второго операндов, опера-
ция эквивалентна проверке без перемещения данных.
ЗАГРУЗКА ДОПОЛНЕНИЯ
LCER R1,R2 [RR, ???????? ????????]
+-------------------- |
|
|
|
|
+ |
¦ 33 |
|
¦ |
R1 |
¦ |
R2 ¦ |
+-------------------- |
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
292
LCDR R1,R2 [RR, ??????? ????????]
+-------------------- |
|
|
|
|
+ |
¦ 23 |
|
¦ |
R1 |
¦ |
R2 ¦ |
+-------------------- |
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
Второй операнд с противоположным знаком помещается на место первого операнда.
Значение знакового бита изменяется на противоположное, даже если мантисса равна нулю.
Характеристика и мантисса не изменяются.
Поля R1 и R2 должны определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата:
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
спецификация.
ЗАГРУЗКА ОТРИЦАТЕЛЬНАЯ
LNER |
|
R1,R2 |
[RR, ???????? ????????] |
||||
+ |
-------------------- |
|
|
|
|
|
+ |
¦ |
31 |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
|
LNDR |
|
R1,R2 |
[RR, ??????? ????????] |
||||
+-------------------- |
|
|
|
|
|
|
+ |
¦ |
21 |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
|
Второму операнду присваивается знак минус, и результат помещается на место первого операнда.
Знаковый бит устанавливается равным единице, даже если мантисса равна нулю. Характе-
ристика и мантисса не изменяются.
Поля R1 и R2 должны определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата:
293
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
спецификация.
ЗАГРУЗКА ПОЛОЖИТЕЛЬНАЯ
LPER |
|
R1,R2 |
[RR, ???????? ????????] |
||||
+ |
-------------------- |
|
|
|
|
|
+ |
¦ |
30 |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
|
LPDR |
|
R1,R2 |
[RR, ??????? ????????] |
||||
+-------------------- |
|
|
|
|
|
|
+ |
¦ |
20 |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
|
Второму операнду присваивается знак плюс, и результат помещается на место первого операнда.
Знаковый бит устанавливается равным нулю, даже если мантисса равна нулю. Характери-
стика и мантисса не изменяются.
Поля R1 и R2 должны определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата:
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
спецификация.
294
|
ЗАГРУЗКА С ОКРУГЛЕНИЕМ |
|||||
LRER |
|
R1,R2 |
[RR, |
|
||
|
|
|
|
|
??????? ?????? ???????, |
|
|
|
|
|
|
???????? ?????? ???????] |
|
+ |
|
|
|
|
|
+ |
¦ |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
|
LRDR |
|
R1,R2 |
[RR, |
|
||
|
|
|
|
|
??????????? ?????? ???????, |
|
|
|
|
|
|
??????? ?????? ???????] |
|
+-------------------- |
|
|
|
|
|
+ |
¦ |
|
¦ |
R1 |
¦ |
R2 |
¦ |
+-------------------- |
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
|
Второй операнд округляется до следующего меньшего формата, и результат помещается на место первого операнда.
Округление заключается в том, что к содержимому бита 32 длинного второго операнда или бита 72 расширенного второго операнда прибавляется единица, и перенос, если он возник,
распространяется влево. В обоих случаях знак мантиссы не принимается во внимание, и сло-
жение выполняется так, как если бы мантисса была положительной.
Если округление вызывает перенос из старшей цифровой позиции мантиссы, то мантисса сдвигается вправо на одну шестнадцатеричную позицию. а характеристика увеличивается на единицу.
Знак результата совпадает со знаком второго операнда. Нормализация не производится.
Если при сдвиге мантиссы вправо характеристика становится больше 127, фиксируется пе-
реполнение порядка. Операция завершается загрузкой числа, характеристика которого на 128
меньше действительного значения, и происходит программное прерывание из-за переполне-
ния порядка. Результат является нормализованным числом, а знак и мантисса сохраняют пра-
вильные значения.
Исчезновение порядка и потеря значимости не могут возникнуть.
Поле R1 должно определять регистры 0, 2, 4 или 6. Поле R2 в команде LRER должно опре-
делять регистры 0, 2, 4 или 6, а поле R2 в команде LRDR – регистры 0 или 4. В противном слу-
чае фиксируется особый случай спецификации.
Признак результата не изменяется.
Программные прерывания:
295
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
спецификация;
переполнение порядка.
УМНОЖЕНИЕ
MER R1,R2 |
|
[RR, ???????? ????????, |
||||||||
|
|
|
|
??????? ????????????] |
|
|||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
3C |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
ME |
R1,D2(X2,B2) |
[RX, ???????? ????????, |
||||||||
|
|
|
|
|
|
??????? ????????????] |
||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
7C |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
|
31 |
MDR |
R1,R2 |
|
[RR, ??????? ????????] |
|||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
2C |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
MD |
R1,D2(X2,B2) |
[RX, ??????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
6C |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
|
31 |
MXDR |
R1,R2 |
[RR, ??????? ????????, |
||||||||
|
|
|
|
|
??????????? ????????????] |
|||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
27 |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
296
MXD |
|
R1,D2(X2,B2) |
[RX, ??????? ????????, |
||||||||
|
|
|
|
|
|
|
??????????? ????????????] |
||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
¦ |
67 |
|
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
|
31 |
MXR |
|
R1,R2 |
|
[RR, ??????????? ????????] |
|||||||
+-------------------- |
|
|
|
|
|
|
+ |
|
|
|
|
¦ |
26 |
|
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
|
+ |
|
|
|
|
0 |
|
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
Нормализованное произведение второго операнда (множителя) и первого операнда (мно-
жимого) заносится на место первого операнда.
Умножение двух чисел с плавающей точкой заключается в сложении порядков и умножении мантисс. Операнды предварительно нормализуются, и сумма их характеристик, уменьшенная на 64, используется в качестве характеристики промежуточного произведения.
Произведение мантисс формируется таким образом, что результат всегда содержит точное значение произведения мантисс, усеченное до нужной длины. Если результат сразу же полу-
чился нормализованным и не требуется дополнительной нормализации, то мантисса промежу-
точного произведения усекается до длины мантиссы результата, а характеристика промежу-
точного произведения становится характеристикой конечного произведения. Если в мантиссе промежуточного произведения имеется одна старшая нулевая цифра, то производится сдвиг мантиссы влево на одну цифровую позицию с одновременным переносом дополнительной цифры в младшую позицию мантиссы результата и характеристика промежуточного произве-
дения уменьшается на единицу. Затем мантисса промежуточного произведения усекается до длины мантиссы результата.
В случае команд MER и ME мантиссы множителя и множимого состоят из шести цифр, а
мантисса произведения – из 14 цифр, причем две младшие цифры мантиссы всегда равны ну-
лю. В случае команд MDR и MD мантиссы множителя и множимого имеют по 14 цифр и ман-
тисса конечного произведения усекается до 14 цифр. В случае команд MXDR и MXD мантиссы множимого и множителя имеют по 14 цифр, причем множимое занимает старшую часть перво-
го операнда; мантисса конечного произведения состоит из 28 цифр и является точным произ-
ведением мантисс операндов. В случае команды MXR мантиссы множителя и множимого со-
держат по 28 цифр и мантисса конечного произведения усекается до 28 цифр.
Знак произведения определяется по правилам алгебры. Если все цифры мантиссы произ-
ведения являются нулями, то произведению присваивается положительный знак.
297
Если характеристика нормализованного произведения превышает 127 и мантисса произве-
дения не равна нулю, то фиксируется переполнение порядка. Операция завершается умень-
шением характеристики на 128 по сравнению с ее действительным значением. Если в случае расширенных результатов характеристика младшей части также превышает 127, то и она уменьшается на 128. Результат является нормализованным числом, а знак и мантисса сохра-
няют правильные значения. После этого происходит программное прерывание из-за перепол-
нения.
Если характеристика промежуточного произведения превышает 127, но в результате нор-
мализации попадает в установленный диапазон, то переполнение порядка не фиксируется.
Если характеристика нормализованного произведения меньше нуля, а мантисса не равна нулю, имеет место особый случай исчезновения порядка. Если бит маски исчезновения поряд-
ка равен единице, операция завершается путем формирования характеристики, которая на 128
больше по сравнению с действительным значением, и происходит программное прерывание из-за исчезновения порядка. Результат является нормализованным числом, а знак и мантисса сохраняют правильные значения. Если бит маски исчезновения порядка равен нулю, то про-
граммное прерывание не происходит; вместо этого операция завершается формированием произведения, равного истинному нулю. В случае расширенных операндов исчезновение по-
рядка не фиксируется, если характеристика младшей части меньше нуля, а характеристика старшей части больше или равна нулю.
Если характеристика операнда становится меньше нуля во время предварительной норма-
лизации, но характеристика нормализованного произведения попадает в установленный диа-
пазон, то исчезновение порядка не фиксируется.
Если какая-либо из мантисс операндов равна нулю или обе эти мантиссы равны нулю, то результат представляет собой истинный нуль, и никакие особые случаи не фиксируются.
Поле R1 в командах MER, ME, MDR и MD и поле R2 в командах MER, MDR и MXDR должны определять регистры 0, 2, 4 или 6. Поле R1 в командах MXDR, MXD и MXR и поле R2 в команде
MXR должны определять регистры 0 или 4. В противном случае фиксируется особый случай спецификации.
Признак результата не изменяется.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой или – в случае команд MXDR, MXD и MXR – отсутствуют средства обработки чисел с плавающей точкой повышенной точности);
доступ (выборка второго операнда в командах ME, MD или MXD);
спецификация;
переполнение порядка;
исчезновение порядка.
298
Замечания по программированию
Перестановка операндов при умножении с плавающей точкой не влияет на значение произ-
ведения.
ЗАПИСЬ В ПАМЯТЬ
STE |
|
R1,D2(X2,B2) |
[RX, ???????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
¦ |
70 |
|
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
|
31 |
STD |
|
R1,D2(X2,B2) |
[RX, ??????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
¦ |
60 |
|
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
|
+ |
0 |
|
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
|
31 |
Первый операнд без изменения записывается в память по адресу второго операнда.
Поле R1 должно определять регистры 0, 2, 4 или 6; в противном случае фиксируется особый случай спецификации.
Признак результата не изменяется.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
доступ (запись второго операнда);
спецификация.
ВЫЧИТАНИЕ С НОРМАЛИЗАЦИЕЙ
SER |
R1,R2 |
|
[RR, ???????? ????????] |
|
||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
3B |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
SE |
R1,D2(X2,B2) |
[RX, ???????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
7B |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
299
SDR |
R1,R2 |
|
[RR, ??????? ????????] |
|
||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
2B |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
SD |
R1,D2(X2,B2) |
[RX, ??????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
6B |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
SXR |
R1,R2 |
|
[RR, ??????????? ????????] |
|||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
37 |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
Второй операнд вычитается из первого операнда, и нормализованная разность помещается на место первого операнда.
Команда ВЫЧИТАНИЕ С НОРМАЛИЗАЦИЕЙ выполняется аналогично команде СЛОЖЕНИЕ С НОРМАЛИЗАЦИЕЙ и отличается от последней лишь тем, что перед сложением знак второго операнда изменяется на противоположный.
Поле R1 в командах SER, SE, SDR и SD и поле R2 в командах SER и SDR должны опреде-
лять регистры 0, 2, 4 или 6. Поля R1 и R2 в команде SXR должны определять регистры 0 или 4.
В противном случае фиксируется особый случай спецификации.
Признак результата:
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой или в случае команды SXR отсутствуют средства обработки чисел с плавающей точкой повышенной точности);
доступ (выборка второго операнда в командах SE и SD);
спецификация;
переполнение порядка;
исчезновение порядка;
потеря значимости.
300