У таблиці 6.2. наведені значення регістра прапорів, встановлювані логічними командами.
Cодержімое молодшої частини регістра AX поразрядно помножити на двійковечисло 0010 1010b (2Аh)
MOV AL, 0001 1100b; AL = 0001 1100b (1Ch) AL, 0010 1010b; AL = 0000 1000b (08h)
Вміст молодшої частини регістра AL логічно скласти з вмістом його старшої частини.
MOV AL, 1110 1100b; (ECh) AH, 1010 1010b; (AAh) AL, AH; AL = 1110 1110b (EEh) AH = 1010 1010b (AAh)
Над вмістом АL і числом 1Аh (0001 1010b) провести операцію виключає АБО.
MOV AL, 1110 0111b; AL = 1110 0111b (E7h)
XOR AL, 1Ah; AL = 1111 1101b (FDh) BH, 1100bBH, 0011b; = 00000000b -> ZF = 1BH, 1010b; = 00001000b -> ZF = 0
Над вмістом молодшої частини регістра AХ виконати операцію заперечення.
MOV AL, 0001 1100b; AL = 0001 1100b (1Сh) AL; AL = 1110 0011b (E3h)
Прийоми використання логічних операцій.
За допомогою логічних команд можна виробляти виділення окремих бітів у операнді з метою їх установки, скидання, інвертування або просто < b align = "justify"> перевірки на певне значення. Для організації подібної роботи з бітами операнд src span> зазвичай грає роль маски . За допомогою встановлених в 1 бітів цієї маски і визначаються потрібні для конкретної операції біти операнда dst . Розглянемо на прикладах основні прийоми використання логічних операції.
Установка певних розрядів в 1.
Для установки певних розрядів в 1 застосовується команда OR dst, maska ​​ . У цій команді операнд maska ​​ повинен містити одиничні біти на місці тих розрядів, які повинні бути встановлені в 1 в операнді dst . Наприклад, щоб встановить розряди 3 та 6 акумулятора AL, потрібно використовувати маску x1xx1xxx і виконати команду OR AL, x1xx1xxx b;
Скидання певних розрядів в 0.
Для скидання певних розрядів в 0 застосовується команда AND dst, maska. У цій команді оператор maska ​​ повинен містити нульові біти на місці тих розрядів, які повинні бути встановлені в 0 в операторі dst . Наприклад, щоб очистити розряди 3 та 6 акумулятора AL, потрібно використовувати маску x0xx0xxx і виконати команду AND AL, x0xx0xxx b;.
Порівняння бітів двох операндів.
Для з'ясування того, які біти в двох операндах розрізняються застосовується команда XOR dst, maska. У цій команді операнд < b align = "justify"> maska ​​ повинен містити одиничні біти на місці тих розрядів, які порівнюються, а решта - нульовими. Наприклад, щоб порівняти розряди 3 та 6 акумулятора AL, потрібно використовувати маску 01001000 і виконати команду XOR AL, 01001000 b;.
інвертуванням стану заданих біт.
Для інвертування стану заданих біт в dst також застосовується команда XOR dst, src.
Перевірки стану заданих біт.
Для перевірки стану заданих біт операнда застосовується команда TEST dst, maska ​​ . При цьому перевіряються біти операнда dst в операнді maska ​​повинні мати одиничне значення. Результатом команди є установка значення прапора нуля ZF:
Гј якщо ZF = 0 , то в результаті логічного множення вийшов нульовий результат, то є один одиничний біт маски, який не співпав з відповідним одиничним бітом dst;
Гј якщо ZF = 1 , то в результаті логічного множення вийшов ненульовий результат, тобто хоча б один одиничний біт маски збігся з відповідним одиничним бітом d...