Флаги
O D I T S Z A P C 0 * * ? * 0
Команда:
TEST destination,source
Логика:
(destination AND source); Только изменение признаков CF = 0 OF = 0
Команда TEST выполняет операцию AND над своими операндами и меняет значения признаков. Сами операнды не изменяются.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
регистр,регистр | 3 | - | 2 | TEST AL,DL |
регистр,непоср.операнд | 5 | - | 3-4 | TEST CX,0FFh |
аккумулятор,непоср.оп. | 4 | - | 2-3 | TEST AX,01000010b |
регистр,память | 9(13)+EA | 1 | 2-4 | TEST CX,MASK |
память,непоср.операнд | 11+EA | - | 3-6 | TEST GAMMA,01h |
Команда TEST полезна при проверке значения конкретного бита. Например, следующий кусок программы передает управление в ONE_FIVE_OFF, если биты 1 и 5 регистра AL сброшены. Значения остальных битов во внимание не принимаются.
TEST AL,00100010b ;Маскируем все биты, кроме 1 и 5 JZ ONE_FIVE_OFF ;Если хотя бы один установлен, ;то ZF=1 NOT_BOTH: . . ONE_FIVE_OFF: ;Биты 1 и 5 сброшены . .