|
||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Логические командыВ ассемблере есть логические команды AND, OR, XOR, NOT. Еще есть команда TEST, которая выполняется как AND, но с особенностями, о которых речь ниже. В ассемблере эти команды обрабатывают пары битов и порождают как результат тоже бит. Биты трактуются: 0 – неправда, ложь; 1 – правда, истина. Ассемблерный нюанс состоит в том, что один бит как операнд логической команде сообщить никак не возможно, синтаксис допускает операнды размерами, стандартными для процессора: байт, слово (word), двойное слово (dword). В этом случае логические команды AND, TEST, OR, XOR имеют всегда два операнда одинаковой разрядности (byte-byte, word-word, dword-dword). Второй операнд логической команды называют маской. Биты этих операндов обрабатываются попарно (нулевой с нулевым, первый с первым, второй со вторым и т.д. до последней пары в разрядной сетке.). Правила вычисления бита-результата («таблицы истинности») такие:
Из битов-результатов составляется значение-результат, и по этому результату устанавливаются флаги. Это делает возможность «отловить» нулевое значение, отрицательное, короче, любое, которое детектируется флагами. И последнее действие при выполнении – команды AND, OR, XOR записывают значение в свой первый операнд; а TEST это значение никуда не пишет, у этой команды (по алгоритму это та же AND) дело заканчивается установкой флагов. Особняком стоит команда NOT, у неё всегда один операнд (byte, word, dword). И работа этой команды проста – она просто меняет каждый бит своего операнда на противоположный и это значение опять пишет в этот свой единственный операнд. Поскольку первый операнд перезаписывается, то он не может быть константой. Проблема 1. Как сбросить бит. Решение такое: ГарантированныйНоль = ПроизвольныйБит AND 0; Итак, правило сброса словесно выражается так: чтобы сбросить бит, надо выполнить для него AND с маской ноль.
Проблема 2. Как установить бит. Решение: ГарантированнаяЕдиница = ПроизвольныйБит OR 1; Итак, правило установки бита словесно выражается так: чтобы установить бит, надо выполнить для него OR с маской 1.
Проблема 3. Как инвертировать бит. Решение: ИнвертированныйБит = ИсходныйБит XOR 1;
Написать на бумаге команду, которая установит старший бит регистра AН. OR ah, 10000000B Здесь В означает запись число в битовом формате.
Написать на бумаге команду, которая сбросит средние 4 бита регистра AL. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |