Инструменты пользователя

Инструменты сайта


examination:asm:question40

Вопрос №40. Команды логического сдвига

Команды сдвига предназначены для непосредственного смещения бит в байте, слове или двойном слове. Для этого предназначены следующие команды SHR сдвиг влево SHL сдвиг вправо SAL арифметический сдвиг влево SAR арифметический сдвиг вправо ROL циклический сдвиг влево ROR циклический сдвиг вправо

SHR,SHL Записывается как SHR ax,5 (сдвиг на 5 бит вправо), при выполнении этих команд выдвинутый бит попадает в о флаг CF, а освобожденное место заполняется 0.Можно использовать эти команды для деления беззнаковых чисел на степень двойки.

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

Дальше не обязательно- про арифметический сдвиг SAL,SAR Арифметический сдвиг, записывается как SAR ax,5 (сдвиг на 5 бит вправо). При выполнении команды, SAR старший знаковый бит остается точно таким же, что позволяет организовать деление чисел со знаком на степень двойки, выдвинутый бит помещается в CF. Команда SAL работает аналогично команде SHL

и иначе)

К командам линейного сдвига относятся команды, осуществляющие сдвиг по следующему алгоритму.

1. Очередной ≪выдвигаемый≫ бит устанавливает флаг CF.

2. Бит, появляющийся с другого конца операнда, имеет значение 0.

3. При сдвиге очередного бита он переходит во флаг CF, при этом значение предыдущего сдвинутого бита теряется

Команды линейного сдвига делятся на два подтипа:

  1. команды логического линейного сдвига;
  2. команды арифметического линейного сдвига.

Далее перечислены команды логического линейного сдвига:

shl операнд,счетчик_сдвигов — логический сдвиг влево (Shift Logical Left). Содержимое операнда сдвигается влево на количество битов, определяемое значением счетчик_сдвигов. Справа в позицию младшего бита вписываются нули.

shr операнд,счетчик_сдвигов — логический сдвиг вправо (Shift Logical Right). Содержимое операнда сдвигается вправо на количество битов, определяемое значением счетчик_сдвигов. Слева в позицию старшего (знакового) бита вписы- ваются нули.

examination/asm/question40.txt · Последние изменения: 2014/01/15 08:13 (внешнее изменение)