Команды циклических сдвигов позволяют переставить биты в числе. ROL - циклический сдвиг влево и ROR - циклический сдвиг вправо, обеспечивают циклический сдвиг. При этом выдвигающийся бит подаётся в освобождающийся бит. В командах RCL и RCR в кольцо сдвига включается флаг CF: выдвигающийся бит подаётся во флаг CF, а состояние флага CF передаётся в освобождающийся бит. Операнд команд сдвигов и циклических переносов может находиться в памяти или в регистре, длина операнда равна 8 или 16 бит. Сдвиг осуществляется на предопределённое число бит (фиксированный сдвиг). В первом случае число сдвигов определяется в команде, а во втором - содержимым регистра CL (счётчика). В микропроцессоре 8086 фиксированный сдвиг осуществляется только на 1 бит.
Примеры команд приведены в таблице 2.11.
Таблица 2.11. Примеры команд циклических сдвигов.
Операнд | Слово | Байт |
Фиксированный сдвиг | ||
Регистр | КОП BX, 13 | КОП DL, 1 |
Память | КОП MEMW, 15 | КОП MEMB, 7 |
Переменный сдвиг | ||
Регистр | КОП AX, CL | КОП BL, CL |
Память | КОП MEMW, CL | КОП MEMB, CL |
КОП: SHR, SHL, SAL, SAR, ROR, ROL, RCR, RCL.
Графическое представление работы команд циклических сдвигов приведено на рисунке 2.4.
Рисунок 2.4. Графическое представление работы команд циклических сдвигов