1. Отрицание (логическое НЕ) – логическая операция над одним операндом, результатом которой является величина, обратная значению исходного операнда.
2. Логическое сложение (логическое включающее ИЛИ) – логическая операция над двумя операндами, результатом которой является «истина» (1), если один или оба операнда имеют значение «истина» (1), и «ложь» (0), если оба операнда имеют значение «ложь» (0).
3. Логическое умножение (логическое И) – логическая операция над двумя операндами, результатом которой является «истина» (1) только в том случае, если оба операнда имеют значение «истина» (1). Во всех остальных случаях значение операции «ложь» (0).
4. Логическое исключающее сложение (логическое исключающее ИЛИ) – логическая операция над двумя операндами, результатом которой является «истина» (1), если только один из двух операндов имеет значение «истина» (1), и ложь (0), если оба операнда имеют значение «ложь» (0) или «истина» (1).
4. Логическое исключающее сложение (логическое исключающее ИЛИ) – логическая операция над двумя операндами, результатом которой является «истина» (1), если только один из двух операндов имеет значение «истина» (1), и ложь (0), если оба операнда имеют значение «ложь» (0) или «истина» (1).
Cледующий набор команд, поддерживающих работу с логическими данными:
1) and операнд_1, операнд_2 – операция логического умножения;
2) or операнд_1, операнд_2 – операция логического сложения;
3) xor операнд_1, операнд_2 – операция логического исключающего сложения;
4) test операнд_1, операнд_2 – операция «проверить» (способом логического умножения)
5) not операнд – операция логического отрицания.
а) для установки определенных разрядов (бит) в 1 применяется команда or операнд_1, операнд_2;
б) для сброса определенных разрядов (бит) в 0 применяется команда and операнд_1, операнд_2;
в) команда xor операнд_1, операнд_2 применяется:
– для выяснения того, какие биты в операнд_1 и операнд_2 различаются;
– для инвертирования состояния заданных бит в операнд_1.
Для проверки состояния заданных бит применяется команда test операнд_1, операнд_2 (проверить операнд_1).
Результатом команды является установка значения флага нуля zf:
1) если zf = 0, то в результате логического умножения получился нулевой результат, т. е. один единичный бит маски, который не совпал с соответствующим единичным битом операн
2) если zf = 1, то в результате логического умножения получился ненулевой результат, т. е. хотя бы один единичный бит маски совпалс соответствующим единичным битом операн
Все команды сдвига перемещают биты в поле операнда влево или вправо в зависимости от кода операции. Все команды сдвига имеют одинаковую структуру – коп операнд, счетчи
56. Команды передачи управления
То, какая команда программы должна выполняться следующей, микропроцессор узнает по содержимому пары регистров cs:(e)ip:
1) cs – сегментный регистр кода, в котором находится физический адрес текущего сегмента кода;
2) eip/ip – регистр указателя команды, в нем находится значение смещения в памяти следующей команды, подлежащей выполнению.
Безусловные переходы
Что должно подвергнуться модификации, зависит:
1) от типа операнда в команде безусловного перехода (ближний или дальний);
2) от указания перед адресом перехода модификатора; при этом сам адрес перехода может находиться либо непосредственно в команде (прямой переход), либо в регистре памяти (косвенный переход).
Значения модификатора:
1) near ptr – прямой переход на метку;
2) far ptr – прямой переход на метку в другом сегменте кода;
3) word ptr – косвенный переход на метку;
4) dword ptr – косвенный переход на метку в другом сегменте кода.
Команда безусловного перехода jmp
jmp [модификатор] адрес_перехода
Процедура или подпрограмма, – это основная функциональная единица декомпозиции некоторой задачи. Процедура представляет собой группу команд.
Условные переходы
Микропроцессор имеет 18 команд условного перехода. Эти команды позволяют проверить: 1) отношение между операндами со знаком («больше – меньше»);
2) отношение между операндами без знака
(«выше – ниже»); 3) состояния арифметических флагов ZF, SF, CF, OF, PF (но не AF).
Команды условного перехода имеют одинаковый синтаксис: jcc меткаперехода
Команда сравнения cmp имеет интересный принцип работы. Он абсолютно такой же, как и у команды вычитания – sub операнд_1, операнд_2.
Команда cmp так же, как и команда sub, выполняет вычитание операндов и устанавливает флаги. Единственное, чего она не делает – это запись результата вычитания на место первого операнда.
Организация циклов
Организовать циклическое выполнение некоторого участка программы можно, к примеру, используя команды условной передачи управления или команду безусловного перехода jmp:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии