- •Атрибуты размеров операнда и адреса, а также формат команды в процессорах семейства х86
- •1. Атрибуты размеров операнда и адреса.
- •2. Формат и кодирование команды.
- •Микропроцессоров семейства x86
- •I. Команды пересылок данных
- •II. Команды обработки данных
- •2. Команды логических операций
- •3. Команды сдвиговых операций
- •Команды битовых операций
- •IV. Команды операций со стеком
- •V. Команды управления программой
- •VI. Команды управления процессором
- •VII. Команды, используемые в системном программном обеспечении.
2. Команды логических операций
КОП |
Команда |
Действие команды |
комментарии |
Логическое сложение (дизъюнкция) |
0CF,OF; AF-не определен; ZF,SF,PF-устанав- ливаются по результату |
||
0C ib |
OR AL,imm8 |
AL \/ imm8 → AL |
|
0D iw(id) |
OR AX(EAX),imm16(32) |
AX(EAX) \/ imm16(32) AX(EAX) |
|
80 /1 ib |
OR r/m8,imm8 |
r/m8 \/ imm8 r/m8 |
|
81 /1 iw(id) |
OR r/m16(32),imm16(32) |
r/m16(32) \/ imm16(32) r/m16(32) |
|
83 /1 ib |
OR r/m16(32),imm8 |
r/m16(32) \/ simm8 r/m16(32) |
|
08 /r |
OR r/m8,r8 |
r/m8 \/ r8 r/m8 |
|
09 /r |
OR r/m16(32),r16(32) |
r/m16(32) \/ r16(32) r/m16(32) |
|
0A /r |
OR r8,r/m8 |
r8 \/ r/m8 r8 |
|
0B /r |
OR r16(32),r/m16(32) |
r16(32) \/ r/m16(32) |
|
Логическое умножение (конъюнкция) |
0CF,OF; AF-не определен; ZF,SF,PF-устанав- ливаются по результату |
||
24 ib |
AND AL,imm8 |
AL & imm8AL |
|
25 iw(id) |
AND AX(EAX),imm16(32) |
AX(EAX) & imm16(32) AX(EAX) |
|
80 /4 ib |
AND r/m8,imm8 |
r/m8 & imm8 r/m8 |
|
81 /4 ib(id) |
AND r/m16(32),imm16(32) |
r/m16(32) & imm16(32) r/m16(32) |
|
83 /4 ib |
AND r/m16(32),imm8 |
r/m16(32) & simm8 r/m16(32) |
|
20 /r |
AND r/m8,r8 |
r/m8 & r8 r/m8 |
|
21 /r |
AND r/m16(32),r16(32) |
r/m16(32) & r16(32) r/m16(32) |
|
22 /r |
AND r8,r/m8 |
r8 & r/m8 r8 |
|
23 /r |
AND r16(32),r/m16(32) |
r16(32) & r/m16(32) r16(32) |
|
Операция неравнозначности (сумма по MOD2) |
|||
34 ib |
XOR AL,imm8 |
AL imm8 AL |
0CF,OF; AF-не определен; ZF,SF,PF-устанав- ливаются по результату |
35 iw(id) |
XOR AX(EAX),imm16(32) |
AX(EAX) imm16(32) AX(EAX) |
|
80 /6 ib |
XOR r/m8,imm8 |
r/m8 imm8 r/m8 |
|
81 /6 iw(id) |
XOR r/m16(32),imm16(32) |
r/m16(32) imm16(32) r/m16(32) |
|
83 /6 ib |
XOR r/m16(32),imm8 |
r/m16(32) simm8 r/m16(32) |
|
30 /r |
XOR r/m8,r8 |
r/m8 r8 r/m8 |
|
31 /r |
XORr/m16(32),r16(32) |
r/m16(32) r16(32) r/m16(32) |
|
32 /r |
XOR r8,r/m8 |
r8 r/m8 r8 |
|
33 /r |
XOR r16(32),r/m16(32) |
r16(32) r/m16(32) r16(32) |
|
Операция отрицания (инверсия) |
|||
F6 /2 |
NOT r/m8 |
|
Флаги не модифицируются |
F7 /2 |
NOT r/m16(32) |
|
|
Операции тестирования |
|||
A8 ib |
TEST AL,imm8 |
AL & imm8 |
0CF,OF; AF-не определен; ZF,SF,PF-устанав- ливаются по результату |
A9 iw(id) |
TEST AX(EAX),imm16(32) |
AX(EAX) & imm16(32) |
|
F6 /0 ib |
TEST r/m8,imm8 |
r/m8 & imm8 |
|
F7 /0 ib(id) |
TEST r/m16(32),imm16(32) |
r/m16(32) & imm16(32) |
|
84 /r |
TEST r/m8,r8 |
r/m8 & r8 |
|
85 /r |
TEST r/m16(32),r16(32) |
r/m16(32) & r16(32) |
|
Операции сравнения |
|||
3С ib |
CMP AL,imm8 |
AL- imm8 |
0CF,OF; AF-не определен; ZF,SF,PF-устанав- ливаются по результату |
3D iw(id) |
CMP AX(EAX),imm16(32) |
AX(EAX) - imm16(32) |
|
80 /7 ib |
CMP r/m8,imm8 |
r/m8 - imm8 |
|
81 /7 iw(id) |
CMP r/m16(32),imm16(32) |
r/m16(32) - imm16(32) |
|
83 /7 ib |
CMP r/m16(32),imm16(32) |
r/m16(32) - simm16(32) |
|
38 /r |
CMP r/m8,r8 |
r/m8 - r8 |
|
39 /r |
CMP r/m16(32),r16(32) |
r/m16(32) - r16(32) |
|
3A /r |
CMP r8,r/m8 |
r8 - r/m8 |
|
3B /r |
CMP r16(32),r/m16(32) |
r16(32) - r/m16(32) |
|
0F A6 /r |
CMPXCHG r/m8,r8 |
Если AL=r/m8 то r8 r/m8, иначе r/m8 AL
|
|
0F A7 /r |
CMPXCHG r/m16(32),r16(32) |
Если AX(EAX) = r/m16(32) то r16(32) r/m16(32), иначе r/m16(32)AX(EAX) |
( i486) |
0F C7 m64 |
CMPXCHG8B r/m64 |
Если EDX:EAX = r/m64 то ECX:EBX r/m64 иначе r/m64 EDX:EAX. |
|
Контроль нахождения индекса массива в заданных границах |
|||
62 /r |
BOUND r16(32),m16(32) & 16(32) |
Если r16(32) выходит за границы m16(32)&16(32), то - прерывание 5 |
Флаги не модифицируются |
