Циклический сдвиг представляет собой операцию сдвига, при которой выдвинутый бит занимает освободившийся разряд. Существуют следующие команды циклического сдвига:
ROR; Циклический сдвиг вправо
ROL; Циклический сдвиг влево
RCR; Циклический сдвиг вправо с переносом
RCL; Циклический сдвиг влево с переносом
Следующая последовательность команд иллюстрирует операцию циклического сдвига ROR:
MOV BX,10110111B; 10110111
ROR BX,4; 01111011;Сдвиг вправо на 4
Команда ROR сдвигает все биты вправо и переносит правые единичные биты регистра BX в освободившиеся левые позиции.
В командах RCR и RCL в сдвиге участвует флаг CF. Выдвигаемый из регистра бит заносится в флаг CF, а значение CF при этом поступает в освободившуюся позицию.
Рассмотрим пример, в котором используются команды циклического и простого сдвига. Предположим, что 32-битовое значение находится в регистрах DX:AX так, что левые 16 бит лежат в регистре DX, а правые - в AX. Для умножения на 2 этого значения возможны следующие две команды:
SHL AX,1;Умножение пары регистров
|
|
RCL DX,1; DX:AX на 2
Здесь команда SHL сдвигает все биты регистра AX влево, причем самый левый бит попадает в флаг CF. Затем команда RCL сдвигает все биты регистра DX влево и в освободившийся правый бит заносит значение из флага CF.
Содержание отчета
Для защиты лабораторной работы каждым студентом должен быть написан отчет о лабораторной работе, включающий тему, цель работы и содержащий следующие пункты:
1. Общие сведения о командах перехода.
2. Общие сведения о логических командах и командах сдвига.
3. Ответы на контрольные вопросы 1, 2 и 3-5 (по номеру своего варианта).
4. Листинги двух (трех) программ.
Контрольные вопросы
1. Что такое флаговый регистр? Где он находится? Как к нему получить доступ?
2. Какое максимальное количество байт могут обойти команды короткий JMP, LOOP и относительный переход? Какой машинный код операнда при этом генерируется?
3. На какие флаги воздействуют следующие события и какое значение этих флагов?
1) произошло переполнение;
2) результат отрицательный;
3) результат нулевой;
4) обработка в пошаговом режиме;
5) передача данных должна быть справа налево.
4. Регистр BL содержит 11100011 и регистр AH содержит 01111001. Определите воздействие на регистр BL для следующих команд:
1) xor bl, ah;
2) and bl, ah;
3) or bl, ah;
4) xor bl,11111111b;
5) and bl,00000000b.
5. Регистр DX содержит 10111001 10111001. Определите содержимое регистра DX после следующих несвязанных команд:
1) shr dx,1;
2) shr dx,3;
3) shl dx,2;
4) shl dl,1;
5) ror dx,2;
6) ror dl,3.