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