![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Эти команды выполняют логические операции над битами операндов. Размерность операндов, естественно, должна быть одинакова. Команда последовательно повторяет действия над всеми битами.
Команды процессора, поддерживающие работу с логическими данными:
· AND операнд_1,операнд_2 – операция логического умножения. Команда выполняет поразрядно логическую операцию И (конъюнкцию) над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1.
· OR операнд_1,операнд_2 – операция логического сложения. Команда выполняет поразрядно логическую операцию ИЛИ (дизъюнкцию) над битами операндов операнд_1 и операнд_2. Результат такж в операнд_1.
· ХОR операнд_1,операнд_2 – операция логического исключающего сложения. Команда выполняет поразрядно логическую операцию исключающего ИЛИ над битами операндов операнд_1 и операнд_2. Результат – операнд_1.
· TEST операнд_1,операнд_2 – операция проверки (способом логического умножения). Команда выполняет поразрядно логическую операцию над битами операндов операнд_1 и операнд_2. Состояние операндов остается прежним, изменяются только флаги ZF, SF, и PF, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния в исходных операндах.
· NOT операнд – операция логического отрицания. Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда. Результат записывается на место операнда.
Для установки определенных разрядов (битов) в 1 применяется команда OR операнд_1,операнд_2. В этой команде второй операнд, играющий роль маски, должен содержать единичные биты на месте тех разрядов, которые должны быть установлены в 1 в первом операнде:
or ах,10b;установить 1-й бит в регистре ах
Для сброса определенных разрядов (битов) в 0 применяется команда AND операнд_1,операнд_2. В этой команде второй операнд, играющий роль маски, должен содержать нулевые биты на месте тех разрядов, которые должны быть установлены в 0 в первом операнде:
and ах, 0fffdh;сбросить в 0 1-й бит в регистре ах
Для выяснения того, какие биты в обоих операндах различаются, или для инвертирования заданных битов в первом операнде применяется команда ХОR операнд_1,операнд_2. Интересующие нас биты второго операнда при выполнении команды XOR должны быть единичными, остальные – нулевыми:
хог ах, 10b; инвертировать 1-й бит в регистре ах
jz mes;переход, если 1-й бит в al был единичным
Для проверки состояния заданных битов в первом операнде применяется команда TEST операнд_1,операнд_2. Проверяемые биты первого операнда в маске (втором операнде) должны иметь единичное значение. Результатом команды является установка значения флага нуля ZF:
- если ZF = 0, то в результате логического умножения получился ненулевой результат, то есть хотя бы один единичный бит маски совпал с соответствующим единичным битом первого операнда;
- если ZF = 1, то в результате логического умножения получился нулевой результат, то есть ни один единичный бит маски не совпал с соответствующим единичным битом первого операнда.
Дата публикования: 2014-12-08; Прочитано: 426 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!