Команды циклического сдвига

Циклический сдвиг представляет собой операцию сдвига, при которой выдвинутый бит занимает освободившийся разряд. Существуют следующие команды циклического сдвига:

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.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: