на начало
На главную страницу
Форум   

ROL Циклический сдвиг влево

страницы в данном разделе 
» Приложение. Система команд процессоров Intel » Система команд процессоров Intel
» ААА ASCII-коррекция регистра АХ после сложения » ADC Целочисленное сложение с переносом
» 386+ BSF Прямое сканирование битов » 386+ BTR Проверка и сброс бита
» CLC Сброс флага переноса » СМР Сравнение
» 486+ CMPXCHG Сравнение и обмен » DAA Десятичная коррекция в регистре AL после сложения
» HLT Останов » INS Ввод строки из порта
» INT Программное прерывание » MP Безусловный переход
» 386+ LEAVE Выход из процедуры высокого уровня » 386Р+ LGDT Загрузка регистра таблицы глобальных дескрипторов
» LOCK Запирание шины » 386+ LODSD Загрузка двойного слова из строки
» 386Р+ LTR Загрузка регистра задачи TR » MOVS Пересылка данных из строки в строку
» MUL Умножение целых чисел без знака » OUTS Вывод строки в порт
» POP Извлечение слова из стека » PUSH Занесение операнда в стек
» RCR Циклический сдвиг вправо через бит переноса » RET Возврат из процедуры
» ROL Циклический сдвиг влево » SBB Целочисленное вычитание с займом
» 386+ SETcc Установка байта по условию » 386P+ SIDT Сохранение в памяти содержимого регистра таблицы дескрипторов прерываний
» STI Установка флага прерывания » 386P+ STR Сохранение содержимого регистра состояния задачи
» 486+ XADD Обмен и сложение »  

Статья :: ROL Циклический сдвиг влево

ROL Циклический сдвиг влево

 

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
sal AX,CL ;AX=lF00h=lFFh*256, CF=0

Пример 3


mov SI,-1 ;SI=FFFFh
mov CL,4
sal SI,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
sar AL,1 ;AL=3=7/2, CF=1. Остаток
;потерян

Пример 2


mov AX,lFF0h
mov CL,4
sar AX,CL ;AX=01FFh=lFF0h/16, CF=0

Пример 3


mov BX,-8 ;BX=FFF8h
mov CL,2
sar BX,CL ;BX=FFFEh=-2=-8/4, CF=0

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

Пример


mov EAX,0F0001234h
sar EAX,8 EAX=FFF00012h

 


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
© faq.pp.ru, справочник программиста
Яндекс цитирования