→ Пошук по сайту       Увійти / Зареєструватися

Команди асемблера для Intel: ROL, ROR, SAHF, SAL, SAR

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

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

rol операнд,1

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

rol операнд,cl

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

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

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

Приклад 1

mov Ax,1
rol Ax,1 ;AX=0002h, Cf=0

Приклад 2

mov Dl,8 Oh
rol Dl,1 ;DL=01h, Cf=1

Приклад 3

mov Dx,3000h
mov Cl,4
rol Dx,cl ;DX=0003h, Cf=1

Приклад 4

mov Dx,2000h
mov Cl,4
rol Dx,cl ;DX=0002h, Cf=0


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

Приклад

mov Еах,012345678h
rol Eах,16 ;EAX=56781234h

 

>ROR Циклічне зрушення управо


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

ror операнд,1

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

ror операнд,cl

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

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

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

Приклад 1

mov Ax,2
ror Ax,1 ;AX=0001h, Cf=0

Приклад 2

mov Dl,81h
ror Dl,1 ;DL=C0h, Cf=1

Приклад 3

mov Bx,000eh
mov Cl,4
ror Bx,cl ;BX=E000h, Cf=1

Приклад 4

mov Bx,0009h
mov Cl,4
ror Bx,cl ;BX=9000h, Cf=1

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

Приклад

mov Edi,90000001h
ror Edi,12 ;EDI=00190000h

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

Команда sahf копіює розряді 7, 6, 4, 2 і 0 регістра АН в регістр прапорів процесора, встановлюючи тім самим значення прапорів SF, ZF, AF, PF і CF відповідно. Команда не має операндів.

Команда sahf (спільно з командою lahf) дає можлівість читаті і змінюваті значення прапорів процесора, зокрема прапорів SF, ZF, AF і PF, які не можна змініті безпосередньо. Проте слід маті на увазі, що команда sahf заповнює тільки молодший байт регістра прапорів. Тому не можна змініті з її допомогою, напріклад, стан прапора OF.

Приклад 1

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

Приклад 2

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

Приклад 3

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

 

SAL Аріфметічне зрушення вліво


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

sal операнд, 1

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

sal операнд,cl

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

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

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

Кожне зрушення вліво еквівалентне множенню знакового числа на 2, тому команду sal зручно вікорістовуваті для піднесення операнда до ступеня 2.
Команда впліває на прапорі OF, SF, ZF, PF і CF.

Приклад 1

mov Al,7
sal Al,1 ;AL= 0Eh=7*2, Cf=0

Приклад 2

mov Ax,ifh
mov Cl,8
salAx,cl;AX=lF00h=lFFh*256, Cf=0

Приклад 3

mov Si-1 ;SI=FFFFh
mov Cl,4
salsi,cl;SI=FFF0h=-l*16=-16, Cf=1

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

Приклад

mov Ebx,0000c835h
sal Ebx,5 ;EBX=001906A0h

SAR Аріфметічне зрушення управо

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

sar операнд,1

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

sar операнд,cl

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

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

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

Кожне зрушення управо еквівалентне діленню знакового числа на 2, тому команду sar зручно вікорістовуваті для ділення операнда на цілі ступені 2. Команда впліває на прапорі OF, SF, ZF, AF, PF і CF.

Приклад 1

mov Al,7
sarAl,1;AL=3=7/2, Cf=1. Залішок
;втраченій

Приклад 2

mov Ax,lff0h
mov Cl,4
sarAx,cl;AX=01FFh=lFF0h/16, Cf=0

Приклад 3

mov Bx-8 ;BX=FFF8h
mov Cl,2
sarbx,cl;BX=FFFEh=-2=-8/4, Cf=0

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

Приклад

mov Eax,0f0001234h
sar Eax,8 Eax=fff00012h

загрузка...
Сторінки, близькі за змістом