ROL – Rotate operand Left – циклический сдвиг операнда влево. — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

ROL – Rotate operand Left – циклический сдвиг операнда влево.

2017-11-17 243
ROL – Rotate operand Left – циклический сдвиг операнда влево. 0.00 из 5.00 0 оценок
Заказать работу

ROL операнд, количество_сдвигов

Флаги: SF, ZF, PF, CF. Флаг AF не определен.

Машинные коды см. таблицу операции SAL. Расширение кода операции при работе с непосредственным операндом, размещающееся в поле Reg/Opc в байте адресации, равно 000.

Например, 1) MOV DL, 80h

ROL DL, 1; DL=01h, CF=1

 

2) MOV DX, 2000h

MOV CL, 4

ROL DX, CL; DX=0002h, CF=0

 

6) ROR операнд, значение — сдвиг вправо циклический (ROll Right) (рис.1.22)

ROR – Rotate operand Right – циклический сдвиг операнда вправо.

ROR операнд, количество_сдвигов

Флаги: SF, ZF, PF, CF. Флаг AF не определен.

Коды команды см. таблицу команды SAL. Но расширение кода операции при работе с непосредственным операндом, размещающееся в поле Reg/Opc в байте адресации, равно 001.

Например, 1) MOV DL, 81h

ROR DL, 1; DL=C0h, CF=1

 

2) MOV BX, 000Eh

MOV CL, 4

ROR BX, CL; BX=E000, CF=1

 
 

 


CF

 

CF

 

Рис. 1.22 Циклические сдвиги влево и вправо

 

При циклическом сдвиге биты не пропадают, а вдвигаются с другой стороны.

 

7) RCL операнд, значение — сдвиг влево циклический через перенос (Roll Cf Left)

RCL – Rotate operand through Carry flag Left – циклический сдвиг операнда влево через флаг переноса.

RCL операнд, количество_сдвигов

Флаги: SF, ZF, PF, CF. Флаг AF не определен.

Машинные коды см. таблицу операции SAL. Расширение кода операции при работе с непосредственным операндом, размещающееся в поле Reg/Opc в байте адресации, равно 010.

Например, 1) MOV DL, 7

RСL DL, 1; DL=0Fh, CF=0 (предыдущее значение 1)

 

2) MOV DH, 3

MOV CL, 4

RСL DH, CL; DH=30h, CF=0 (предыдущее значение 0)

8) RCR операнд, значение — сдвиг вправо циклический через перенос (Roll Cf Right)

RСR – Rotate operand through Carry flag Right – циклический сдвиг операнда вправо через флаг переноса.

RСR операнд, количество_сдвигов

Флаги: SF, ZF, PF, CF. Флаг AF не определен.

Коды команды см. таблицу команды SAL. Но расширение кода операции при работе с непосредственным операндом, размещающееся в поле Reg/Opc в байте адресации, равно 011.

Например, 1) MOV DL, 8h

RСR DL, 1; DL=84h, CF=0 (предварительно установлен)

 

2) MOV BH, 80h

MOV CL, 5

RCR BH, CL; BH=4, CF=0 (предварительно сброшен).

 
 

 


CF

 

 
 

 


CF

 

Рис. 1.23 Циклические сдвиги через перенос влево и вправо

 

Команды RCL, RCR включают CF в кольцо.

Примеры

mov al,11010101b

rol al,1; результат 10101011, в CF — 1, и она же — в 0 бит

mov al,11010101b; CF=0

rcr al,1; результат 01101010, из CF в 7 бит — 0, в CF — 1

Команды циклического сдвига могут использоваться, когда необходимо, например, менять местами фрагменты битов в операнде.

Пример

FFFE 000C
EAX

Младшая часть регистра EAX имеет название — AX, а старшая — нет. Команда ROL позволяет получить доступ к старшей части 32х-разрядного регистра:

 

ROL EAX,16; младшая и старшая часть регистра поменяются местами

 

Теперь:

 
 
000C FFFE


EAX

AX

и бывшая старшая часть доступна в AX.

ПРИМЕР задания

Поделить число, находящееся в паре регистров DX, AX, на 4.

Чтобы это осуществить, нужно синхронно сдвигать оба регистра вправо так, чтобы биты из DX попадали при сдвиге в AX. Один из способов состоит в следующем:

1) сдвигаем DX на 1 разряд вправо (при этом бит из DX попадает во флаг CF);

2) осуществляем циклический сдвиг вправо через перенос регистра AX, при этом бит из CF (он туда попал из DX) попадает в старший разряд регистра AX.

Пункты 1) и 2) повторяем 2 раза, так как 4=22.

..........

 

shr dx,1

rcr ax,1

shr dx,1

rcr ax,1

..........

Контрольные вопросы

1. Что такое маска?

2. Приведите примеры ситуаций, в которых необходимо использование логических команд.

3. Команда OR, как создать маску, принцип использования?

4. Команда AND, как создать маску, принцип использования?

5. Команда XOR, как создать маску, принцип использования?

6. В чем разница между командами NOT и NEG?

7. В каких ситуациях используют команду сравнения? Принцип ее работы.

8. В чем отличие между командами TEST и AND?

9. Какие флаги используются при сравнении чисел без знака?

10. Какие флаги используются при сравнении чисел со знаком?

11. Как использовать команду OR для проверки знака числа или равенства 0 числа?

12. Назовите и объясните принципы работы команд сдвигов (арифметических, логических, циклических).

ПРАКТИЧЕСКИЕ ЗАДАНИЯ

 

Задание 1 (по вариантам).

 

1. В регистре DL установить 6-й, 3-й и 1-й биты и сбросить 0 бит.

2. Инвертировать 4-й и 3-й биты регистра BH, а знаковый бит установить в 1.

3. Умножить операнд в DL на 20.

4. Поместить в старший байт регистра SI младший байт регистра DI.

5. Двойное слово в DX:AX умножить на 4.

6. Сосчитать количество единичных битов в AX. Результат поместить в BX.

7. Разделить содержимое регистра CX на 32.

8. Поместить в регистр CL старший байт регистра DI.

9. Заменить 0,6,7 и 9 биты регистра BХ на 0,6,7 и 8 биты регистра DХ (соответственно).

10. Расположить содержимое AX в регистре BX в обратном порядке.

11. Инвертировать 3-й и 0-й биты регистра CH и сбросить 5 и 7 биты.

12. Переписать три младших бита регистра ВХ на место 10,11 и 12 битов.

13. Двойное слово в DX:AX разделить на 8.

14. В регистре AL установить 1-й, 5-й и 6-й биты, а 4 бит инвертировать.

15. Получить дополнительный код числа в регистре DI, не используя команды NOT или NEG.

16. Заменить три старших бита регистра SI на три младших бита регистра AX.

17. Умножить операнд в DH на 19.

18. Инвертировать четные биты регистра DX, а нечетные обнулить.

19. Заменить 3,4 и 5 биты регистра BL на 3,4 и 5 биты регистра СХ.

20. Разделить содержимое AX на 64.

21. Переписать четыре старших бита регистра СХ на место 3,4,5 и 6 битов.

22. Умножить содержимое регистра BX на 14.

23. Инвертировать нечетные биты регистра AX, а четные установить в 1.

24. Сосчитать количество нулевых битов в CX. Результат поместить в DX.

25. Поменять местами содержимое регистров AL и AH.

26. Поместить в младший байт регистра SI младший байт регистра AX

27. Умножить содержимое регистра BX на 11.

28. В регистре CX в четные биты записать 1, а в нечетные 0.

29. Заменить 1,4 и 7 биты регистра DH на 7,4 и 5 биты регистра СL (соответственно).

Задание 2

Записать машинные коды логических команд и команд сдвигов, используемых в программе из Задания 1. Самостоятельно выполнить действия по этим командам и установить флаги.

Пример выполнения:

Записать машинные коды команд, их 16-ричное представление, выполнить действия и установить флаги.

AND [SI], CH; допустим ([SI]) ® 59h, (CH) ® 3Dh

Машинный код команды: 00100000 00101100; команда занимает 2 байта

16-ричный код команды: 202Ch.

Выполним логическую команду AND над операндами

Ответ: 19h.

Установим флаги, на которые влияет операция AND:

  1. CF=0 (всегда);
  2. PF = 0, т.к. кол-во 1 в байте результата = 3, а это число нечетное;
  3. AF не определен;
  4. ZF = 0, т.к. результат операции не равен нулю;
  5. SF = 0, т.к. знаковый бит содержит 0;
  6. OF = 0 (всегда).

 


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.