Команда and осуществляет логическое (побитовое) умножение первого операнда на
второй. Исходное значение первого операнда (приемника) теряется, замещаясь результатом
умножения. В качестве первого операнда команды and можно указывать регистр (кроме
сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного),
ячейку памяти или непосредственное значение, однако не допускается определять
оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или
словами. Команда воздействует на флаги SF, ZF и
PF.
Правила побитового умножения:
Первый операнд-бит 0101
Второй операнд-бит 0011
Бит результата 0001
Пример 1
mov AX,0FFEh
and AX,5555h ;AX=0554h
Пример 2
; В полях данных:
mem dw 0С003h
;В программном сегменте:
mov AX,700Eh
and AX,mem ;AX=4002h
Допустимо использование 32-битовых операндов и дополнительных режимов
адресации 32-разрядных процессоров.
Пример
mov EDX, 0FA8 8 0 0 4 lh
and EDX,0FF00000Fh ; EDX = FA000001h