Cтраница 1
Операция арифметического сдвига заключается в перемещении влево или вправо двоичных разрядов с одних позиций на другие с сохранением порядка их следования относительно друг друга за исключением знакового разряда. Операции сдвига выполняются командами: SLA ( SHIFT LEFT SINGLE ALGEBRAIC) - СДВИГ ВЛЕВО АРИФМЕТИЧЕСКИЙ, SRA ( SHIFT RIGHT SINGLE ALGEBRAIC) - СДВИГ ВПРАВО АРИФМЕТИЧЕСКИЙ, SLDA ( SHIFT LEFT DOUBLE ALGEBRAIC) - СДВИГ ВЛЕВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ, SLDA ( SHIFT RIGHT DOUBLE ALGEBRAIC) - СДВИГ ВПРАВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ. Эти команды применяются для изменения или уравнивания масштабов, так как они обеспечивают умножение или деление операндов на 2, где k есть число двоичных сдвигов. [1]
Операция арифметического сдвига, заключается в перемещении влево или вправо двоичных разрядов с одних позиций на другие с сохранением порядка их следования относительно друг друга за исключением знакового разряда. Операции сдвига выполняются командами: SLA ( SHIFT LEFT SINGLE ALGEBRAIC) - СДВИГ ВЛЕВО АРИФМЕТИЧЕСКИЙ, SRA ( SHIFT RIGHT SINGLE ALGEBRAIC) - СДВИГ ВПРАВО АРИФМЕТИЧЕСКИЙ, SLDA ( SHIFT LEFT DOUBLE ALGEBRAIC) - СДВИГ ВЛЕВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ, SRDA ( SHIFT RIGHT DOUBLE ALGEBRAIC) - СДВИГ ВПРАВО ДВОЙНОЙ АРИФМЕТИЧЕСКИЙ. Эти команды применяются для изменения или уравнивания масштабов, так как они обеспечивают умножение или деление операндов на 2ft, где k есть число двоичных сдвигов. [2]
Операции арифметического сдвига влево SLA ( Left Algebraic) и арифметического сдвига вправо SRA ( Right Algebraic) производят сдвиг влево или вправо значащей части дополнительного кода числа. При сдвиге вправо пропадает значение из разряда тридцать один, а в разряд один поступает код знакового разряда. Разряд знака при этом не изменяется. Сдвигаемый код находится в регистре RI, а величина сдвига указывается шестью младшими двоичными разрядами адреса второго операнда. Операции SLDA и SRDA производят двойной ( Double) арифметический сдвиг соответственно влево и вправо. Сдвигаемый код состоит из 64 битов и занимает два общих регистра. Старшая часть находится в регистре с четным номером Ri, а младшая - в регистре со следующим нечетным номером. [3]
Операция арифметического сдвига эквивалентна умножению числа с фиксированной запятой, находящегося на сумматоре, на 2 или 2 - п, в зависимости от направления сдвига. [4]
Запуск операции арифметического сдвига ( логического сдвига) происходит при записи числа сдвигов по адресу 777316 ( 777314) При этом знак числа сдвигов определяет направление сдвигов. Tlpt выполнении этих операций 32-разрядное содержимое регистров АК и МЧ сдвигается на соответствующее число разрядов. [5]
Использование операций арифметического сдвига при программировании достаточно очевидно. [6]
Различие между операциями логического и арифметического сдвига заключается в обработке знакового разряда - первого разряда слова. При логическом сдвиге первый разряд сдвигается вместе с другими разрядами, поскольку ему не приписывается особый смысл. При арифметическом сдвиге знаковый разряд должен рассматриваться отдельно. В случае арифметического сдвига вправо освобождаемые разряды с левой стороны накапливающего сумматора заполняются с учетом значения знакового разряда, сохраняя таким образом алгебраический знак содержимого сумматора. [7]
![]() |
Условное графическое обозначение К1800ВР8. [8] |
Микросхема PS состоит из дешифраторов вида сдвига ОСТ и выбора величины сдвига и знака DCF, входного MUXI и выходного MUXO мультиплексоров, блока выбора знака и блока знакового разряда. Вход S / используется для определения знака операций арифметического сдвига и распространения знакового разряда. [9]
В связи с этим для более эффективной реализации указанных действий в машине предусмотрены две операции арифметического сдвига, используемые в командах формата RS. При выполнении этих команд преобразуемое число х выбирается из регистра ль а в качестве значения k принимается исполнительный адрес 5з, заданный в команде, - этот адрес является непосредственным операндом. Результат выполнения операции помещается в регистр г; регистр г2 в этих операциях не используется, и поэтому в записи команды на автокоде он не указывается. При выполнении этих операций новое значение ш не вырабатывается. [10]
Однако в некоторых арифметических операциях байтами можно манипулировать прямо, применяя байтовые инструкции. В двойные ( длинные) слова помещается произведение ( при умножении) или делимое - при выполнении операции деления. Над двойными словами допустимы операции прямого арифметического сдвига, сложения или вычитания слова посредством команд сложения / вычитания слов. Набор команд, обеспечивающий условный переход по знаку, позволяет в программе передавать управление в зависимости от результатов арифметических операций. Заметим, что самый старший бит в числе с дополнением до двух всегда указывает знак числа. [11]
![]() |
Регистр флагов. [12] |
Бит 11, флаг переполнения OF ( overflow flag), в первую очередь служит индикатором ошибки при выполнении операций над числами со знаком. Флаг OF равен 1, если результат сложения двух чисел с одинаковым знаком или результат вычитания двух чисел с противоположными знаками выйдет за пределы допустимого диапазона значений операндов. Кроме того, OF 1, если старший, ( знаковый) бит операнда изменился в результате операции арифметического сдвига. [13]