Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Допустимые типы операнда: r8, m8, r1б, m16. Эта команда меняет значение каждого бита операнда на противоположное: 0 на 1 и 1 на 0; результат записывается на место операнда. Например:
MOV AL,1100b;AL=00001100b
NOT AL;AL=11110011b
Конъюнкция (логическое умножение): AND op1,op2
В этой команде допустимы следующие комбинации операндов:
Ор1 ор2
r8 i8, r8, m8
m8 i8,r8
r16 il6, rl6, ml6
m16 il6, rl6
Команда производит поразрядное логическое умножение операндов и записы-вает результат на место первого операнда, i-й бит результата равен 1, только если i-e биты обоих операндов равны 1, и равен 0, если хотя бы в одном операнде i-й бит нулевой (см. таблицу). Например:
MOV AL,1100b;AL=00001100b
AND AL,1010b;AL=00001000b
X | Y | x and y | x xor y | x or y |
Проверка: TEST opl,op2
Это аналог команды AND, но результат логического умножения никуда не записывается. Главное в команде TEST - установка флагов. Как уже было сказано, в логических командах интерес представляет только флаг нуля ZF. Так вот, он равен 1, если в результате логического умножения получился нулевой ответ, и равен 0, если в ответе есть хотя бы одна двоичная 1.
Примеры:
MOV BH,1100b
TEST BH,0011b;= 00000000b -> ZF=1
TEST BH,1010b;= 00001000b -> ZF=0
Команда TEST обычно применяется для проверки, являются ли нулевыми какие-то разряды операнда. Например, сделать переход на метку L в случае, если правые три бита регистра АХ нулевые, можно так:
TEST AX,111b
JZ L
Дата публикования: 2014-12-08; Прочитано: 279 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!