Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота № 3 МЗКІТ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
123.15 Кб
Скачать

3.3 Логічні команди

У системі команд мікропроцесора є наступний набір команд, що підтримують роботу з логічними даними:

and операнд_1,операнд_2 - операція логічного множення.

Команда виконує поразрядно логічну операцію І (конъюнкцію) над бітами операндів операнд_1 і операнд_2. Результат записується на місце операнд_1.

or операнд_1,операнд_2 - операція логічного додавання.

Команда виконує поразрядно логічну операцію АБО (диз'юнкцію) над бітами операндів операнд_1 і операнд_2. Результат записується на місце операнд_1.

Xor операнд_1,операнд_2 - операція логічного додавання, що виключає.

Команда виконує поразрядно логічну операцію, що виключає АБО над бітами операндів операнд_1 і операнд_2. Результат записується на місце операнд_1.

test операнд_1,операнд_2 - операція “перевірити” (способом логічного множення). Команда виконує поразрядно логічну операцію И над бітами операндів операнд_1 і операнд_2. Стан операндів залишається колишнім, змінюються тільки прапори zf, sf, і pf, що дає можливість аналізувати стан окремих бітів операнда без зміни їх стану.

not операнд - операція логічного заперечення. Команда виконує поразрядне інвертування (заміну значення на зворотне) кожного біта операнда. Результат записується на місце операнда.

3.4 Команди зрушення (зсуву)

Команди цієї групи також забезпечують маніпуляції над окремими бітами операндів, але іншим способом, ніж логічні команди, розглянуті вище. Усі команди зрушення переміщають біти в поле операнда вліво або вправо залежно від коду операції.

Кількість розрядів, що зрушуються, - лічильник_зрушень - розташовується, як бачите, на місці другого операнда й може задаватися двома способами:

- статично, що припускає завдання фіксованого значення за допомогою безпосереднього операнда;

- динамічно, що означає занесення значення лічильника зрушень у регістр cl перед виконанням команди зрушення.

Команди лінійного зрушення діляться на два підтипи:

- команди логічного лінійного зрушення;

- команди арифметичного лінійного зрушення.

До команд логічного лінійного зрушення відносяться:

- shl операнд,лічильник_зрушень (Shift Logical Left) - логічне зрушення вліво. Уміст операнда зрушується вліво на кількість бітів, обумовлене значенням лічильник_зрушень. Праворуч (у позицію молодшого біта) уписуються нулі;

- shr операнд,лічильник_зрушень (Shift Logical Right) - логічне зрушення вправо. Уміст операнда зрушується вправо на кількість бітів, обумовлене значенням лічильник_зрушень. Ліворуч (у позицію старшого, знакового біта) уписуються нулі.

Команди арифметичного лінійного зрушення відрізняються від команд логічного зрушення тим, що вони особливим образом працюють зі знаковим розрядом операнда:

- sal операнд,лічильник_зрушень (Shift Arithmetic Left) - арифметичне зрушення вліво. Уміст операнда зрушується вліво на кількість бітів, обумовлене значенням лічильник_зрушень. Праворуч (у позицію молодшого біта) уписуються нулі. Команда sal не зберігає знака, але встановлює прапор cf у випадку зміни знака черговим висунутим бітом. В іншому команда sal повністю аналогічна команді shl;

- sar операнд,лічильник_зрушень (Shift Arithmetic Right) - арифметичне зрушення вправо. Уміст операнда зрушується вправо на кількість бітів, обумовлене значенням лічильник_зрушень. Ліворуч в операнд уписуються нулі. Команда sar зберігає знак, відновлюючи його після зрушення кожного чергового біта.

До команд циклічного зрушення відносяться команди, що зберігають значення біт, що зрушуються. Є два типи команд циклічного зрушення:

- команди простого циклічного зрушення;

- команди циклічного зрушення через прапор переносу cf.

До команд простого циклічного зрушення ставляться:

- rol операнд,лічильник_зрушень (Rotate Left) - циклічне зрушення вліво. Уміст операнда зрушується вліво на кількість біт, обумовлене операндом лічильник_зрушень. Біти, що зрушуються вліво, записуються в той же операнд праворуч.

- ror операнд,лічильник_зрушень (Rotate Right) - циклічне зрушення вправо. Уміст операнда зрушується вправо на кількість біт, обумовлене операндом лічильник_зрушень. Біти, що зрушуються вправо, записуються в той же операнд.

До команд циклічного зрушення через прапор переносу cf відносяться наступні:

- rcl операнд,лічильник_зрушень (Rotate through Carry Left) - циклічне зрушення вліво через перенос. Уміст операнда зрушується вліво на кількість біт, обумовлене операндом лічильник_зрушень. Біти, що зрушуються, по черзі стають значенням прапора переносу cf.

- rcr операнд,лічильник_зрушень (Rotate through Carry Right) - циклічне зрушення вправо через перенос. Уміст операнда зрушується вправо на кількість біт, обумовлене операндом лічильник_зрушень. Біти, що зрушуються, по черзі стають значенням прапора переносу cf.