Cтраница 2
Команда N выполняет операцию логического умножения, используя содержимое второго операнда в качестве маски для содержимого регистра первого операнда. [16]
Команда X использует содержимое полного слова, указанного вторым операндом, в качестве маски для содержимого регистра первого операнда. [17]
Команда BCTR вызывает переход к команде, адрес которой находится в регистре второго операнда, если содержимое регистра первого операнда отлично от нуля. При каждом выполнении этой команды значение величины в регистре первого операнда алгебраически уменьшается на единицу. Как только содержимое регистра станет равным нулю, управление передается команде, следующей за командой BCTR. Признак результата не изменяется. [18]
Эта команда выполняет операцию логического умножения, используя содержимое регистра второго операнда в качестве маски для содержимого регистра первого операнда. [19]
Команда CR используется для алгебраического сравнения величин с фиксированной точкой, содержащихся в друх общих регистрах. Содержимое регистра первого операнда сравнивается с содержимым регистра второго операнда. [20]
При выполнении этой команды множитель, расположенный по адресу второго операнда, расширяется до размера слова путем добавления 16 старших битов того же значения, что и знаковый бит первоначального полуслова. Затем содержимое регистра первого операнда умножается на 32-битовый расширенный множитель. [21]
Число со знаком из полуслова, указанного вторым операндом, расширяется до целого слова путем добавления 16 старших двоичных разрядов со значением, равным значению знакового разряда первоначального содержимого полуслова. Затем это расширенное значение вычитается из содержимого регистра первого операнда. Вычитание производится путем сложения расширенного значения в дополнительном коде со значением, содержащимся в общем регистре первого операнда. Второй операнд должен располагаться на границе полуслова. [22]
Команда ВСТ вызывает переход по адресу, определенному вторым операндом, всякий раз, когда значение величины в регистре первого операнда отлично от нуля. При каждом выполнении этой команды происходит алгебраическое уменьшение содержимого регистра первого операнда на единицу. Если после этого оно становится равным нулю, переход he производится и выполняется следующая по порядку команда. Признак результата не изменяется. [23]
Команда SLL выполняет сдвиг в пределах одного общего регистра максимально на 32 двоичные позиции. Содержимое регистра первого операнда сдвигается влево на число разрядов, определяемое вторым операндом. Значение знакового разряда игнорируется, и он сдвигается вместе с остальными разрядами. По мере того как содержимое указанного общего регистра сдвигается влево, освободившиеся младшие разряды заполняются нулями. Биты, сдвинутые за пределы регистра, теряются и замещаются битами, передвинутыми из младших разрядов. [24]
Хотя, судя по названию этой команды, можно предположить что множитель и множимое являются полусловами, множимое тем не менее может иметь значение, большее максимальной величины числа длиной в полуслово, но при условии, что результат умножения не превосходит максимального значения, которое можно записать в полное слово. Сначала содержимое полуслова, указанного вторым операндом, извлекается и расширяется до размера слова путем добавления 16 старших битов того же значения, что и знаковый бит первоначального полуслова. Затем содержимое регистра первого операнда ( множимое) умножается на 32-битовый расширенный множитель. Результат умножения, представляющий собой 32-разрядное число с фиксированной точкой, помещается в общий регистр первого операнда. Знаки множителя и множимого определяют знак произведения в соответствии с правилами алгебры. Второй операнд должен располагаться в памяти на границе полуслова. [25]
До начала сравнения производится расширение содержимого 16-разрядной величины второго операнда до 32-разрядной величины. Значение каждого из 16 добавочных старших двоичных разрядов совпадает со значением исходного знакового бита второго операнда. Затем производится алгебраическое сравнение содержимого регистра первого операнда с расширенным вторым операндом как с 32-разрядным целым числом со знаком и устанавливается соответствующий признак результата. При выполнении этой команды операнды не изменяются. Второй операнд должен быть выравнен по границе полуслова. [26]