Флаги
O D I T S Z A P C * *
Команда:
RCR destination,count
Команда RCR сдвигает слово или байт, находящийся по адресу destination, вправо на число битовых позиций, определяемое вторым операндом, COUNT. Бит, который выскакивает за правый предел операнда destination, заносится в признак переноса CF, а старое значение CF осуществляет ротацию, в том смысле, что оно заносится в освободившийся крайний левый бит операнда destination. Число таких "битовых ротаций" определяется операндом COUNT.
Если COUNT не равен 1, то флаг переполнения OF не определен. Если же COUNT равен 1, тогда в OF заносится результат выполнения операции исключающего или, примененной к 2 старшим битам результата.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
регистр, 1 | 2 | - | 2 | RCR CX,1 |
регистр, CL | 8 + 4/бит | - | 2 | RCR DL,CL |
память, 1 | 15(23) + EA | 2 | 2-4 | RCR DIVIDE,1 |
память, CL | 20(28)+EA+4/бит | 2 | 2-4 | RCR MOVE_AR,CL |
Примечания:
В качестве операнда COUNT берется обычно значение в регистре CL. Если, однако, Вы хотите осуществить сдвиг лишь на одну позицию, то замените второй операнд (CL) на число 1, как показано выше в первом примере.
Микропроцессоры 80286 и 80386 ограничивают значение COUNT числом 31. Если COUNT больше, чем 31, то эти микропроцессоры используют COUNT MOD 32, чтобы получить новый COUNT в пределах 0-31. Эта верхняя граница имеет своей целью сократить тот период времени, на который будет задерживаться ответ на прерывание из-за ожидания конца выполнения команды.
Несколько команд RCR, использующих 1 в качестве второго операнда, выполняются быстрее и требуют меньшего объема памяти, чем одна команда RCR, использующая CL в качестве операнда COUNT.
Флаг переполнения не определен, если операнд COUNT больше 1.