Связь с администрацией сайта:       

demo

Среди толпы я одинок

Глава 10 - команды операций сдвигов

Команды сдвига перемещает все биты в поле данных либо вправо, либо влево, работая либо с байтами, либо со словами. Каждая команда содержит два операнда: первый операнд – поле данных – может быть либо регистром, либо ячейкой памяти; второй операнд – счетчик сдвигов. Его значение может быть равным 1, или быть произвольным. В последнем случае это значение необходимо занести в регистр CL, который указывается в команде сдвига. Число в CL может быть в пределах 0-255, но его практически имеющие смысл значения лежат в пределах 0-16 (0-31).
 
Общая черта всех команд сдвига – установка флага переноса. Бит, попадающий за пределы операнда, сохраняется во флаге переноса. Всего существует 8 команд сдвига: 4 команды обычного сдвига и 4 команды циклического сдвига. Команды циклического сдвига переносят появляющийся в конце операнда бит в другой конец, а в случае обычного сдвига этот бит пропадает. Значение, вдвигаемое в операнд, зависит от типа сдвига. При логическом сдвиге вдвигаемый бит всегда 0, арифметический сдвиг выбирает вдвигаемый бит таким образом, чтобы сохранить знак операнда. Команды циклического сдвига с переносом и без него отличаются трактовкой флага переноса.
Первые рассматривают его как дополнительный 9-ый или 17-ый бит в операции сдвига, а вторые нет.
Ниже приведен перечень команд сдвига:
1) команды логического сдвига вправо SHR и влево SHL;
2) команды арифметического сдвига вправо SAR и влево SAL;
3) команды циклического сдвига вправо ROR и влево ROL;
4) команды циклического сдвига вправо RCR и влево RCL с переносом;
Действие команд сдвига иллюстрируют следующие рисунки.
 sdvigi
 
Примеры использования команд сдвига:
SHL CH,1
SHL [BP],CL
RCL Size,1
Голосуй
(1 Голос)