-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||D0 /2 RCL r/m8,1 3/4 Циклический сдвиг 9 битов || (CF, байт r/m) влево 1 раз ||D2 /2 RCL r/m8, 8-30/9-31 Циклический сдвиг 9 битов || CL (CF, байт r/m) влево CL раз ||C0 /2 ib RCL r/m8, 8-30/9-31 Циклический сдвиг 9 битов || imm8 (CF, байт r/m) влево imm8 раз ||D1 /2 RCL r/m16,1 3/4 Циклический сдвиг 17 битов || (CF,слово r/m) влево 1 раз ||D3 /2 RCL r/m16, 8-30/9-31 Циклический сдвиг 17 битов || CL (CF,слово r/m) влево CL раз ||C1 /2 ib RCL r/m16, 8-30/9-31 Циклический сдвиг 17 битов || imm8 (CF,слово r/m) влево imm8 раз ||D1 /2 RCL r/m32,1 3/4 Циклический сдвиг 33 битов || (CF,двойное слово r/m) влево 1 раз ||D3 /2 RCL r/m32, 8-30/9-31 Циклический сдвиг 33 битов || CL (CF,двойное слово r/m) влево CL раз ||C1 /2 ib RCL r/m32, 8-30/9-31 Циклический сдвиг 33 битов || imm8 (CF,двойное слово r/m) влево imm8 раз||D0 /3 RCR r/m8,1 3/4 Циклический сдвиг 9 битов || (CF, байт r/m) вправо 1 раз ||D2 /3 RCR r/m8, 8-30/9-31 Циклический сдвиг 9 битов || CL (CF, байт r/m) вправо CL раз ||C0 /3 ib RCR r/m8, 8-30/9-31 Циклический сдвиг 9 битов || imm8 (CF, байт r/m) вправо imm8 раз ||D1 /3 RCR r/m16,1 3/4 Циклический сдвиг 17 битов || (CF,слово r/m) вправо 1 раз ||D3 /3 RCR r/m16, 8-30/9-31 Циклический сдвиг 17 битов || CL (CF,слово r/m) вправо CL раз ||C1 /3 ib RCR r/m16, 8-30/9-31 Циклический сдвиг 17 битов || imm8 (CF,слово r/m) вправо imm8 раз ||D1 /3 RCR r/m32,1 3/4 Циклический сдвиг 33 битов || (CF,двойное слово r/m) вправо 1 раз ||D3 /3 RCR r/m32, 8-30/9-31 Циклический сдвиг 33 битов || CL (CF,двойное слово r/m) вправо CL раз ||C1 /3 ib RCR r/m32, 8-30/9-31 Циклический сдвиг 33 битов || imm8 (CF,двойное слово r/m)вправо imm8 раз||D0 /0 ROL r/m8,1 3/4 Циклический сдвиг 8 битов || ( байт r/m) влево 1 раз ||D2 /0 ROL r/m8, 3/4 Циклический сдвиг 8 битов || CL ( байт r/m) влево CL раз ||C0 /0 ib ROL r/m8, 3/4 Циклический сдвиг 8 битов || imm8 ( байт r/m) влево imm8 раз ||D1 /0 ROL r/m16,1 3/4 Циклический сдвиг 16 битов || ( слово r/m) влево 1 раз ||D3 /0 ROL r/m16, 3/4 Циклический сдвиг 16 битов || CL ( слово r/m) влево CL раз ||C1 /0 ib ROL r/m16, 3/4 Циклический сдвиг 16 битов || imm8 ( слово r/m) влево imm8 раз ||D1 /0 ROL r/m32,1 3/4 Циклический сдвиг 32 битов || (двойное слово r/m) влево 1 раз ||D3 /0 ROL r/m32, 3/4 Циклический сдвиг 32 битов || CL (двойное слово r/m) влево CL раз ||C1 /0 ib ROL r/m32, 2/4 Циклический сдвиг 32 битов || imm8 (двойное слово r/m) влево imm8 раз||D0 /1 ROR r/m8,1 3/4 Циклический сдвиг 8 битов || ( байт r/m) вправо 1 раз ||D2 /1 ROR r/m8, 3/4 Циклический сдвиг 8 битов || CL ( байт r/m) вправо CL раз ||C0 /1 ib ROR r/m8, 3/4 Циклический сдвиг 8 битов || imm8 ( байт r/m) вправо imm8 раз ||D1 /1 ROR r/m16,1 3/4 Циклический сдвиг 16 битов || ( слово r/m) вправо 1 раз ||D3 /1 ROR r/m16, 3/4 Циклический сдвиг 16 битов || CL ( слово r/m) вправо CL раз ||C1 /1 ib ROR r/m16, 3/4 Циклический сдвиг 16 битов || imm8 ( слово r/m) вправо imm8 раз ||D1 /1 ROR r/m32,1 3/4 Циклический сдвиг 32 битов || (двойное слово r/m) вправо 1 раз ||D3 /1 ROR r/m32, 3/4 Циклический сдвиг 32 битов || CL (двойное слово r/m) вправо CL раз ||C1 /1 ib ROR r/m32, 2/4 Циклический сдвиг 32 битов || imm8 (двойное слово r/m)вправо imm8 раз|----------------------------------------------------------------- Работа команды(* ROL - циклический сдвиг влево *)врем <- счетчик;WHILE(врем <> 0)DO времcf <- старший бит (r/m); r/m <- r/m * 2 + (времcf); врем <- врем - 1;OD;IF счетчик = 1THEN IF старший бит r/m <> CF THEN OF <- 1; ELSE OF <- 0; FI;ELSE OF <- неопределено;FI; (* ROR - циклический сдвиг вправо *)врем <- счетчик;WHILE(врем <> 0)DO времcf <- младший бит (r/m); r/m <- r/m / 2 + (времcf * 2 ** width(r/m)); врем <- врем - 1;OD;IF счетчик = 1THEN IF (старший бит r/m) <> (бит, соседний со старшим битом r/m) THEN OF <- 1; ELSE OF <- 0; FI;ELSE OF <- неопределено;FI; ОписаниеКаждая команда циклического сдвига сдвигает биты данного операнда регистраили памяти. Команда циклического сдвига влево сдвигают все биты в верхнемнаправлении, за исключением самого верхнего бита, который переходит внижнюю позицию. Команды циклического сдвига выполняют обратное действие:биты сдвигаются в нижнем направлении, пока самый нижний бит не окажетсясверху.В случае команд RCL и RCR флаг CF является частью сдвигаемых данных.Команда RCL сдвигает флаг CF в нижний бит, а верхний бит сдвигает во флагCF; команда RCR сдвигает флаг CF в верхний бит, а нижний бит сдвигает вофлаг CF. Для команд ROL и ROR исходное значение флага CF не являетсячастью результата, но флаг CF получает копию бита, который был сдвинут содного конца на другой.Сдвиг повторяется число раз, задаваемое вторым операндом, которыйпредставляет собой либо непосредственное значение, либо содержимоерегистра CL. Для уменьшения максимального времени выполнения командыпроцессор i486 не позволяет число циклических сдвигов более 31. Припопытке сделать счетчик сдвигов более 31 используются только нижние 5битов. 8086 не маскирует счетчик сдвигов. В виртуальном режиме 8086процессор i486 не маскирует счетчик сдвигов.Флаг OF определен только для однократных форм команды (второй операндравен 1). В остальных случаях он не определен. Для сдвигов/циклическихсдвигов влево для бита CF после сдвига выполняется операция XOR с битомрезультата старшего порядка. Для сдвигов/циклических сдвигов вправо длядвух битов старшего порядка результата выполняется операция XOR дляполучения флага OF. Изменяемые флагиФлаг OF изменяется только в случае циклических сдвигов на 1 бит; длясдвигов на несколько битов флаг OF неопределен; флаг CF содержит значениебита, который был в него помещен сдвигом; флаги SF, ZF, AF и PF неизменяются. Исключения защищенного режима#GP(0), если назначением является сегмент, недоступный для записи; #GP(0)в случае недопустимого исполнительного адреса операнда памяти в сегментахCS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS;#PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки кпамяти при текущем уровне привилегированности, равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.