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

Теоретичні відомості до виконання лабораторної роботи

Команди зсуву і циклічного зсуву являють собою частину логічних можливостей комп'ютера і мають наступні властивості:

1) обробляють байт або слово;

2) слово можуть зрушувати на величину до 16 біт і до 8 біт для байта.

Значення зсуву на 1 може бути закодоване як безпосередній операнд. Значення більше 1 повинне знаходитися в регістрі CL.

Команди зсуву

При виконанні команд зсуву прапор CF завжди містить значення останнього висунутого біта.

SHR (Shift Right) Логічний (беззнаковий) зсув вправо

0 CF

SHL (Shift Left) Логічний (беззнаковий) зсув вліво

CF 0

Команди зсуву часто застосовують для ділення і множення на 2, що ефективніше використання команд множення або ділення. Якщо при множенні відбувається переповнення або ділення не здійснюється без остачі, то встановлюється прапор переносу CY.

Приклад 1: SHR DL,1

Ця команда зрушує вміст регістра DL вправо на 1 біт. Висунутий у результаті один біт попадає в прапор CF, а самий лівий біт регістра DL заповнюється нулем.

DL CF

10110111

0

B7h=183(10), NC до виконання

інструкції

01011011

1

0

після виконання інструкції

5Bh=91(10), CY (183:2=91 і залишок 1)

Якщо виконати інструкцію ще кілька разів, одержимо:

0 0 1 0 1 1 0 1 1 2Dh=45(10) , CY (91:2=45 і залишок 1)

0 0 0 1 0 1 1 0 1 16h=22(10) , CY (45:2=22 і залишок 1)

0 0 0 0 1 0 1 1 0 0Bh=11(10) , NC (22:2=11 без залишку)

і т.д.

Після 8 зрушень у регістрі DL з'явиться 00h.

Приклад 2: SHL AX,CL

Якщо в регістр CL записати значення 03, то ця команда зрушує вміст регістра AX на 3 біти вліво. Праві 3 біти заповнюються нулями. (Рівносильне множенню на 23=8)

CF AX

0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 до виконання команди

1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 після виконання команди

Команда SAR – арифметичний зсув вправо

Значення

знакового 0 або 1 CF

розряду

SAR відрізняється від SHR тим, що для заповнення лівого біта використовується знаковий біт. Таким чином, позитивні і негативні величини зберігають свій знак.

Приклад 3: SAR DH,1

DH CF

10110101

0

B5h=-75(10), NC до виконання

інструкції

11011010

1

1

після виконання інструкції

DAh=-38(10) , CY (-75 на 2 без остачі

не поділяється)

Якщо виконати інструкцію ще кілька разів, одержимо:

1 1 1 0 1 1 0 1 0 -19

1 1 1 1 0 1 1 0 1 -10

1 1 1 1 1 0 1 1 0 -5 і т.д.

Приклад 4: SAR DL,1

DL CF

01110101

0

75h=117(10), NC до виконання

інструкції

00111010

1

0

після виконання інструкції

3Ah=58(10) , CY