Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Команды IBM360.doc
Скачиваний:
2
Добавлен:
29.10.2018
Размер:
609.28 Кб
Скачать

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, прерывания от схем контроля игнорируются, состояния «счет» и «супервизор».