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


Турбо Ассемблер поддерживает полный набор инструкций для вы-полнения логических операций, включая инструкции AND (И), OR (ИЛИ), XOR (исключающее ИЛИ) и NOT (НЕ). Эти инструкции могут оказаться очень полезными при работе с отдельными битами слова или байта, а также для выполнения операций булевой алгебры.

Результаты выполнения логических операций показаны в Таблице 5.1. Логическая инструкция выполняет поразрядные операции над би-тами исходных операндов. Например, инструкция:

adn ax,dx

выполняет логическую операцию AND с битом 0 регистра AX и битом 0 регистра DX, затем ту же операцию с битами 1, 2 и т.д. до бита 15.

Выполнение логических инструкций процессора 8086 ADN, OR и XOR

Таблица 5.1

| Исходный бит A | Исходный бит B | A AND B | A OR B | A XOR B |

|—————————————————————|

| 0 | 0 | 0 | 0 | 0 |

| 0 | 1 | 0 | 1 | 1 |

| 1 | 0 | 0 | 1 | 1 |

| 1 | 1 | 1 | 1 | 0 |

——————————————————————

Инструкция AND комбинирует два операнда в соответствии с правилами, показанными в Таблице 5.1, устанавливая каждый бит ре-зультата (операнда-приемника) в 1 только в том случае, если оба соответствующих бита операнда-источника равны 1. Инструкция AND позволяет вам выделить отдельный бит или принудительно установить его в значение 0. Например, инструкции:

mov dx,3dah

in al,dx

and al,1

выделяет бит 0 байта состояния цветного графического адаптера (CGA). Эти инструкции оставляют регистр AL установленным в значе-ние 1, если видеопамять адаптера CGA можно изменять, не вызывая помех на экране («снег»), и устанавливают его в нулевое значение в противном случае.

Инструкция OR также комбинирует два операнда в соответствии с правилами, приведенными в Таблице 5.1, устанавливая каждый бит операнда-приемника в значение 1, если любой из соответствующих бит операнда-источника равен 1. Инструкция OR позволяет вам при-нудительно установить отдельные биты (или бит) в значение 1. Нап-ример, инструкции:

mov ax,40h

mov ds,ax

mov bx,10h

or WORD PTR [bx],0030h

устанавливают биты 5 и 4 слова флагов аппаратуры базовой системы ввода-вывода BIOS в значение 1. При этом BIOS будет поддерживать монохромный дисплейный адаптер.

Инструкция XOR также комбинирует два операнда в соответствии с правилами, приведенными в Таблице 5.1, устанавливая каждый бит операнда-приемника в значение 1, только в том случае, один соот-ветствующих бит операнда-источника равен 0, и в значение 1 в про-тивном случае. Инструкция XOR позволяет вам «переключать» значе-ния отдельных бит в байте. Например, инструкции:

mov al,01010101b

mov al,11110000b

устанавливают регистр AL в значение 10100101b или A5h. Когда для регистра AL выполняется операция XOR со значением 11110000b (0F0h), биты со значением 1 в 0F0h переключают значения соот-ветствующих бит в регистре AL, а биты со значением 0 оставляют соответствующие биты AL неизмененными.

Кстати, инструкция XOR дает удобный способ обнуления содер-жимого регистра. Например, следующая инструкция устанавливает со-держимое регистра AX в значение 0:

xor ax,ax

Наконец, инструкция NOT просто изменяет значение каждого бита операнда на противоположное (как если бы над исходным опе-рандом была выполнена операция XOR со значением 0FFh). Например:

mov bl,10110001b

not bl ; переключить BL в 01001110b

xor bl,0ffh ; переключить BL обратно в

; значение 10110001b

Загрузка...