logo

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

AND

Логическое И

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

0

     

*

*

?

*

0

 

Код

Команда

Описание

Проц.

Пример

20 /r

AND r/m8,r8

r/m8 AND r8

8086

and [bx],ah

21 /r

AND r/m16,r16

r/m16 AND r16

8086

and cx,di

21 /r

AND r/m32,r32

r/m32 AND r32

Intel386

and memory,ecx

22 /r

AND r8,r/m8

r8 AND r/m8

8086

and ch,sum

23 /r

AND r16,r/m16

r16 AND r/m16

8086

and di,[si]

23 /r

AND r32,r/m32

r32 AND r/m32

Intel386

and ecx,raznost

24 ib

AND AL,imm8

АL AND imm8

8086

and al,4

25 iw

AND AX,imm16

AX AND imm16

8086

and ax,03FDh

25 id

AND EAX,imm32

EAX AND imm32

Intel386

and eax,23456789h

80 /4 ib

AND r/m8,imm8

r/m8 AND imm8

8086

and byte ptr [bx],5

81 /4 iw

AND r/m16,imm16

r/m16 AND imm16

8086

and dx,0DBBh

81 /4 id

AND r/m32,imm32

r/m32 AND imm32

Intel386

and ebx,0CAAAAh

83 /4 ib

AND r/m16,imm8

r/m16 AND imm8 (знакорасшир.)

8086

and cx,0ABh

83 /4 ib

AND r/m32,imm8

r/m32 AND imm8 (знакорасшир.)

Intel386

and edx,0Ah

Описание:

Команда AND (Logical AND) относится к группе логических команд (Logical Instructions), и точнее — к подгруппе команд логических (булевых) операций (Boolean Operation Instructions) и вычисляет логическое "И" двух операндов (DEST и SRC). Первый операнд (операнд-назначение, DEST) может быть переменной в регистре или в памяти (r8, r16, r32, r/m8, r/m16, r/m32). Второй операнд (операнд-источник, SRC) — непосредственным значением (imm8, imm16, imm32), переменной в регистре или в памяти. При этом оба операнда одновременно не могут быть переменными в памяти. 

Результат команды AND помещается на место первого операнда (DEST). Каждый бит результата устанавливается в 1, в том случае, если соответствующие биты операндов установлены в 1, в противном случае — в 0. Флаги EFLAGS.SF, EFLAGS.ZF и EFLAGS.PF устанавливаются в соответствии с полученным результатом. Флаги EFLAGS.OF и EFLAGS.CF сбрасываются.

Операция:

DEST = DEST AND SRC;

CF = 0;

OF = 0;

Особые ситуации защищенного режима:

#GP(0), если операнд-назначение (DEST) находится в памяти в сегменте, запрещенном для записи.
#GP(0), если при обращении к операнду в памяти в сегменте DS, ES, FS или GS используется нулевой селектор.
#GP(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в стековом сегменте SS.

Intel386 … :
#PF(Код ошибки) при страничной ошибке.
#UD при использовании префикса LOCK, если первый операнд команды (DEST) не является значением в памяти.

Intel486 … :
#AC(0) при невыровненной ссылке в память, если активирован контроль выравнивания (CR0.AM = 1, EFLAGS.AC = 1, CPL = 3).

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда в памяти находится вне допустимого для реального режима пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS, если любая часть операнда в памяти выходит за допустимую для реального режима верхнюю границу стекового сегмента SS.

Intel386 … :
#UD при использовании префикса LOCK, если первый операнд команды (DEST) не является значением в памяти.

Особые ситуации режима V86:

#GP(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в стековом сегменте SS.

Intel386 … :
#PF(Код ошибки) при страничной ошибке.
#UD при использовании префикса LOCK, если первый операнд команды (DEST) не является значением в памяти.

Intel486 … :
#AC(0) при невыровненной ссылке в память, если активирован контроль выравнивания (CR0.AM = 1, EFLAGS.AC = 1, CPL = 3).

Замечание:

К группе логических команд относятся команды AND, NOT, OR, XOR, SAL, SAR, SHL, SHR, ROL, ROR, RCL, RCR, CWD, CBW, NOP. Ранее к данной группе также было принято относить и команду NEG, но со временем ее стали включать в группу команд целочисленной арифметики.

В свою очередь, сами названные логические команды делятся на следующие подгруппы:

  • команды логических (булевых) операций (AND, NOT, OR, XOR);
  • команды сдвига и циклического сдвига (SAL, SAR, SHL, SHR, ROL, ROR, RCL, RCR);
  • команды преобразования типа (CWD, CBW);
  • команда "Нет операции" (NOP).

Входит в группу команд: Базовая система команд CPU




Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники