КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Линейный сдвигК командам этого типа относятся команды, осуществляющие сдвиг по следующему алгоритму: - очередной «выдвигаемый» бит устанавливает флаг cf; - бит, вводимый в операнд с другого конца, имеет значение 0; - при сдвиге очередного бита он переходит во флаг cf, при этом значение предыдущего сдвинутого бита теряется! Команды линейного сдвига делятся на два подтипа: - команды логического линейного сдвига; - команды арифметическом линейного сдвига. К командам логического линейного сдвига относятся следующие: shl операнд, счетчик_сдвигов (Shift Logical Left) — логический сдвиг влево. Содержимое операнда сдвигается влево па количество битов, определяемое знамением счетчик_сдвигов. Справа (в позицию младшего бита) вписываются нули; shr операнд, счетчик^ сдвигов (Shift Logical Right) — логический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое значением счетчик_сдвигов. Слева (в позицию старшего, знакового бита) вписываются нули. Команды арифметического линейного сдвига отличаются от команд логического сдвига тем, что они особым образом работают со знаковым разрядом операнда: sal операнд, счетчик_сдвигов (Shift Arithmetic Left) — арифметический сдвиг влево. Содержимое операнда сдвигается влево на количество битов, определяемое значением счетчик_сдвигов. Справа (в позицию младшего бита) вписываются нули. Команда sal не сохраняет знака, но устанавливает флаг cf в случае смены знака очередным выдвигаемым битом. В остальном команда sal полностью аналогична команде shl; sar операнд, счетчик_сдвигов (Shift Arithmetic Right) — арифметический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое значением счетчик_сдвигов. Слева в операнд вписываются нули. Команда sar сохраняет знак, восстанавливая его после сдвига каждого очередного бита. Команды арифметического сдвига позволяют выполнить умножение и деление операнда на степени двойки. Посмотрите па двоичное представление чисел 75 и 150: 75 – 01001011 150 – 10010110 Сдвигая вправо операнд, мы осуществляем операцию деления на степени двойки 2, 4, 8 и т. д. Преимущество этих команд, по сравнению с командами умножения и деления, — в скорости их исполнения микропроцессором.
|