Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по ВМСиС.doc
Скачиваний:
25
Добавлен:
05.06.2015
Размер:
2.31 Mб
Скачать

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

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

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. передача данных должна быть справа налево.

  1. Регистр 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.

  1. Регистр 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.

Задание на занятие

  1. Напишите программу на языке Ассемблера для вычисления 12 чисел Фибоначчи: 1, 1, 2, 3, 5, 8, 13,... (каждое число в последовательности представляет собой сумму двух предыдущих чисел). Для организации цикла используйте команду LOOP.

  2. Напишите программу на языке Ассемблера для умножения содержимого регистра AX на число 10, используя только команды сдвига, пересылки и сложения.

  3. 1Напишите программу для определения дискриминанта (d) квадратного уравнения. Коэффициенты а, в и с хранятся соответствующе в регистрах АХ, ВХ, и СХ. Результат поместить в регистрDX. После вычисления в регистр СХ поместить значение 0, еслиdравен 0; 1 - еслиdбольше 0; 2 - еслиdменьше 0.