- •Атрибуты размеров операнда и адреса, а также формат команды в процессорах семейства х86
- •1. Атрибуты размеров операнда и адреса.
- •2. Формат и кодирование команды.
- •Микропроцессоров семейства x86
- •I. Команды пересылок данных
- •II. Команды обработки данных
- •2. Команды логических операций
- •3. Команды сдвиговых операций
- •Команды битовых операций
- •IV. Команды операций со стеком
- •V. Команды управления программой
- •VI. Команды управления процессором
- •VII. Команды, используемые в системном программном обеспечении.
II. Команды обработки данных
1. Команды арифметических операций
КОП |
Команда |
Действие команды |
Комментарии |
|
Операции сложения |
imm8 - знакорас- ширяется до 16(32) бит |
|||
04 ib |
ADD AL,imm8 |
AL+imm8 AL |
||
05 iw(id) |
ADD AX(EAX),imm16(32) |
AX(EAX)+imm16(32) AX(EAX) |
||
80 /0 ib |
ADD r/m8,imm8 |
r/m8+imm8 r/m8 |
||
81 /0 iw(id) |
ADD r/m16(32),imm16(32) |
r/m16(32)+imm16(32)→ r/m16(32) |
||
83 /0 ib |
ADD r/m16(32),imm8 |
r/m16(32)+imm8 r/m16(32) |
||
00 /r |
ADD r/m8,r8 |
r8+r/m8 r/m8 |
||
01 /r |
ADD r/m16(32),r16(32) |
r16(32)+r/m16(32) r/m16(32) |
||
02 /r |
ADD r8,r/m8 |
r8+r/m8 r8 |
||
03 /r |
ADD r16(32),r/m16(32) |
r16(32)+r/m16(32) → r16(32) |
||
Сложение с переносом |
imm8-знакорасши- ряется до 16(32)бит |
|||
14 ib |
ADC AL,imm8 |
AL+imm8+CF AL |
||
15 iw(id) |
ADC AX(EAX),imm16(32) |
AX(EAX)+imm16(32)+CF AX(EAX) |
||
80 /2 ib |
ADC r/m8,imm8 |
r/m8+imm8+CF r/m8 |
||
81 /2 iw(id) |
ADC r/m16(32),imm16(32) |
r/m16(32)+imm16(32)+CF r/m16(32) |
||
83 /2 ib |
ADC r/m16(32),imm8 |
r/m16(32)+imm8+CF r/m16(32) |
||
10 /r |
ADC r/m8,r8 |
r/m8+r8+CF r/m8 |
||
11 /r |
ADC r/m16(32),r16(32) |
r/m16(32)+r16(32)+CF r/m16(32) |
||
12 /r |
ADC r8,r/m8 |
r8+r/m8+CF r8 |
||
13 /r |
ADC r16(32),r/m16(32) |
r16(32)+r/m16(32)+CF r16(32) |
||
Операции вычитания |
imm8-знакорас- ширяется до 16(32) бит |
|||
2C ib |
SUB AL,imm8 |
AL- imm8AL |
||
2D iw(id) |
SUB AX(EAX),imm16(32) |
AX(EAX) - imm16(32) AX(EAX) |
||
80 /5 ib |
SUB r/m8,imm8 |
r/m8-imm8r/m8 |
||
81 /5 iw(id) |
SUB r/m16(32),imm16(32) |
r/m16(32)-imm16(32) r/m16(32) |
||
83 /5 ib |
SUB r/m16(32),imm8 |
r/m16(32)-imm8 r/m16(32) |
||
28 /r |
SUB r/m8,r8 |
r/m8-r8 r/m8 |
|
|
29 /r |
SUB r/m16(32),r16(32) |
r/m16(32)-r16(32) r/m16(32) |
||
2A /r |
SUBr8,r/m8 |
r8-r/m8 r8 |
||
2B /r |
SUB r16(32),r/m16(32) |
r16(32)-r/m16(32) →r16(32) |
||
Вычитание с заемом |
imm-знакорасши- ряется до 16(32) бит |
|||
1С ib |
SBB AL,imm8 |
AL-imm8-CF AL |
||
1D iw(id) |
SBB AX(EAX),imm16(32) |
AX(EAX)-imm16(32) - - CF AX(EAX) |
||
80 /3 ib |
SBB r/m8,imm8 |
r/m8-imm8-CF r/m8 |
||
81 /3 iw(id) |
SBB r/m16(32),imm16(32) |
r/m16(32)-imm16(32)-CF r/m16(32) |
||
83 /3 ib |
SBB r/m16(32),imm8 |
r/m16(32)-imm8-CF r/m16(32) |
||
18 /r |
SBB r/m8,r8 |
r/m8-r8-CF r/m8 |
||
19 /r |
SBB r/m16(32),r16(32) |
r/m16(32)-r16(32)-CF r/m16(32) |
||
1A /r |
SBB r8,r/m8 |
r8-r/m8-CF r8 |
||
1B /r |
SBB r16(32),r/m16(32) |
r16(32)-r/m16(32)-CF r16(32) |
||
Операции инкремента и декремента |
|
|||
FE /0 |
INC r/m8 |
r/m8+1 r/m8 |
||
FF /0 |
INC r/m16(32) |
r/m16(32)+1 r/m16(32) |
||
40 +rw(rd) |
INC r16(32) |
r16(32)+1 r16(32) |
||
FE /1 |
DEC r/m8 |
r/m8-1 r/m8 |
||
FF /1 |
DEC r/m16(32) |
r/m16(32)-1 r/m16(32) |
||
48 +rw(rd) |
DEC r16(32) |
r16(32)-1 r16(32) |
||
Получение дополнительного кода числа (изменение знака числа) |
|
|||
F6 /3 |
NEG r/m8 |
- r/m8 r/m8 |
||
F7 /3 |
NEG r/m16(32) |
- r/m16(32) r/m16(32) |
||
Преобразование длин слов |
Флаги не опреде- лены |
|||
98 |
CBW |
sAL AX |
||
98 |
CWDE |
sAX EAX |
||
99 |
CWD |
sAX DX:AX |
||
99 |
CDQ |
sEAX EDX:EAX |
||
Умножение беззнаковое |
Флаги OF,CF=0 При AH,DX,EDX=0; иначе равны 1 |
|||
F6 /4 |
MUL AL,r/m8 |
AL×r/m8AX |
||
F7 /4 |
MUL AX(EAX),r/m16(32) |
AX(EAX)×r/m16(32) DX:AX(EDX:EAX) |
||
Умножение знаковое |
|
|||
F6 /5 |
IMUL r/m8 |
AL×r/mAX |
При знаковом умножении множитель предваритель- но знакорасши- ряется до размера множимого. Флаги OF,CF=0 при AH,DX,EDX=0, иначе OF,CF=1. Флаги SF,ZF,PF, AF не определены |
|
F7 /5 |
IMUL r/m16(32) |
AX(EAX)×r/m16(32) DX:AX(EDX:EAX) |
||
0F AF /r |
IMUL r16(32),r/m16(32) |
r16(32)×r/m16(32) →r16(32) |
||
6B /r ib |
IMUL r16(32),r/m16(32),imm8 |
r/m16(32)×imm8 r16(32) |
||
6B /r ib |
IMUL r16(32),imm8 |
r16(32)×imm8 r16(32) |
||
69 /r iw(id) |
IMUL r16(32),r/m16(32), imm16(32) |
r/m16(32)×imm16(32) r16(32) |
||
69 /r iw(id) |
IMUL r16(32),imm16(32) |
r16(32)×imm16(32) r16(32) |
||
|
|
|
||
Деление беззнаковое |
Флаги не определены |
|||
F6 /6 |
DIV AL,r/m8 |
AX(r/m8) AL; AX MOD (r/m8) AH |
||
F7 /6 |
DIV AX,r/m16 |
DX:AX(r/m16) AX; DX:AX MOD (r/m16) DX |
||
F7 /6 |
DIV EAX,r/m32 |
EDX:EAX(r/m32) EAX; EDX:EAX MOD (r/m32) EDX |
||
Деление знаковое |
Флаги не определены |
|||
F6 /7 |
IDIV AL,r/m8 |
AX(r/m8) AL; AX MOD (r/m8) AH. |
||
F7 /7 |
IDIV AX,r/m16 |
DX:AX/(r/m16) AX; DX:AX MOD(r/m16)→ DX |
||
F7 /7 |
IDIV EAX,r/m32 |
EDX:EAX/(r/m32) EAX; EDX:EAX MOD(r/m32) EDX. |
||
Коррекция результатов арифметических операций |
||||
27 |
DAA |
Десятичная коррекция сложения в регистре AL. |
Модифицируются флаги: SF,ZF,AF,PF,CF |
|
2F |
DAS |
Десятичная коррекция вычитания в регистре AL |
||
37 |
AAA |
ASCII- коррекция после cложения в регистре AL |
Модифицируются флаги AF и CF |
|
3A |
AAS |
ASCII-коррекция после вычитания в регистре AL |
||
D4 0A |
AAM |
ASCII-коррекция после умножения |
Модифицируются флаги SF,ZF,PF |
|
В5 0A |
AAD |
ASCII-коррекция перед делением |
||
