Логическое побитовое И
_____________________AND AL, imm
8 - AL AND imm
8.
_____________________AND AX, imm
16 - AX AND imm
16.
_____________________AND reg/mem
8, imm
8 - reg/mem
8 AND imm
8.
_____________________AND reg/mem16, imm16 - reg/mem16 AND imm16.
_____________________AND reg/mem16, imm8 - reg/mem16 AND imm8 (знаково-расширенный).
_____________________AND reg/mem
8, reg
8 - reg/mem
8 AND reg
8.
_____________________AND reg/mem
16, reg
16 - reg/mem
16 AND reg
16.
_____________________AND reg
8, reg/mem
8 - reg
8 AND reg/mem
8.
_____________________AND reg
16, reg/mem
16 - reg
16 AND reg/mem
16.
Выполняет побитовую операцию И над целевым (первым) и исходным (вторым) операндами и сохраняет результат в расположении целевого операнда. Исходный операнд может быть непосредственным, регистром или ячейкой памяти; конечный операнд может быть регистром или ячейкой памяти. (Однако два операнда памяти не могут быть использованы в одной инструкции.) Каждому биту результата присваивается значение 1, если оба соответствующих бита первого и второго операндов равны 1; в противном случае ему присваивается значение 0.
Эта инструкция может быть использована с префиксом
lock, чтобы позволить ей выполняться атомарно.
Флаги OF и CF снимаются; флаги SF, ZF и PF устанавливаются в соответствии с результатом. Состояние флага AF не определено.
В качестве примера рассмотрим случай, когда регистр
al содержит
4510, регистр
bl содержит
4010 После выполнения инструкции
and al, bl, мы включаем определённые биты. Отсчёт начинается с 0, с права.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- code segment public ___________; Начало сегмента кода
- ____assume cs:code
- ____main proc _________________; Начало процедуры main
- ________mov_____al, 00101101b _; Копируем значение 45 в регистр al
- ________mov_____bl, 00101000b__; Копируем значение 40 в регистр bl
- ________and_____al, bl ________; Выключаем все биты кроме бита 3 и 5
- ________mov_____ax, 4C00h______; Копируем значение функции завершения процесса в ah а значение в al
- ________int_____21h ___________; Вызываем прерывание DOS
- ____main endp _________________; Конец процедуры main
- code ends _____________________; Конец сегмента кода
- end main ______________________; Конец файла. Точкой входа указывается процедура main