Принципы работы системы IBM/370

Описание логической структуры вычислительных машин Системы 370. Особенности мультипроцессирования. Команды общего назначения и управления системой, обработки десятичных данных и команды с плавающей точкой. Средства обработки машинных ошибок (коррекция).

Рубрика Программирование, компьютеры и кибернетика
Вид книга
Язык русский
Дата добавления 12.06.2014
Размер файла 658,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

Как только содержимое часов занесено (часы выставлены), они переходят в состояние “стоп”. Часы переходят из состояния “стоп” в состояние “отсчет” и возобновляют отсчет времени под управлением бита синхронизации часов (бит 2 управляющего регистра 0).

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

В этих двух случаях признак результата устанавливается в 0 или в 1 соответственно. Когда часы выключены, то независимо от положения переключателя часов показания и состояние часов не изменяются и устанавливается признак результата, равный 3.

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

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

0 - часы выставлены;

1 - часы защищены;

2 - не бывает;

3 - часы выключены.

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

привилегированная операция;

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

спецификация.

УСТАНОВИТЬ КОМПАРАТОР

SCKC D2(B2) [S]

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

¦ B206 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Содержимое 8-байтового поля, указанного адресом второго операнда, заменяет текущее содержимое компаратора.

Соответствующие биты операнда заносятся только в те позиции компаратора, содержимое которых сравнивается с содержимым часов. Содержимое остальных (правых) битов игнорируется и в компараторе не сохраняется.

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

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

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

операция (если процессор не оборудован компаратором);

привилегированная операция;

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

спецификация.

УСТАНОВИТЬ ТАЙМЕР CPU

SPT D2(B2) [S]

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

¦ B208 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Содержимое 8-байтового поля, указанного адресом второго операнда, заменяет текущее содержимое таймера CPU.

Биты операнда заносятся только в позиции таймера CPU, в которых в процессе его работы должны изменяться показания. Содержимое остальных (правых) битов игнорируется и в таймере CPU не сохраняется.

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

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

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

операция (если процессор не оборудован таймером CPU);

привилегированная операция;

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

спецификация.

УСТАНОВИТЬ ПРЕФИКС

SPX D2(B2) [S]

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

¦ B210 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

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

Если операция завершается, новый префикс используется при прерываниях, происходящих после выполнения команды, и при реализации последующих команд. Содержимое битов 0-7 и 20-31 операнда игнорируется.

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

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

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

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

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

операция (если процессор не оборудован средствами мультипроцессирования);

привилегированная операция;

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

спецификация.

УСТАНОВИТЬ КЛЮЧ PSW

SPKA D2(B2) [S]

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

¦ B20A ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Четырехразрядный ключ защиты в текущем PSW замещается битами 24-27 адреса операнда.

Адрес второго операнда не используется для адресации данных; вместо этого биты 24-27 адреса образуют новое значение ключа. Биты 8-23 и 28-31 адреса второго операнда игнорируются.

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

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

операция (если процессор не оборудован средствами для работы с ключом PSW);

привилегированная операция.

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

Формат команды SPKA позволяет программно заносить в текущее PSW ключ защиты из общего регистра, указанного полем B2, или из поля D2 самой команды.

Если прикладная программа требует, чтобы супервизорная программа осуществила доступ к области, которая указана этой прикладной программой, причем супервизорная программа не защищена от выборки, то супервизорная программа может использовать команду SPKA с целью проверки того, что данной прикладной программе доступ разрешен. Супервизорная программа может выполнить проверку, заменив свой ключ защиты в PSW на ключ прикладной программы до осуществления доступа, а затем восстановив исходное значение своего ключа. Однако следует соблюдать осторожность при обработке особых случаев защиты памяти при их возникновении, поскольку эти особые случаи могут вызвать прекращение операции; на некоторых моделях прерывание, обусловленное этими особыми случаями, может быть задержано, а когда оно произойдет, то будет записано PSW с нулевым кодом длины команды.

УСТАНОВИТЬ КЛЮЧ ПАМЯТИ

SSK R1,R2 [RR]

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

¦ 08 ¦ R1 ¦ R2 ¦

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

0 7 8 11 12 15

Ключ блока памяти, адресуемого при помощи регистра, который задан полем R2, замещается содержимым регистра, заданного полем R1.

Биты 8-20 регистра, заданного полем R2, указывают 2048-байтовый блок реальной основной памяти. Биты 0-7 и 21-27 регистра игнорируются. Биты 28-31 регистра должны содержать нули, в противном случае распознается особый случай спецификации и операция подавляется.

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

Семиразрядный ключ памяти берется из позиций 24-30 регистра, заданного полем R1. Содержимое битов 0-23 и 31 этого регистра игнорируется. Если процессор не оборудован средствами динамической переадресации, биты 29 и 30 игнорируются.

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

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

привилегированная операция;

доступ (только адресация при доступе ко второму операнду);

спецификация.

УСТАНОВИТЬ МАСКУ СИСТЕМЫ

SSM D2(B2) [S]

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

¦ 80 ¦ ////// ¦ B2 ¦ D2 ¦

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

0 7 8 15 16 19 20 31

Биты 0-7 текущего PSW замещаются байтом из основной памяти, указанным адресом второго операнда.

Если в процессоре имеются средства подавления этой команды, то ее выполнение зависит от бита подавления команды УСТАНОВИТЬ МАСКУ СИСТЕМЫ, которым является бит 1 управляющего регистра 0. Если этот бит равен нулю, команда выполняется обычным образом. Если же этот бит равен единице и процессор находится в состоянии “супервизор”, то распознается особый случай - выполнение специальной операции - и операция подавляется.

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

Биты 8-15 кода команды игнорируются.

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

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

привилегированная операция;

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

выполнение специальной операции.

СИГНАЛ ПРОЦЕССОРУ

SIGP R1,R3,D2(B2) [RS]

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

¦ B1 ¦ R1 ¦ R3 ¦ B2 ¦ D2 ¦

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

0 7 8 11 12 15 16 19 20 31

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

Адрес второго операнда не используется в качестве адреса данных; вместо этого биты 24-31 адреса содержат 8-разрядный код приказа. Биты 8-23 адреса второго операнда игнорируются. Код приказа указывает, какие действия должны быть выполнены адресованным процессором. Значения кодов приказов приведены в гл. 7.

16-разрядное двоичное число, размещаемое в позициях 16-31 общего регистра, заданного полем R3, представляют собой адрес процессора. Старшие 16 битов этого регистра игнорируются.

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

Если код приказа принят и не возвращены ненулевые биты состояния, устанавливается признак результата 0. Если данным или адресованным процессором порождается информация о состоянии, она заносится в общий регистр, указанный полем R1, и устанавливается признак результата, равный 1.

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

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

Более подробно признаки результата команды СИГНАЛ ПРОЦЕССОРУ рассмотрены в гл. 7.

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

0 - код приказа принят;

1 - записана информация состояния;

2 - занято;

3 - неработоспособен.

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

операция (если процессор не оборудован средствами мультипроцессирования);

привилегированная операция.

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

Для того чтобы существующие в настоящее время программы правильно работали, когда вычислительная установка будет оборудована новыми средствами, использующими дополнительные биты, в неиспользуемые биты адреса второго операнда и в биты 0-15 регистра, заданного полем R3, следует заносить только нули.

ЗАПИСЬ В ПАМЯТЬ ЗНАЧЕНИЯ КОМПАРАТОРА

STCKC D2(B2) [S]

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

¦ B207 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

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

В младшие (правые) позиции, которые соответствуют битам компаратора, не участвующим в сравнении с показаниями часов, заносятся нули.

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

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

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

операция (если процессор не оборудован компаратором);

привилегированная операция;

доступ (запись второго операнда);

спецификация.

ЗАПИСЬ В ПАМЯТЬ УПРАВЛЕНИЯ

STCTL R1,R3,D2(B2) [RS]

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

¦ B6 ¦ R1 ¦ R3 ¦ B2 ¦ D2 ¦

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

0 7 8 11 12 15 16 19 20 31

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

Область памяти, в которую помещается содержимое управляющих регистров, начинается по адресу второго операнда и занимает столько слов памяти, сколько определено управляющих регистров. Содержимое управляющих регистров записывается в порядке возрастания адресов регистров, начиная с управляющего регистра, заданного полем R1, и кончая управляющим регистром, заданным полем R3, при этом считается, что управляющий регистр 0 следует за регистром 15. Содержимое управляющих регистров не изменяется.

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

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

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

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

привилегированная операция;

доступ (запись второго операнда);

спецификация.

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

Хотя на некоторых процессорах выполнение команды ЗАПИСЬ В ПАМЯТЬ УПРАВЛЕНИЯ может привести к записи нулей в позиции, соответствующие нераспределенным битам управляющих регистров, при написании программы на это не следует полагаться.

ЗАПИСЬ В ПАМЯТЬ АДРЕСА CPU

STAP D2(B2) [S]

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

¦ B212 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

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

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

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

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

операция (если процессор не оборудован средствами мультипроцессирования);

привилегированная операция;

доступ (запись второго операнда);

спецификация.

ЗАПИСЬ В ПАМЯТЬ ИДЕНТИФИКАТОРА CPU STIDP D2(B2) [S]

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

¦ B202 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Информация, идентифицирующая процессор, запоминается в двойном слове, заданном адресом второго операнда.

Идентификатор процессора имеет следующий формат:

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

¦ ??? ?????? ¦ ?????-????????????? CPU ¦

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

0 7 8 31

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

¦ ????? ?????? ¦ ????. ????? MCEL ¦

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

32 47 48 63

Поле, отведенное для кода версии (разряды 0-7), содержит информацию, которая зависит от модели и которую трудно получить иным способом. Эта информация обычно имеет значение только для работы моделезависимых диагностических программ и программ восстановления.

Разряды 8-31 содержат номер-идентификатор CPU, состоящий из шести цифр: старшего нуля и пяти цифр, которые выбраны из регистрационного номера, указанного на процессоре, или шести цифр регистрационного номера. Содержимое этого поля в сочетании с номером модели позволяет однозначно идентифицировать данный процессор.

Разряды 32-47 содержат номер модели, состоящий из четырех цифр: старшего нуля и трех цифр номера модели, например 0145 или 0168.

Биты 48-63 содержат 16-разрядное число, выражающее максимальную длину в байтах области расширенной регистрации (MCEL), которая может быть выполнена процессором данной модели.

Операнд должен быть расположен на границе двойного слова; в противном случае распознается особый случай спецификации и операция подавляется. Операция также подавляется при особых случаях защиты и адресации.

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

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

привилегированная операция;

доступ (запись второго операнда);

спецификация.

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

В программе должна быть предусмотрена возможность записи в номер-идентификатор CPU букв A-F наряду с цифрами 0-9.

Ниже приводятся основные случаи использования информации, которая записывается в память при выполнении команды ЗАПИСЬ В ПАМЯТЬ ИДЕНТИФИКАТОРА CPU.

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

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

3. Длину MCEL можно использовать в моделенезависимых программах для распределения основной памяти под область MCEL.

ЗАПИСЬ В ПАМЯТЬ ЗНАЧЕНИЯ ТАЙМЕРА CPU

STPT D2(B2) [S]

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

¦ B209 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Текущее содержимое таймера CPU записывается в двойное слово, заданное адресом второго операнда.

В младшие (крайние правые) биты, содержимое которых не изменяется при работе таймера CPU, заносятся нули.

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

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

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

операция (если процессор не оборудован таймером CPU);

привилегированная операция;

доступ (запись второго операнда);

спецификация.

ЗАПИСЬ В ПАМЯТЬ ПРЕФИКСА

STPX D2(B2) [S]

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

¦ B211 ¦ B2 ¦ D2 ¦

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

0 15 16 19 20 31

Содержимое регистра префикса записывается в 4-байтовую область памяти, заданную адресом второго операнда. В биты 0-7 и 20-31 этой области заносятся нули.

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

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

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

операция (если процессор не оборудован средствами мультипроцессирования);

привилегированная операция;

доступ (запись второго операнда);

спецификация.

ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ УМНОЖЕНИЕМ

STNSM D1(B1),I2 [SI]

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

¦ AC ¦ I2 ¦ B1 ¦ D1 ¦

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

0 7 8 15 16 19 20 31

Биты 0-7 текущего PSW записываются в память по адресу первого операнда. Затем содержимое битов 0-7 текущего PSW заменяется логическим произведением (И) второго операнда и их первоначального содержимого.

Операция подавляется при особых случаях защиты и адресации.

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

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

операция (если процессор не оборудован средствами динамической переадресации);

привилегированная операция;

доступ (запись первого операнда).

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

Команда ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ УМНОЖЕНИЕМ позволяет программе установить в нуль отдельные биты маски системы, сохранив ее первоначальное содержимое для последующего восстановления. Например, в режиме расширенного управления (EC) может оказаться необходимым, чтобы программа, не имеющая информации о текущем состоянии, замаскировала регистрацию программных событий на время выполнения нескольких команд.

ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ СЛОЖЕНИЕМ

STOSM D1(B1),I2 [SI]

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

¦ AD ¦ I2 ¦ B1 ¦ D1 ¦

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

0 7 8 15 16 19 20 31

Биты 0-7 текущего PSW записываются в память по адресу первого операнда. Затем содержимое битов 0-7 текущего PSW заменяется логической суммой (ИЛИ) второго операнда и их первоначального содержимого.

Операция подавляется при особых случаях защиты и адресации.

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

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

операция (если процессор не оборудован средствами динамической переадресации);

привилегированная операция;

доступ (запись первого операнда).

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

Команда ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ УМНОЖЕНИЕМ позволяет программе установить в единицу отдельные биты маски системы, сохранив ее первоначальное содержимое для последующего восстановления. Например, в режиме расширенного управления (EC) может оказаться необходимым, чтобы программа, не имеющая информации о текущем состоянии маски, разрешила прерывания ввода-вывода.

ПРЯМАЯ ЗАПИСЬ

WRD D1(B1),I2 [SI]

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

¦ 84 ¦ I2 ¦ B1 ¦ D1 ¦

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

0 7 8 15 16 19 20 31

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

Восемь разрядов данных байта, выбранного из памяти, поступают на восемь выходных потенциальных сигнальных линий. Эти сигналы остаются без изменения до следующей команды ПРЯМАЯ ЗАПИСЬ. Контрольными разрядами они не сопровождаются.

Содержимое поля I2 кода команды, т.е. разряды 8-15, посылаются одновременно по восьми выходным линиям как импульсные синхросигналы длительностью от 0,5 до 1,0 мкс. Одновременно с этими синхросигналами выдается специальный синхросигнал длительностью 0,5-1,0 мкс по девятой линии (внешняя запись). Восемь выходных импульсных сигнальных линий используются также в команде ПРЯМОЕ ЧТЕНИЕ. Все восемь разрядов команды также не сопровождаются контрольными битами.

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

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

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

операция (если процессор не оборудован средствами прямого управления);

привилегированная операция;

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

Глава 9. Команды общего назначения

9.1 Формат данных

Команды общего назначения оперируют данными четырех типов: числами с фиксированной точкой со знаком, числами с фиксированной точкой без знака, бесструктурными логическими величинами и десятичными числами. Последние используются в командах преобразования, упаковки и распаковки; формат десятичных данных описан в главе 10.

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

В операциях типа “память-память” поля операндов могут быть определены таким образом, что они будут перекрываться. Влияние перекрытия зависит от операции. Перекрытие не влияет на выполнение операции, если при его наличии операнды не изменяются, как, например, в случае команды СРАВНЕНИЕ или ПЕРЕКОДИРОВАТЬ И ПРОВЕРИТЬ. В случае же таких команд, как ПЕРЕСЫЛКА и ПЕРЕКОДИРОВАТЬ, один операнд замещается новыми данными и выполнение операции может зависеть от степени перекрытия и от того, как данные выбираются из памяти или записываются в нее. Для того чтобы оценить влияние перекрывающихся операндов, можно считать, что данные обрабатываются последовательно по одному байту за один раз. Любое перекрытие полей считается допустимым.

9.2 Представление чисел

Числа с фиксированной точкой рассматриваются как целые числа со знаком или без знака.

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

В числах с фиксированной точкой со знаком самый левый разряд используется для представления знака, за которым следует поле целого числа. Положительные числа представляются в прямом двоичном коде со знаковым разрядом, равным нулю. Отрицательные числа представляются в дополнительном коде со знаковым разрядом, равным единице.

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

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

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

Дополнение максимального отрицательного числа не может быть представлено в процессоре. Если в некоторой операции, например в операции вычитания максимального отрицательного числа из нуля, делается попытка образовать дополнение максимального отрицательного числа, то формируется сигнал об особом случае, называемом переполнением с фиксированной точкой. Однако переполнение не возникает, если дополнение берется от максимального отрицательного числа в процессе операции, а окончательный результат находится внутри диапазона представимых чисел. Примером такого случая является вычитание максимального отрицательного числа из -1. Произведение двух максимальных отрицательных чисел представляется положительным числом двойной длины.

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

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

9.3 Команды

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

В подробных описаниях отдельных команд даны мнемонические обозначения операндов, соответствующие языку Ассемблера Системы IBM/370. Например, команда ЗАГРУЗКА И ПРОВЕРКА имеет мнемоническое обозначение LTR и обозначение операндов R1 и R2.

Таблица 9.1. Команды общего назначения

Название

Мнемоническое обозначение

Характеристики

Машинный код

СЛОЖЕНИЕ

AR

RR

C

IF

R

1A

СЛОЖЕНИЕ

A

RX

C

A

IF

R

5A

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

AH

RX

C

A

IF

R

4A

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

ALR

RR

C

R

1E

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

AL

RX

C

A

R

5E

И

NR

RR

C

R

14

И

N

RX

C

A

R

54

И (символ)

NC

SS

C

A

ST

D4

И (непосредственный операнд)

NI

SI

C

A

ST

94

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

BALR

RR

B

R

05

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

BAL

RX

B

R

45

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

BCR

RR

B

07

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

BC

RX

B

47

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

BCTR

RR

B

R

06

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

BCT

RX

B

R

46

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

BXH

RS

B

R

86

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

BXLE

RS

B

R

87

СРАВНЕНИЕ

CR

RR

C

19

СРАВНЕНИЕ

C

RX

C

A

59

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

CS

RS

C

SW

A

SP

R

ST

BA

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

CDS

RS

C

SW

A

SP

R

ST

BB

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

CH

RX

C

A

49

СРАВНЕНИЕ КОДОВ

CLR

RR

C

15

СРАВНЕНИЕ КОДОВ

CL

RX

C

A

55

СРАВНЕНИЕ КОДОВ (символ)

CLC

SS

C

A

D5

СРАВНЕНИЕ КОДОВ (непосредственный операнд)

CLI

SI

C

A

95

СРАВНЕНИЕ СИМВОЛОВ ПО МАСКЕ

CLM

RS

C

A

BD

СРАВНЕНИЕ КОДОВ ДЛИННОЕ

CLCL

RR

C

A

SP

R

0F

ПРЕОБРАЗОВАНИЕ В ДВОИЧНУЮ

CVB

RX

A

D

IK

R

4F

ПРЕОБРАЗОВАНИЕ В ДЕСЯТИЧНУЮ

CVD

RX

A

ST

4E

ДЕЛЕНИЕ

DR

RR

SP

IK

R

1D

ДЕЛЕНИЕ

D

RX

A

SP

IK

R

5D

ИСКЛЮЧАЮЩЕЕ ИЛИ

XR

RR

C

R

17

ИСКЛЮЧАЮЩЕЕ ИЛИ

X

RX

C

A

R

57

ИСКЛЮЧАЮЩЕЕ ИЛИ (символ)

XC

SS

C

A

ST

D7

ИСКЛЮЧАЮЩЕЕ ИЛИ (непосредственный операнд)

XI

SI

C

A

ST

97

ВЫПОЛНИТЬ

EX

RX

A

SP

EX

44

ПРОЧИТАТЬ СИМВОЛ

IC

RX

A

R

43

ПРОЧИТАТЬ СИМВОЛЫ ПО МАСКЕ

ICM

RS

C

A

R

BF

ЗАГРУЗКА

LR

RR

R

18

ЗАГРУЗКА

L

RX

A

R

58

ЗАГРУЗКА АДРЕСА

LA

RX

R

41

ЗАГРУЗКА И ПРОВЕРКА

LTR

RR

C

R

12

ЗАГРУЗКА ДОПОЛНЕНИЯ

LCR

RR

C

IF

R

13

ЗАГРУЗКА ПОЛУСЛОВА

LH

RX

A

R

48

ЗАГРУЗКА ГРУППОВАЯ

LM

RS

A

R

98

ЗАГРУЗКА ОТРИЦАТЕЛЬНАЯ

LNR

RR

C

R

11

ЗАГРУЗКА ПОЛОЖИТЕЛЬНАЯ

LPR

RR

C

IF

R

10

ОБРАЩЕНИЕ К МОНИТОРУ

MC

SI

SP

MO

AF

ПЕРЕСЫЛКА

MVC

SS

A

ST

D2

ПЕРЕСЫЛКА (непосредственный операнд)

MVI

SI

A

ST

92

ПЕРЕСЫЛКА ДЛИННАЯ

MVCL

RR

C

A

SP

R

ST

0E

ПЕРЕСЫЛКА ЦИФР

MVN

SS

A

ST

D1

ПЕРЕСЫЛКА СО СДВИГОМ

MVO

SS

A

ST

F1

ПЕРЕСЫЛКА ЗОН

MVZ

SS

A

ST

D3

УМНОЖЕНИЕ

MR

RR

SP

R

1C

УМНОЖЕНИЕ

M

RX

A

SP

R

5C

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

MH

RX

A

R

4C

ИЛИ

OR

RR

C

R

16

ИЛИ

O

RX

C

A

R

56

ИЛИ (символ)

OC

SS

C

A

ST

D6

ИЛИ (непосредственный операнд)

OI

SI

C

A

ST

96

УПАКОВАТЬ

PACK

SS

A

ST

F2

УСТАНОВИТЬ МАСКУ ПРОГРАММЫ

SPM

RR

L

04

СДВИГ ВЛЕВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ

SLDA

RS

C

SP

IF

R

8F

СДВИГ ВЛЕВО ДВОЙНОЙ КОДА

SLDL

RS

SP

R

8D

СДВИГ ВЛЕВО АРИФМЕТИЧЕСКИЙ

SLA

RS

C

IF

R

8B

СДВИГ ВЛЕВО КОДА

SLL

RS

R

89

СДВИГ ВПРАВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ

SRDA

RS

C

SP

R

8E

СДВИГ ВПРАВО ДВОЙНОЙ КОДА

SRDL

RS

SP

R

8C

СДВИГ ВПРАВО АРИФМЕТИЧЕСКИЙ

SRA

RS

C

R

8A

СДВИГ ВПРАВО КОДА

SRL

RS

R

88

ЗАПИСЬ В ПАМЯТЬ

ST

RX

A

ST

50

ЗАПИСЬ В ПАМЯТЬ СИМВОЛА

STC

RX

A

ST

42

ЗАПИСЬ В ПАМЯТЬ СИМВОЛА ПО МАСКЕ

STCM

RS

A

ST

BE

ЗАПИСЬ В ПАМЯТЬ ПОКАЗАНИЯ ЧАСОВ

STCK

S

C

A

ST

B205

ЗАПИСЬ В ПАМЯТЬ ПОЛУСЛОВА

STH

RX

A

ST

40

ЗАПИСЬ В ПАМЯТЬ ГРУППОВАЯ

STM

RS

A

ST

90

ВЫЧИТАНИЕ

SR

RR

C

IF

R

1B

ВЫЧИТАНИЕ

S

RX

C

A

IF

R

5B

ВЫЧИТАНИЕ ПОЛУСЛОВА

SH

RX

C

A

IF

R

4B

ВЫЧИТАНИЕ КОДОВ

SLR

RR

C

R

1F

ВЫЧИТАНИЕ КОДОВ

SL

RX

C

A

R

5F

ОБРАЩЕНИЕ К СУПЕРВИЗОРУ

SVC

RR

0A

ПРОВЕРИТЬ И УСТАНОВИТЬ

TS

S

C

A

ST

93

ПРОВЕРИТЬ ПО МАСКЕ

TM

SI

C

A

91

ПЕРЕКОДИРОВАТЬ

TR

SS

A

ST

DC

ПЕРЕКОДИРОВАТЬ И ПРОВЕРИТЬ

TRT

SS

C

A

R

DD

РАСПАКОВАТЬ

UNPK

SS

A

ST

F3

Обозначения:

A - особый случай доступа к памяти;

B - событие перехода, контролируемое средствами регистрации программных событий;

C - устанавливается признак результата;

D - особый случай, относящийся к данным;

EX - особый случай употребления команды ВЫПОЛНИТЬ;

IF - переполнение в операции с фиксированной точкой;

IK - особый случай деления с фиксированной точкой;

L - загружен новый признак результата;

MO - событие обращения к монитору;

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

RR - формат RR;

RS - формат RS;

RX - формат RX;

S - формат S;

SI - формат SI;

SP - особый случай спецификации;

SS - формат SS;

ST - событие, связанное с изменением в памяти, контролируемое средствами регистрации программных событий;

SW - средство условного обмена.

СЛОЖЕНИЕ

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);

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

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

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

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

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

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

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 заключается в выборке байта первого операнда из основной памяти и последующей записи в память нового значения. Запись конкретного байта не обязательно производится сразу же после его выборки. Отсюда следует, что команду И нельзя использовать для обновления содержимого разделяемой ячейки основной памяти без учета возможных непредвиденных последствий, если существует вероятность того, что другой процессор в это же время может производить изменение содержимого указанной ячейки. В случае команды 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

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 содержит нули, команда перехода эквивалентна отсутствию операции. Если же все четыре бита маски равны единице, т.е. значение маски равно 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 разряда общего регистра.

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

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

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

Начальное значение счетчика, равное единице, дает после вычитания нуль, и переход отсутствует. Если начальное значение счетчика равно нулю, то при выполнении команды оно станет равным -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 разряда в общих регистрах. Отрицательные величины представляются в дополнительном коде. Если адрес регистра, содержащего первый операнд, совпадает с адресом регистра, содержащего значение для сравнения, то в качестве сравниваемого значения используется первоначальное содержимое этого регистра.

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

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

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

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

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

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 разрядов, включая знаковый. В результате операции исходные операнды в общих регистрах и в памяти не изменяются.

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

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

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

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

3 - не бывает.

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

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

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

CS R1,R3,D2(B2) [RS]


Подобные документы

  • Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.

    курсовая работа [266,9 K], добавлен 24.12.2013

  • Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.

    курсовая работа [719,3 K], добавлен 12.09.2015

  • Сущность и роль бухгалтерской отчетности. Характеристика хозяйственных операции и системы обработки данных в первичные учетные документы. Особенности логической структуры реляционной базы данных. Описание методов работы с информационной системой.

    курсовая работа [1,1 M], добавлен 26.04.2015

  • Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.

    реферат [35,2 K], добавлен 13.11.2009

  • Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.

    курсовая работа [78,9 K], добавлен 09.09.2014

  • Проектирование блоков устройства контроля по модулю три матричного умножителя с сокращением вычислений для обработки мантисс чисел с плавающей точкой. Методика выполнения арифметических операций, порядок обработки мантисс по n-разрядным операндам.

    курсовая работа [125,2 K], добавлен 24.09.2010

  • Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.

    презентация [170,6 K], добавлен 14.08.2013

  • Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.

    реферат [1,1 M], добавлен 06.01.2011

  • Понятие машинной команды как закодированного по определенным правилам указания микропроцессору на выполнение некоторой операции или действия. Элементы машинных команд (код операции, операнд) и их виды (передачи данных, управления, арифметико-логические).

    презентация [120,6 K], добавлен 14.10.2013

  • Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.

    контрольная работа [18,0 K], добавлен 05.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.