
- •90 Stm Запись в память групповая.
- •98 Lm Загрузка групповая
- •92 Mvi Пересылка непосредственная
- •91 Тм Проверить по маске
- •45 Bal Переход с возвратом (rx)
- •05 Balr Переход с возвратом (rr)
- •46 Вст Переход по счетчику (rx)
- •06 Bctr Переход по счетчику (rr)
- •86 Вхн___Переход индекс больше (rs)
- •87 Bxle Переход индекс меньше или равен (rs)
- •41 La Загрузка адреса (rx)
- •93 Ts Проверить и установить (si)
- •08 Ssk Установить ключ памяти (rr).
- •09 Isk Прочитать ключ памяти (rr).
08 Ssk Установить ключ памяти (rr).
09 Isk Прочитать ключ памяти (rr).
Регистр R2 содержит адрес 2048-байтового блока памяти. Биты с 8 по 20 задают адрес. Биты 0-7 и 21-27 игнорируются. Биты 28-31 должны быть нулевыми. Регистр R1 в битах 24–31 содержит ключ памяти. Команда SSK игнорирует биты 0–23 и биты 29–31. Биты 24-27 помещаются в биты 0-3 ключа памяти. Если в машине предусмотрена защита от выборки, то бит 28 помещается в бит 4 ключа памяти, в противном случае бит 4 всегда нулевой. Биты 5-7 ключа устанавливаются равными нулю. Команда ISK помещает ключ памяти в правый байт регистра R1. Это дает возможность программе проверить ключ.
В каждом PSW в битах 0-3 содержится ключ защиты. Если бит 4 ключа памяти равен нулю, то любая попытка программы изменить содержимое какого-либо байта в блоке основной памяти подчиняется следующим правилам защиты памяти. Если ключ в PSW соответствует ключу (биты 0-3 ключа памяти) для ячейки памяти, которая должна быть изменена, то это изменение разрешается. В противном случае новый байт не будет записан и возникнет прерывание из-за нарушения защиты. Любая программа, однако, может прочитать любую ячейку памяти, независимо от того, совпадают ключи или нет.
Если же бит выборки (бит 4) установлен в 1, то запрещена не только запись в память, но и выборка. Это означает, что блок памяти может быть защищен и от записи, и от выборки, или только от записи.
Считается, что ключ защиты соответствует ключу памяти, если ключи равны или если ключ защиты равен 0. Программе супервизору обычно присваивается нулевой ключ защиты, а все области памяти, которые она использует, имеют нулевой ключ памяти и не защищены от выборки. Всем другим программам назначаются ненулевые ключи.
Каждому блоку памяти ключ присваивается независимо от ключей памяти других блоков. Таким образом, программа может занимать несколько блоков, которые не обязательно должны быть размещены рядом.
CAW тоже содержит ключ защиты. Он действует так же, как и ключ защиты в PSW.
Если средства защиты не предусмотрены в машине, поля ключей во всех PSW и CAW должны быть нулевыми.
• На модели IBM-67 используются также биты 5 и 6 ключа памяти. Бит 5 устанавливается равным 1 каждый раз, когда в этот блок записывается или из этого блока выбирается какой-либо байт. Бит 6 устанавливается равным 1 каждый раз, когда в этот блок записывается какой-либо байт. Это позволяет программе с помощью команды ISK определить, изменилось ли содержимое этого блока и даже, было ли оно использовано.
Команды перекодировки
Для перекодировки информации из одного восьмибитового кода в другой предусмотрены команды.
DC TR Перекодировать (SS).
Адрес второго операнда определяет начальную ячейку 256-байтовой таблицы в основной памяти. Первый операнд имеет длину от 1 до 256 байтов. Каждый байт первого операнда, воспринимаемый как восьмибитовое положительное двоичное целое число, добавляется к адресу таблицы E2 = D2 + (В2) и байт, выбираемый из таблицы по этому адресу, замещает байт в первом операнде. Байты первого операнда выбираются последовательно, один за другим слева направо. Операция продолжается до тех пор, пока не кончится поле первого операнда.
С помощью команды TR можно перейти от одного восьмибитового кода к другому.
DT TRT Перекодировать и проверить (SS).
Адрес второго операнда определяет 256-байтовую таблицу (как и в команде TR). Проверка выполняется последовательно, начиная с левого байта первого операнда. Таблица просматривается так же, как и в команде TR, но байт первого операнда не изменяется. Если байт, выбранный из таблицы, равен нулю, происходит выборка следующего байта первого операнда. Операция продолжается до тех пор, пока из таблицы не будет выбран ненулевой байт. В этом случае адрес соответствующего байта первого операнда помещается в правые 24 бита общего регистра 1. Байт из таблицы помещается в правые 8 битов общего регистра 2. Левые 8 битов регистра 1 и левые 24 бита регистра 2 остаются без изменений.
В результате выполнения операции устанавливается признак результата:
СС = 0 операция завершилась, т. е. поле первого операнда кончилось,
и все байты, выбранные из таблицы, были нулевыми;
СС = 1 обнаружен ненулевой байт в таблице до окончания поля первого операнда;
СС = 2 последний байт, выбранный из таблицы, был ненулевым.
Хотя при поверхностном взгляде команда TRT похожа на команду TR, области применения этих команд совершенно различны. Команда TRT, например, может использоваться для просмотра входных данных и выявления в них точек, запятых и т. д. Таким образом, информация, поступающая в вычислительную машину в свободном формате, может быть разбита на предложения и т. д. Для примера, предположим, что число из одиннадцати цифр с десятичной точкой считано в память. Это могло быть одно из следующих чисел:
12345678.01
12.34567908
.1110003333
0000000011.
Требуется переслать это 11-байтовое поле, расположенное в ячейках 008Е14–1Е, в 20-байтовое поле по адресу 008E2A–3D, причем надо исключить явную запись десятичной точки, которую считаем фиксированной после 10-й цифры от левой границы поля. То есть число 12345678.01 будет переписано в следующем виде:
00123456780100000000
Распределим память следующим образом:
008Е00–13 нули (двадцать)
008Е14–1Е Х
008E1F–29 нули (одиннадцать)
008E2A–3D Y = преобразованный Х
008F00–FF Таблица, содержащая все нули, кроме байта по адресу 008F4B, который
должен быть ненулевым (в EBCDIC код десятичной точки равен 4В).
Регистр 1 00000000
Регистр 2 00000000
Регистр 3 0000 8Е00
Команды:
MVC D2 13 302А 3000 Засылка нулей в Y.
TRT DD 0А 3014 3100 Получение адреса десятичной точки в регистре 1.
MVC D2 09 1000 1001 Сдвиг дробной части X на один байт влево.
LR 18 23
SR 1В 21
AR 1A 23 Получение в регистре 2 числа, равного содержимому
регистра 3, умноженному на 2, минус содержимое
регистра 1.
MVC D2 09 2048 3014
Если бы мы хотели получить результат в упакованном формате, надо было бы воспользоваться командой PACK. Отметим, что мы должны были вычислить адрес первого операнда последней команды. Эти вычисления выполнялись в регистрах, и такие вычисления называют адресной арифметикой.
Редактирование
Вообще говоря, число вида $ 12345.67 удобнее всего хранить в двоичной форме или в упакованной десятичной форме, а именно 12 34 56 7+, где десятичная точка не записывается явно, а подразумевается. Когда же нужно напечатать информацию так, чтобы человек мог прочитать ее, необходимо вставить точки, запятые, знак доллара и т. д. Две команды облегчают выполнение преобразования упакованного десятичного числа в формат для печати:
РЕ ED____Отредактировать (SS).
DF EDMK Отредактировать и отметить (SS).
Второй операнд является десятичным числом в упакованном формате. Длина, заданная в команде, относится к первому операнду, который перед выполнением команды должен содержать поле шаблона. В шаблоне располагаются запятые, точки и т. д., т. е. символы, которые будут вставлены в результат. Кроме того, в нем используются три специальных кода:
Шестнадцатеричный код Название Обозначение
20 Символ выбора цифры DS или d
21 Символы начала значимости SOS или s
22 Символ разделения полей FS или f
Символ разделения полей употребляется далеко не во всех операциях редактирования.
Кроме того, первый байт в шаблоне является символом-заполнителем.
Предположим, что в памяти имеется упакованное десятичное поле 00 12 34 56 7+, и требуется представить его в виде: bbb12, 345.67bbb. Начнем с составления шаблона, который мог бы выглядеть так: b(символ-заполнитель)d,ddd,dds.ddbCR. Здесь b, как обычно, обозначает пробел, а СR - символ кредита, которым будут отмечены отрицательные числа. Команда Отредактировать выполняется следующим образом:
1. Символ-заполнитель остается без изменений и запоминается для последующего использования.
2. Всякий раз когда в шаблоне встречается символ d, выбирается очередная цифра из поля второго операнда; если эта цифра оказывается незначащим нулем (слева от первой значащей цифры), в шаблон вставляется символ-заполнитель; если эта цифра значащая, то вставляется она сама. В нашем примере первая цифра второго операнда есть нуль; следовательно, будет вставлен символ-заполнитель, т. е. пробел.
3. При продвижении к следующему байту очередным символом в шаблоне оказалась запятая. Так как это не d и не s, проверяется, была ли уже обнаружена хотя бы одна значащая цифра. Поскольку этого не было, символ, какой бы он ни был, заменяется символом-заполнителем.
4. Следующий символ в шаблоне d, а соответствующая ему цифра 0. Как и ранее, незначащий нуль заменяется символом-заполнителем.
5. Следующий символ в шаблоне d, а соответствующая ему цифра 1. Так как 1 – значащая цифра, она помещается в поле первого операнда и отмечается, что была обнаружена значащая цифра.
6. Последующие символы d и s в шаблоне заменяются соответствующими цифрами; символы в шаблоне, отличные от d и s, сохраняются без изменений. Это продолжается до тех пор, пока в поле второго операнда не будет найден знак +.
7. Если результат положительный, все остальные символы в поле шаблона заменяются символом-заполнителем. Если же результат отрицательный, символы остаются без изменений.
Признак результата устанавливается равным 0, если второй операнд нуль, равным 1, если второй операнд меньше нуля, ч равным 2, если второй операнд больше нуля.
Обычно за один раз редактируется одно поле. Однако возможно (но это не всегда проще) отредактировать несколько полей с помощью одной команды. Эти поля должны быть расположены друг за другом, и символ разделения полей, должен отделять каждое поле шаблона. Символ разделения полей всегда считается первым символом шаблона и всегда заменяется символом-заполнителем. Если первым символом в шаблоне являются символ выбора цифры или символ начала значимости, то они всегда заменяются первой цифрой из поля второго-операнда, даже если это цифра 0.
Символ SOS по своему назначению подобен символу DS. Их отличие заключается в том, что символ SOS указывает, что все последующие позиции являются значащими, независимо от того, какие цифры находятся в поле второго операнда. Следующие примеры поясняют операции редактирования:
Регистр 1 0000 0000
Регистр 2 0000 8F00
Регистр 3 Адрес первой команды
008F00-0F Отредактированный результат
008F10-14 Упакованные данные. Рассмотрим четыре случая:
а. 00 12 34 56 7+
b. 00 00 00 81 3–
с. 00 00 00 00 0+
d. 99 00 05 78 9–
008F16-17 FFFF (–1 в двоичном коде)
008F20-2F 4020 6В20 2020 6В20 2021
4В20 2040 C3D9
(первый шаблон: bd,ddd,dds.ddbCR)
008F30-3F 4040 2020 206B 2020 206B
2021 204B 2020
(второй шаблон: bbbbd,ddd,dsd.dd)
008F40-4F 5C20 2020 6В20 2020 6В20
2020 6В20 2120
(третий шаблон: *bbbddd,ddd,dsd–)
Команды:
МVС D2 0F 2000 2020
ED DE 0F 2000 2010
Сначала шаблон засылается в поле результата и затем выполняется команда Отредактировать. Используя первый шаблон, получим следующие результаты:
1. bbbb12,345.67bbb
2. bbbbbbbbb8.13bCR
3. bbbbbbbbbb.00bbb
4. b9,900,057.89bCR
Если бы мы использовали второй шаблон, то написали бы команду MVC так:
MVC D2 0F 2000 2030
и получили бы следующие результаты:
1. bbbbbbb.12,345.67
2. bbbbbbbbbbbb8.13
3. bbbbbbbbbbbb0.00
4. bbbb9,900,057.89
Отметим, что символ SOS, встречающийся во втором шаблоне левее, чем в первом, вызывает печать 0.00, а не .00. Если бы первая команда имела вид
MVC D2 OF 2000 2040
то мы использовали бы третий шаблон, и получили следующие результаты:
1. ******1,234,567*
2. ************813–
3. **************0*
4 ****990,005,789–
Команды EDMK и ED идентичны, но дополнительно команда EDMK помещает в регистр 1 адрес первой значащей цифры. Эта информация может быть использована для вставки знака доллара и т. д. Проиллюстрируем это на примере
MVC D2 0F 2000 2030
EDMK DF 0F 2000 2010
АН 4А 10 2016
ВС 47 ВО 3018
MVI 92 60 1000
Команда АН вычитает 1 из адреса, помещаемого в регистр 1 командой EDMK. Мы могли бы использовать для этого команды ВСТ или BCTR. Команда MVI пропускается, если второй операнд не отрицателен. MVI вставляет код 60 (знак минус) перед первой значащей цифрой в отрицательных числах. Мы получим следующие результаты:
1) bbbbbbb12,345.67
2) bbbbbbbbbbb–8.13
3) bbbbbbbbbbbb0.00
4) bbb–9,900,057.89
Команды ED и EDMK являются специальными командами десятичной арифметики.
НАБОР КОМАНД
Сред- ства |
Код опера-ции |
Мне-мони-ка |
Название команды |
Значе- ния СС |
Особые случаи
|
||||
1 2 3
|
4s 4f 5
|
6 7 8
|
9 А В
|
С D E F
|
|||||
Не определенные коды операций Undefined OP codes |
S
|
S
|
S
|
|
|
||||
0 RR 04 SPM Установить маску программы 0123 Set Program Mask |
|
|
|
|
|
||||
0 RB 05 BALR Переход с возвратом Branch and Link |
|
|
|
|
|
||||
0 BR 06 BCTR Переход по счетчику Branch on Count |
|
|
|
|
|
||||
0 RR 07 BCR Условный переход Branch on Condition |
|
|
|
|
|
||||
1 RR 08 SSK Установить ключ памяти Set Storage Key |
S S
|
S
|
S
|
|
|
||||
1 RR 09 ISK Прочитать ключ памяти Insert Storage Key |
S S
|
S
|
S
|
|
|
||||
0 BR 0A SVC Обращение к супервизору Supervisor Call |
|
|
|
|
|
||||
4 RR 0D BASR Переход с записью в память Branch and Store |
|
|
|
|
|
||||
0 RR 10 LPR Загрузка положительная 023 Load Positive |
|
|
C
|
|
|
||||
0 RR 11 LNR Загрузка отрицательная 01 Load Negative |
|
|
|
|
|
||||
0 RR 12 LTR Загрузка и проверка 012 Load and Test |
|
|
|
|
|
||||
0 RR 13 LCR Загрузка дополнения 0123 Load Complement |
|
|
С |
|
|
||||
0 RR 14 NR И 01 And |
|
|
|
|
|
||||
0 RR 15 CLR Сравнение кодов 012 Compare Logical |
|
|
|
|
|
||||
0 RR 16 OR ИЛИ 01 Or |
|
|
|
|
|
||||
0 RR 17 XR Исключающее ИЛИ 01 Exclusive Or |
|
|
|
|
|
||||
0 RR 18 LR Загрузка Load |
|
|
|
|
|
||||
0 RR 19 CR Сравнение 012 Compare |
|
|
|
|
|
||||
0 RR 1A AR Сложение 0123 Add |
|
|
С
|
|
|
||||
0 RR 1B SR Вычитание 0123 Subtract |
|
|
С
|
|
|
||||
0 RR 1C MR Умножение Multiply |
|
|
S
|
|
|
||||
0 RR 1D DR Деление Divide |
|
|
S
|
S |
|
||||
0 RR 1E ALR Сложение кодов 0123 Add Logical |
|
|
|
|
|
||||
0 RR 1F SLR Вычитание кодов 123 Subtract Logical |
|
|
|
|
|
||||
3 RR 20 LPDR Загрузка положительная 02 (длинная) Load Positive Long |
S
|
|
S
|
|
|
||||
3 RR 21 LNDR Загрузка отрицательная 01 (длинная) Load Negative Long |
S
|
|
S
|
|
|
||||
3 RR 22 LTDR Загрузка и проверка (длинная) 012 Load and Test Long |
S
|
|
S
|
|
|
||||
3 RR 23 LCDR Загрузка дополнения 012 (длинная) Load Complement Long |
S
|
|
S
|
|
|
||||
3 RR 24 HDR Пополам (длинное) Halve Long |
S
|
|
S
|
|
|
||||
3 RR 28 LDR Загрузка (длинная) Load Long |
S |
|
S
|
|
|
||||
3 RR 29 CDR Сравнение (длинное) 012 Compare Long |
S
|
|
S
|
|
|
||||
3 RR 2A ADR Сложение с нормализацией 0123 (длинное) Add Normalized Long |
S |
|
S
|
|
C C C |
||||
3 RR 2B SDR Вычитание с нормализацией 0123 (длинное) Subtract Normalized Long |
S
|
|
S
|
|
C C C
|
||||
3 RR 2C MDR Умножение (длинное) Multiply Long |
S
|
|
S
|
|
Т С
|
||||
3 RR 2D DDR Деление (длинное) Divide Long |
S
|
|
S
|
|
а Т С S |
||||
3 RR 2E AWR Сложение без нормализации 0123 (длинное) Add Unnonnalized Long |
S
|
|
S
|
|
T C
|
||||
3 RR 2F SWR Вычитание без нормализации 0123 (длинное) Subtract Unnonnalized Long |
S
|
|
S
|
|
T C
|
||||
3 RR 30 LPER Загрузка положительная 02 (короткая) Load Positive Short |
S
|
|
S
|
|
|
||||
3 RR 31 LNER Загрузка отрицательная 01 (короткая) Load Negative Short |
S
|
|
S
|
|
|
||||
3 RR 32 LTER Загрузка и проверка (короткая) 012 Load and Test Short |
S
|
|
S
|
|
|
||||
3 RR 33 LCER Загрузка дополнения (короткая) 012 Load Complement Short |
S
|
|
S
|
|
|
||||
3 RR 34 HER Пополам (короткая) Halve Short |
S
|
|
S
|
|
|
||||
3 RR 38 LER Загрузка (короткая) Load Short |
S
|
|
S
|
|
|
||||
3 RR 39 CER Сравнение (короткое) 012 Compare Short |
S
|
|
S
|
|
|
||||
3 RR ЗА AER Сложение с нормализацией 0123 (короткое) Add Normalized Short |
S
|
|
S
|
|
T C C |
||||
3 RR 3В SER Вычитание с нормализацией 0123 (короткое) Subtract Normalized Short |
S
|
|
S
|
|
c T C C |
||||
3 RR 3C MER Умножение (короткое) Multiply Short
|
S
|
|
S
|
|
T C
|
||||
3 RR 3D DER Деление (короткое) Divide Short |
S
|
|
S
|
|
T C S |
||||
3 RR 3E AUR Сложение без нормализации 0123 (короткое) Add Unnormalized Short |
S
|
|
S
|
|
T C
|
||||
3 RR 3F SUR Вычитание без нормализации 0123 (короткое) Subtract Unnormalized Short |
S
|
|
S
|
|
T C
|
||||
7 RR 25 LRDR Загрузка с округлением (длинная) Load Rounded Long |
S
|
|
S
|
|
C C C
|
||||
7 RR 26 MXR Умножение сверхдлинное 1) Multiply Extended |
S
|
|
S
|
|
C C C
|
||||
7 RR 27 MXDR Умножение длинных со сверх длинным результатом Multiply to Extend |
S
|
|
S
|
|
C C C
|
||||
7 RR 35 LRER Загрузка с округлением (короткая) Load Rounded Short |
S
|
|
S
|
|
C C C
|
||||
7 RR 36 AXR Сложение с нормализацией 012 сверхдлинное Add Normalized Extended |
S
|
|
S
|
|
C C C
|
||||
7 RR 37 SXR Вычитание с нормализацией 012 сверхдлинное Subtract Normalized Extended |
S
|
|
S
|
|
C C C
|
||||
7 RX 67 MXD Умножение длинных со сверх- длинным результатом Multiply to Extend |
S
|
T T
|
S
|
|
C C C
|
||||
0 RX 40 STH Запись в память полуслова Store Half word |
|
S S
|
S
|
|
|
||||
0 RX 41 LA Загрузка адреса Load Address |
|
|
|
|
|
||||
0 RX 42 STC Запись в память символа Store Character |
|
S S
|
|
|
|
||||
0 RX 43 IC Прочитать символ Insert Character |
|
T T
|
|
|
|
||||
0 RX 44 EX Выполнить Execute |
S
|
S S
|
S
|
|
|
||||
0 RX 45 BAL Переход с возвратом Branch and Link |
|
|
|
|
|
||||
0 RX 46 ВСТ Переход по счетчику Branch on Count |
|
|
|
|
|
||||
0 RX 47 ВС Условный переход Branch on Condition |
|
|
|
|
|
||||
0 RX 48 LH Загрузка полуслова Load Halfword |
|
T T
|
S
|
|
|
||||
0 RX 49 CH Сравнение полуслова 012 Compare Halfword |
|
T T
|
S
|
|
|
||||
0 RX 4A АН Сложение полуслова 0123 Add Halfword |
|
T T
|
S С
|
|
|
||||
0 RX 4B SH Вычитание полуслова 0123 Subtract Halfword |
|
T T
|
S С
|
|
|
||||
0 RX 4C МН Умножение полуслова Multiply Halfword
|
|
Т Т
|
S
|
|
|
||||
4 RX 4D BAS Переход с записью в память Branch and Store
|
|
|
|
|
|
||||
0 RX 4E CVD Преобразование в десятичную Convert to Decimal
|
|
S S
|
S
|
|
|
||||
0 RX 4F CVB Преобразование в двоичную Convert to Binary
|
|
T T
|
S Т
|
C
|
|
||||
0 RX 50 ST Запись в память Store
|
|
S S
|
S
|
|
|
||||
0 RX 54 N И 01 And
|
|
T T
|
S
|
|
|
||||
0 RX 55 CL Сравнение кодов 012 Compare Logical
|
|
T T
|
S
|
|
|
||||
0 RX 56 O ИЛИ 01 Or
|
|
T T
|
S
|
|
|
||||
0 RX 57 X Исключающее ИЛИ 01 Exclusive Or
|
|
T T
|
S
|
|
|
||||
0 RX 58 L Загрузка Load
|
|
T T
|
S
|
|
|
||||
0 RX 59 С Сравнение 012 Compare
|
|
T T
|
S
|
|
|
||||
0 RX 5A А Сложение 0123 Add
|
|
T T
|
S С
|
|
|
||||
0 RX 5B S Вычитание 0123 Subtract |
|
T T
|
S С
|
|
|
||||
0 RX 5C M Умножение Multiply |
|
T T |
S
|
|
|
||||
0 RX 5D D Деление Divide
|
|
T T |
S
|
S
|
|
||||
0 RX 5E AL Сложение кодов 0123 Add Logical
|
|
T T |
S
|
|
|
||||
0 RX 5F SL Вычитание кодов 123 Subtract Logical
|
|
T T |
S
|
|
|
||||
3 RX 60 STD Запись в память (длинная) Store Long
|
S
|
S S
|
S
|
|
|
||||
3 ВХ 68 LD Загрузка (длинная) Load Long
|
S
|
T T |
S
|
|
|
||||
3 RX 69 CD Сравнение (длинное) 012 Compare Long
|
S
|
T T |
S
|
|
|
||||
3 RX 6A AD Сложение (длинное) 0123 Add Long
|
S
|
T T |
S
|
|
T C C |
||||
3 RX 6B SD Вычитание (длинное) 0123 Subtract Long
|
S
|
T T |
S
|
|
T C C
|
||||
3 RX 6C MD Умножение (длинное) Multiply Long
|
S
|
T T |
S
|
|
T C |
||||
3 ВХ 6D DD Деление (длинное) Divide Long
|
S
|
T T |
S
|
|
T C S
|
||||
3 ВХ 6Е AW Сложение без нормализации 0123 (длинное) Add Unnonnalized Long
|
S
|
T T |
S
|
|
T C
|
||||
3 RX 6F SW Вычитание без нормализации 0123 (длинное) Subtract Unnormalized Long
|
S
|
T T
|
S
|
|
T C
|
||||
3 RХ 70 STE Запись в память (короткая) Store Short
|
S
|
S S
|
S
|
|
|
||||
3 RX 78 LE Загрузка (короткая) Load Short
|
S
|
T T |
S
|
|
|
||||
3 RX 79 СЕ Сравнение (короткое) 012 Compare Short
|
S
|
T T
|
S
|
|
|
||||
3 RX 7A АЕ Сложение с нормализацией 0123 (короткое) Add Normalized Short
|
S
|
T T |
S
|
|
T C C
|
||||
3 RX 7B SE Вычитание с нормализацией 0123 (короткое) Subtract Normalized Short
|
S
|
T T
|
S
|
|
T C C
|
||||
3 RX 7C ME Умножение (короткое) Multiply Short
|
S
|
T T |
S
|
|
T C
|
||||
3 RX 7D DE Деление (короткое) Divide Short
|
S
|
T T |
S
|
|
T C S
|
||||
3 RX 7E AU Сложение без нормализации 0123 (короткое) Add Unnonnalized Short
|
S
|
T T |
S
|
|
T C
|
||||
3 RX 7F SU Вычитание без нормализации 0123 (короткое) Subtract Unnonnalized Short
|
S
|
T T |
S
|
|
T C
|
||||
0 SI 80 SSM Установить маску системы Set System Mask
|
S
|
T T
|
|
|
|
||||
5 SI 81 SPSW Установить PSW 0123 Set Program Status Word
|
|
|
|
|
|
||||
0 SI 82 LPSW Загрузка PSW 0123 Load Program Status Word
|
S
|
T T
|
S
|
|
|
||||
0 SI 83 Диагностика 0123 Diagnose
|
S
|
? ? S
|
S
|
|
|
||||
6 SI 84 WBD Прямая запись Write Direct
|
S S
|
T T
|
|
|
|
||||
6 SI 85 RDD Прямое чтение Read Direct
|
S S
|
T T |
|
|
|
||||
0 RS 86 BXH Переход по индексу больше Branch on Index High
|
|
|
|
|
|
||||
0 RS 87 BXLE Переход по индексу меньше или равно Branch on Index Low or Equal |
|
|
|
|
|
||||
0 RS 88 SRL Сдвиг вправо кода Shift Right Single Logical
|
|
|
|
|
|
||||
0 RS 89 SLL Сдвиг влево кода Shift Left Single Logical
|
|
|
|
|
|
||||
0 RS 8A SRA Сдвиг вправо арифметический 012 Shift Right Single Arithmetic |
|
|
|
|
|
||||
0 RS 8B SLA Сдвиг влево арифметический 0123 Shift Left Single Arithmetic |
|
|
С
|
|
|
||||
0 RS 8C SRDL Сдвиг вправо двойной кода Shift Right Double Logical |
|
|
S
|
|
|
||||
0 RS 8D SLDL Сдвиг влево двойной кода Shift Left Double Logical |
|
|
S
|
|
|
||||
0 RS 8E SRDA Сдвиг вправо двойной ариф- 012 метический Shift Right Double Arithmetic
|
|
|
S
|
|
|
||||
0 RS 8F SLDA Сдвиг влево двойной ариф- 0123 метический Shift Left Double Arithmetic
|
|
|
S С
|
|
|
||||
0 RS 90 STM Запись в память групповая Store Multiple |
|
T T
|
S
|
|
|
||||
0 SI 91 TM Проверить по маске 013 Test under Mask
|
|
T T
|
|
|
|
||||
0 SI 92 MVI Пересылка непосредственная Move Immediate
|
|
S S
|
|
|
|
||||
0 SI 93 TS Проверить и установить 01 Test and Set
|
|
Т Т S
|
|
|
|
||||
0 SI 94 NI И непосредственное 01 And Immediate
|
|
S S
|
|
|
|
||||
0 SI 95 CLI Сравнение непосредственное 012 Compare Logical Immediate
|
|
T T |
|
|
|
||||
0 SI 96 OI ИЛИ непосредственное 01 Or Immediate
|
|
S S
|
|
|
|
||||
0 SI 97 XI Исключающее ИЛИ непоср. 01 Exclusive OR Immediate
|
|
S S
|
|
|
|
||||
0 RS 98 LM Загрузка групповая Load Multiple
|
|
T T
|
S
|
|
|
||||
5 SI 99 HPR Остановить и продолжить Halt and Proceed
|
|
|
|
|
|
||||
5 SI 9A TIOB Остановить ввод-вывод и перейти Test I/O and Branch
|
|
|
|
|
|
||||
5 SI 9B CIO Управление вводом-выводом 013 Control I/O
|
|
|
|
|
|
||||
0 SI 9C SIO Начать ввод-вывод 0123 Start I/O
|
S
|
|
|
|
|
||||
0 SI 9D TIO Опросить ввод-вывод 0123 Test I/O
|
S
|
|
|
|
|
||||
0 SI 9E НIO Остановить ввод-вывод 0123 Halt I/O
|
S
|
|
|
|
|
||||
0 SI 9F TCH Опросить канал 0123 Test Channel
|
S
|
|
|
|
|
||||
4 RS В0 STMC Запись в память групповая регистров управления Store Multiple Control
|
S
|
T T
|
S
|
|
|
||||
4 RX B1 LRA Загрузка действительного адреса Load Real Address
|
|
|
|
|
|
||||
4 RS B8 LMC Загрузка групповая регистров управления Load Multiple Control
|
S
|
T T
|
S S
|
|
|
||||
5 SS D0 XIO Передача ввода-вывода 013 Transfer I/O
|
|
|
|
|
|
||||
0 SS Dl MVN Пересылка цифр Move Numerics
|
|
T T T
|
|
|
|
||||
0 SS D2 MVC Пересылка символов Move Characters
|
|
T T T
|
|
|
|
||||
0 SS D3 MV2 Пересылка зон Move Zones
|
|
T T T
|
|
|
|
||||
0 SS D4 NC И 01 And
|
|
T T T
|
|
|
|
||||
0 SS D5 CLC Сравнение кодов 012 Compare Logical
|
|
T T
|
|
|
|
||||
0 SS D6 ОС ИЛИ 01 Or
|
|
T T T
|
|
|
|
||||
0 SS D7 XC Исключающее ИЛИ 01 Exclusive Or
|
|
T T T
|
|
|
|
||||
0 SS DC TR Перекодировать Translate
|
|
T T T
T T T
|
|
|
|
||||
0 SS DD TRT Перекодировать и проверить 012 Translate and Test
|
|
T T
|
|
|
|
||||
2 SS DE ED Отредактировать 012 Edit
|
S
|
T T T
|
T
|
|
|
||||
2 SS DF EDMK Отредактировать и отметить 012 Edit and Mark
|
S
|
T T T
|
T
|
|
|
||||
0 SS F1 MVO Пересылка со сдвигом Move with Offset
|
|
T T T
|
|
|
|
||||
0 SS F2 PACK Упаковать Pack
|
|
T T T
|
|
|
|
||||
0 SS F3 UNPK Распаковать Unpack
|
|
T T T
|
|
|
|
||||
2 SS F8 ZAP Сложение с очисткой 0123 Zero and Add
|
S
|
T T T
T T T
|
T
|
C
|
|
||||
2 SS F9 CP Сравнение десятичное 012 Compare Decimal
|
S
|
T T T
|
T
|
|
|
||||
2 SS FA АР Сложение десятичное 0123 Add Decimal
|
S
|
T T T
|
T
|
C
|
|
||||
2 SS FB SP Вычитание десятичное 0123 Subtract Decimal
|
S
|
T T T
T T T
|
T
S Т
|
C
|
|
||||
2 SS FC MP Умножение десятичное Multiply Decimal
|
S
|
||||||||
2 SS FD DP Деление десятичное Divide Decimal
|
S
|
T T T
|
S Т
|
S
|
|
Принятые сокращения означают:
В колонке "Средства" В колонках "Особые случаи"
0 Стандартный набор Колонка 4s указывает Защиту от записи, а ко-
1 Средства защиты памяти лонка 4f — Защиту от выборки.
2 Средства обработки десятичных данных S Подавление операции (операция не выпол-
3 Средства обработки данных с плавающей няется)
точкой Т Прекращение операции (операция начинает-
4 Только для модели 67 ся, а затем прекращается)
5 Только для модели 20 С Завершение операции
6 Средства прямого управления
7 Средства обработки сверхдлинных чисел с плавающей точкой 1)
При выполнении команд, связанных с выборкой из памяти, могут обнаруживаться следующие особые случаи, вызывающие прерывание программы:
Неправильная адресация
Неправильная спецификация
Нарушение Защиты от выборки
1) Сверхдлинными называются числа с плавающей точкой, представленные двумя двойными словами, т. е. числа, мантиссы которых состоят из 28 шестнадцатеричных цифр.
ФОРМАТЫ ДАННЫХ
Двоичные числа с фиксированной точкой
Полуслово
±
|
целое
|
|
0 1
|
15
|
Полное слово
±
|
целое
|
|
0 1
|
31
|
Двойное слово
±
|
целое
|
0 1 63
|
Двоичные числа с плавающей точкой
Короткое
±
|
Характеристика
|
Дробная часть
|
|
0 1 7 8
|
31
|
Длинное
±
|
Характеристика
|
Дробная часть
|
|
0 1 7 8
|
63
|
Логические данные
Полное слово
|
0 31
|
Поле переменной длины
Символ
|
Символ
|
|
Символ
|
0 7 0 7 0 7
|
Десятичные данные
Формат с зоной
Зона
|
Цифра
|
Зона
|
Цифра
|
|
Зона
|
Цифра
|
Знак
|
Цифра
|
0 3 4 7 0 3 4 7 0 3 4 7 0 3 4 7
|
Упакованный формат
Цифра
|
Цифра
|
Цифра
|
Цифра
|
|
Цифра
|
Цифра
|
Цифра
|
Знак
|
0 3 4 7 0 3 4 7 0 3 4 7 0 3 4 7
|
СЛОВО СОСТОЯНИЯ ПРОГРАММЫ (PSW)
Маска системы
|
Ключ
|
AMWP
|
Код прерывания
|
0 7 8 11 12 15 16 31
|
ILC
|
CC
|
Маска программы
|
Адрес команды
|
32 34 36 39 40 63
|
0-7 Маска системы
0 Мультиплексный канал
1 Селекторный канал 1
2 Селекторный канал 2
3 Селекторный канал 3
4 Селекторный канал 4
5 Селекторный канал 5
6 Селекторный канал 6
7 Внешние прерывания
8-11 Ключ защиты
12 Режим работы с ASCII-8
13 Маска прерываний от схем контроля машины
14 Состояние ожидания
15 Состояние «задача»
16-31 Код прерывания
32-33 Код длины команды (ILC)
34-35 Признак результата (CC)
36-39 Маска программы
36 Переполнение с фиксированной точкой
37 Десятичное переполнение
38 Исчезновение порядка
39 Потеря значимости
40-63 Адрес команды
Нулевой бит в маске запрещает прерывание, единичный разрешает его.
Единичные биты в AMWP задают указанные в таблице режимы, при нулевых битах CPU работает с кодом EBCDIC, прерывания от схем контроля игнорируются, состояния «счет» и «супервизор».