ROL Циклічне зрушення вліво

Команда rol здійснює зсув вліво всіх бітів операнда. Якщо команда записана у форматі

зрушення складає 1 біт. Старший біт операнда завантажується до його молодшого розряду і одночасно заноситься у прапор CF (рис. П6). Якщо команда записана у форматі

зсув здійснюється на число біт, зазначене в регістрі-лічильнику CL, при цьому в процесі послідовних зрушень старші біти операнда переміщуються до його молодших розрядів. Останній перенесений біт одночасно заноситься у прапор CF.

Мал. П6. Дія команди rol.

Як операнд можна вказувати будь-який регістр (крім сегментного) або комірку пам'яті розміром як в байт, так і в слово. Не допускається використовувати як операнда безпосереднє значення. Команда впливає на прапори OF та CF.

Припустимо зсув 32-бітових операндів. Допустимо вказівку числа біт зсуву як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зсуву становить 31 біт.

>ROR Циклічний зсув праворуч

Команда ROR здійснює циклічний зсув вправо всіх бітів операнда. Якщо команда записана у форматі

зрушення складає 1 біт. Молодший біт операнда записується у його старший розряд і водночас надходить у прапор CF (рис.Ш). Якщо команда записана у форматі

зсув здійснюється на число біт, вказане в регістрі-лічильнику CL, при цьому в процесі послідовних зрушень молодші біти операнда переміщуються до його старших розрядів. Останній перенесений біт одночасно заноситься у прапор CF.

Мал. П7. Дія команди ror.

Як операнд можна вказувати будь-який регістр (крім сегментного) або комірку пам'яті розміром як в байт, так і в слово. Не допускається використовувати як операндабезпосереднє значення. Команда впливає на прапори OF та CF.

Допустимо зсув 32-бітових операндів. Допустимо вказівку числа біт зсуву як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зсуву становить 31 біт.

SAHF Запис вмісту регістру АН у регістр прапорів

lahf ;Регістр АН відображає ;стан регістру прапорів or АН,80h ;Установка біта 7 = SF sahf ;Завантаження АН у регістр ;прапорів, де тепер буде SF = 1

lahf ;Регістр АН відображає ;стан регістру прапорів and АН,0BFh ;Скидання біта 6 = ZF sahf ;Завантаження АН в регістр ;прапорів, де тепер буде ZF = 0

mov АН, 5 sahf ;Встановлюються прапори PF і ;CF і скидається прапори SF, ;ZF і AF

SAL Арифметичний зсув вліво

Команда sal здійснює зсув вліво всіх бітів операнда. Старший біт операнда надходить у прапор CF. Якщо команда записана у форматі

зрушення складає 1 біт. У молодший біт операнда завантажується 0. Якщо команду записано у форматі

зсув здійснюється на число бітів, зазначене в регістрі-лічильнику CL, при цьому в процесі послідовних зрушень старші біти операнда, пройшовши через прапор CF, губляться, а молодші заповнюються нулями (мал. П8.).

Мал. П8. Дія команди sal.

Як операнда команди sal можна вказувати будь-який регістр (крім сегментного) або комірку пам'яті розміром як у байт, так і слово. Не допускається використовувати як операнда безпосереднє значення. Кожен зсув ліворуч еквівалентний множенню знакового числа на 2, тому команду sal зручно використовуватиме зведення операнда в ступінь 2. Команда впливає прапори OF, SF, ZF, PF і CF.

Припустимо зсув 32-бітових операндів.Допустимо вказівку числа біт зсуву як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зсуву становить 31 біт.

SAR Арифметичний зсув праворуч

Команда sar здійснює зсув праворуч усіх бітів операнда. Молодший біт операнда надходить у прапор CF. Якщо команда записана у форматі

зрушення складає 1 біт. Старший біт операнда зберігає своє значення. Якщо команда записана у форматі

зсув здійснюється на число біт, вказане в регістрі-лічильнику CL, при цьому в процесі послідовних зрушень молодші біти операнда, пройшовши через прапор CF, губляться, а старший біт розширюється праворуч (рис. П9).

Мал. П.9. Дія команди sar.

Як операнд можна вказувати будь-який регістр (крім сегментного) або комірку пам'яті розміром як в байт, так і в слово. Не допускається використовувати як операнда безпосереднє значення. Кожен зсув праворуч еквівалентний поділу знакового числа на 2, тому команду sar зручно використовувати для поділу операнда на цілі ступені 2. Команда впливає на прапори OF, SF, ZF, AF, PF і CF.

Припустимо зсув 32-бітових операндів. Допустимо вказівку числа біт зсуву як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зсуву становить 31 біт.