Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 16
1

Логические операторы

16.01.2013, 12:13. Показов 5326. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста разобраться как сравнивают и работают эти операторы: Test, cmp, not, or, xor.
Преподаватель показал пример Test, и сказал так разобрать все, сейчас попробую вспомнить...

Test как и логическое И.
1001101010
1101001001
-----------
1001001000

Подскажите пожалуйста как быть с остальными....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2013, 12:13
Ответы с готовыми решениями:

Логические операции
С помощью логических операций реализуйте запись битов в данной ячейки памяти, размером в 2 байта, в...

Логические сдвиги
Как можно поделить число при помощи логических сдвигов на число, не равное 2^n?

Логические операции
Нужно посчитать выражения F = Y*96+Х-16 где: X = 185D (un int) Y = AA (un char) F =...

Логические команды
Здравствуйте! Подскажите как работает команда BTR Например: .data y dd 2 d dd 7 ...

2
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
16.01.2013, 13:29 2
cmp:
CMP

(CoMPare operands)
Сравнение операндов

Схема команды: cmp операнд1,операнд2
Назначение: сравнение двух операндов.
Синтаксис
Алгоритм работы:

выполнить вычитание (операнд1-операнд2);
в зависимости от результата установить флаги, операнд1 и операнд2 не изменять (то есть результат не запоминать).
Состояние флагов после выполнения команды:
11 07 06 04 02 00
OF SF ZF AF PF CF
r r r r r r
Применение:
Данная команда используется для сравнения двух операндов методом вычитания, при этом операнды не изменяются. По результатам выполнения команды устанавливаются флаги. Команда cmp применяется с командами условного перехода и командой установки байта по значению setcc.
len equ 10
...
cmp ax,len
jne m1 ;переход если (ax)<>len
jmp m2 ;переход если (ax)=len
not:
NOT

(NOT operand)
Инвертирование операнда

Схема команды: not источник
Назначение: инвертирование всех битов операнда источник.
Синтаксис
Алгоритм работы:
инвертировать все биты операнда источника: из 1 в 0, из 0 в 1.
Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги
Применение:
Команду not можно использовать для изменения байта, выполняющего роль некоторого флага, с целью отслеживания некоторых логических условий в программе. Но такой способ не оптимален, эту ситуацию мы обсуждали в книге на уроках 9 и 12.
flag db 0ffh ;значение флага — истина
...
cycl:
...
cmp flag,0
je m1
...
m1: not flag ;установить флаг в истину
or:
OR

(logical OR)
Логическое включающее ИЛИ

Схема команды: or приемник,маска
Назначение: операция логического ИЛИ над битами операнда назначения.
Синтаксис
Алгоритм работы:

выполнить операцию логического ИЛИ над битами операнда назначения, используя в качестве маски второй операнд — маска. При этом бит результата равен 0, если соответствующие биты операндов маска и назначения равны 0, в противном случае бит равен 1;
записать результат операции в источник (операнд маска остается неизменным);
установить флаги.
Состояние флагов после выполнения команды:
11 07 06 04 02 00
OF SF ZF AF PF CF
0 r r ? r 0
Применение:
Команду or можно использовать для работы с операндами на уровне битов. Типичное использование команды — установка определенных разрядов первого операнда в единицу.
mov al,01h
or bl,al ;установить нулевой бит в 1
xor:
XOR

Логическое исключающее ИЛИ
ASCII-коррекция после сложения

Схема команды: xor приемник,источник
Назначение: операция логического исключающего ИЛИ над двумя операндами размерностью байт, слово или двойное слово.
Синтаксис
Алгоритм работы:

выполнить операцию логического исключающего ИЛИ над операндами: бит результата равен 1, если значения соответствующих битов операндов различны, в остальных случаях бит результата равен 0;
записать результат сложения в приемник;
установить флаги.
Состояние флагов после выполнения команды:
11 07 06 04 02 00
OF SF ZF AF PF CF
0 r r ? r 0
Применение:
Команда xor используется для выполнения операции логического исключающего ИЛИ двух операндов. Результат операции помещается в первый операнд. Эту операцию удобно использовать для инвертирования или сравнения определенных битов операндов.
;изменить значение бита 0 регистра al на обратное
xor al,01h
И еще справочка по команде test:
TEST

(TEST operand)
Логическое И

Схема команды: test приемник,источник
Назначение: операция логического сравнения операндов приемник и источник размерностью байт, слово или двойное слово.
Синтаксис
Алгоритм работы:

выполнить операцию логического умножения над операндами приемник и источник: бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0;
установить флаги.
Состояние флагов после выполнения команды:
11 07 06 02 00
OF SF ZF PF CF
0 r r r 0
Применение:
Команда test используется для логического умножения двух операндов. Результат операции, в отличие от команды and, никуда не записывается, устанавливаются только флаги. Эту команду удобно использовать для получения информации о состоянии заданных битов операнда приемник. Для анализа результата используется флаг zf, который равен 1, если результат логического умножения равен нулю.
test al,01h
jnz m1 ;переход, если нулевой бит al равен 1
1
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 16
16.01.2013, 13:32  [ТС] 3
Спасибо)
0
16.01.2013, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2013, 13:32
Помогаю со студенческими работами здесь

Логические команды
Всем привет) Вобщем дана такая задача: Рассматривая байт как набор логических значений x7 x6 x5 x4...

Логические операции
Как с помощью логический операций, вывести те элементы массива, которые меньше 1? Мне бы сам...

логические инструкции
как с помощью логических инструкций установить определенные биты регистра в зависимости от условия?...

Логические операции на асме.
Дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти “исключающее или”...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru