Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процессор х86.docx
Скачиваний:
21
Добавлен:
23.04.2019
Размер:
725.45 Кб
Скачать
  1. Процессор х86: поразрядные логические инструкции, использование масок.

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

Логические операции осуществляют поразрядное логическое сложение, умножение, сложение по модулю 2, а также поразрядную инверсию для одно-, двух- и четырехбайтовых операндов. И имеют мнемокоды or, and, xor и not соответственно. Операции логическое сложение, умножение, сложение по модулю 2 - двухоперандные, а операция инверсии – однооперандная. Данные операции необходимы в первую очередь не для выполнения операций булевой алгебры, а для работы с регистрами состояния и управления периферийных устройств. В процессе обмена данными с периферией приходится постоянно опрашивать регистры состояния и проверять состояние отдельных битов, указывающих на готовность к приему или подтверждение приема, а также устанавливать или сбрасывать отдельные биты в регистре управления, например для запроса на передачу и сопровождения данных. При этом важно проверить состояние строго определенного бита, независимо от состояния других, а также установить или сбросить строго определенный бит, не изменяя состояние других битов. Для этих целей совместно с логическими операциями используются маски. Маска – это константа, позволяющая работать только с заданными битами. Остальные биты при этом невидимы, т.е. «замаскированы».

Логические операции

 Команда:

AND приемник, источник

 Назначение:

Логическое И

 Процессор:

8086

Команда выполняет побитовое «логическое И» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, только если соответствующие биты обоих операндов были равны 1, и равен 0 в остальных случаях. Наиболее часто AND применяют для выборочного обнуления отдельных бит, например, команда

and al,00001111b

обнулит старшие четыре бита регистра AL, сохранив неизменными четыре младших.

Флаги OF и CF обнуляются, SF, ZF и PF устанавливаются в соответствии с результатом, AF не определен.

 Команда:

OR приемник, источник

 Назначение:

Логическое ИЛИ

 Процессор:

8086

Выполняет побитовое «логическое ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 0, только если соответствующие биты обоих операндов были равны 0, и равен 1 в остальных случаях. Команду OR чаще всего используют для выборочной установки отдельных бит, например, команда

or al,00001111b

приведет к тому, что младшие четыре бита регистра AL будут установлены в 1. Устанавливает строго определенные биты, не затрагивая другие.

При выполнении команды OR флаги OF и CF обнуляются, SF, ZF и PF устанавливаются в соответствии с результатом, AF не определен.

 Команда:

XOR приемник, источник

 Назначение:

Логическое исключающее ИЛИ

 Процессор:

8086

Выполняет побитовое «логическое исключающее ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, если соответствующие биты операндов различны, и нулю, если одинаковы. XOR используется для самых разных операций, например:

xor ах,ах ; обнуление регистра АХ

или

xor ах,bх

xor bх,ах

xor ах,bх ; меняет местами содержимое АХ и ВХ

Оба этих примера могут выполняться быстрее, чем соответствующие очевидные команды

mov ax,0

или

xchg ax,bx

 Команда:

NOT приемник

 Назначение:

Поразрядная Инверсия

 Процессор:

8086

Каждый бит приемника (регистр или переменная), равный нулю, устанавливается в 1, и каждый бит, равный 1, сбрасывается в 0. Флаги не затрагиваются. Необходим для работы с масками, а не для вычисления истинности.

 Команда:

TEST приемник, источник

 Назначение:

Логическое сравнение

 Процессор:

8086

Вычисляет результат действия побитового «логического И» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и устанавливает флаги SF, ZF и PF в соответствии с полученным результатом, не сохраняя результат (флаги OF и CF обнуляются, значение AF не определено). TEST, так же как и СМР, используется в основном в сочетании с командами условного перехода (Jcc), условной пересылки данных (CMOVcc) и условной установки байт (SETcc).