Page 30 - 4989
P. 30
Таблиця 3.2 – Логічні команди
Встановлення
Команда Зміст
флагів
Порозрядне логічне І між
AND dst, src
операндами src i dst
Порозрядне логічне АБО між
OR dst, src
операндами src i dst ZF, PF, SF – по
Порозрядне виключне АБО між результатах
XOR dst, src
операндами src i dst операції
Порозрядне логічне І між CF, OF –
операндами src i dst без скидаються в 0
TEST dst, src збереження результату операції
(використовується для
встановлення флагів)
не встановлює
NOT dst Порозрядна інверсія операнда dst
флагів
Флаг ZF встановлюється в "1", якщо результат операції
нульовий (інакше скидається в "0"). PF встановлюється в "1",
якщо у молодшому байті результату операції наявна парна
кількість одиничок. SF встановлюється в "1", якщо результат
операції при інтерпретації його як числа із знаком є від’ємним
(про це свідчить "1" у найстаршому – знаковому розряді).
Також у регістрі ЕFLAGS є флаги, що встановлюються по
результатах арифметичних операцій і зсувів (CF, OF, AF) та
флаги, що встановлюються/скидаються програмно і задають
певні параметри режиму роботи процесора (DF – напрям обробки
масивів рядковими командами, IF – дозвіл/заборона апаратних
переривань, тощо).
Команди AND, OR, XOR часто використовують для
встановлення окремих бітів операнда в 0 або 1 без зміни інших
бітів. Для цього необхідно виконати логічну функцію між
операндом та маскою. Маска – це число, що визначає, які саме
біти будуть встановлені, скинуті чи інвертовані.
Для встановлення бітів у 0 використовується команда AND з
маскою з нулями на місці бітів, що слід скинути, і одиницями в
усіх інших бітах. Наприклад, команда and al, 01111110b
30