指令名称 |
指令形式 |
机器码 |
标志位(设置/测试) |
说 明 |
应用举例 |
AAA |
AAA |
37 |
设置 AF CF |
加法后的ASCII码调整AL |
AAA |
AAD |
AAD |
D5 0A 或 D5 ib |
设置 SF ZF PF |
除法前的ASCII码调整AX |
AAD |
AAM |
AAM |
D4 0A 或 D4 ib |
设置 PF SF ZF |
乘法后的ASCII码调整AX |
AAM |
AAS |
AAS |
3F |
设置 AF CF |
减法后的ASCII码调整AL |
AAS |
ADC |
ADC AL, imm8 |
14 ib |
设置 AF CF OF SF PF ZF |
带进位加法 |
ADC AL, 1F |
ADC AX, imm16 |
15 iw |
ADC AX, 4F80 |
ADC EAX, imm32 |
15 id |
ADC EAX, 00004F80 |
ADC r/m8, imm8 |
80 /2 ib |
ADC BYTE PTR [006387EA], 39 |
ADC r/m16,imm16 |
81 /2 iw |
ADC WORD PTR [006387EA], 1039 |
ADC r/m32,imm32 |
81 /2 id |
ADC DWORD PTR [006387EA], 00001039 |
ADC r/m16,imm8 |
83 /2 ib |
ADC WORD PTR [006387EA], 39 |
ADC r/m32,imm8 |
83 /2 ib |
ADC DWORD PTR [006387EA], 39 |
ADC r/m8,r8 |
10 /r |
ADC [006387EA], AL |
ADC r/m16,r16 |
11 /r |
ADC [006387EA], AX |
ADC r/m32,r32 |
11 / r |
ADC [006387EA], EAX |
ADC r8,r/m8 |
12 /r |
ADC AL, [006387EA] |
ADC r16,r/m16 |
13 /r |
ADC AX, [006387EA] |
ADC r32,r/m32 |
13 /r |
ADC EAX, [006387EA] |
ADD |
ADD AL, imm8 |
04 ib |
设置 AF CF OF SF PF ZF |
加法 |
ADD AL, 1F |
ADD AX, imm16 |
05 iw |
ADD AX, 4F80 |
ADD EAX, imm32 |
05 id |
ADD EAX, 00004F80 |
ADD r/m8, imm8 |
80 /0 ib |
ADD BYTE PTR [006387EA], 39 |
ADD r/m16,imm16 |
81 /0 iw |
ADD WORD PTR [006387EA], 1039 |
ADD r/m32,imm32 |
81 /0 id |
ADD DWORD PTR [006387EA], 00001039 |
ADD r/m16,imm8 |
83 /0 ib |
ADD WORD PTR [006387EA], 39 |
ADD r/m32,imm8 |
83 /0 ib |
ADD DWORD PTR [006387EA], 39 |
ADD r/m8,r8 |
00 /r |
ADD [006387EA], AL |
ADD r/m16,r16 |
01 /r |
ADD [006387EA], AX |
ADD r/m32,r32 |
01 / r |
ADD [006387EA], EAX |
ADD r8,r/m8 |
02 /r |
ADD AL, [006387EA] |
ADD r16,r/m16 |
03 /r |
ADD AX, [006387EA] |
ADD r32,r/m32 |
03 /r |
ADD EAX, [006387EA] |
AND |
AND AL, imm8 |
24 ib |
设置 CF OF PF SF ZF |
逻辑与 |
AND AL, 1F |
AND AX, imm16 |
25 iw |
AND AX, 4F80 |
AND EAX, imm32 |
25 id |
AND EAX, 00004F80 |
AND r/m8, imm8 |
80 /4 ib |
AND BYTE PTR [006387EA], 39 |
AND r/m16,imm16 |
81 /4 iw |
AND WORD PTR [006387EA], 1039 |
AND r/m32,imm32 |
81 /4 id |
AND DWORD PTR [006387EA], 00001039 |
AND r/m16,imm8 |
83 /4 ib |
AND WORD PTR [006387EA], 39 |
AND r/m32,imm8 |
83 /4 ib |
AND DWORD PTR [006387EA], 39 |
AND r/m8,r8 |
20 /r |
AND BYTE PTR [006387EA], AL |
AND r/m16,r16 |
21 /r |
AND WORD PTR [006387EA], AX |
AND r/m32,r32 |
21 /r |
AND DWORD PTR [006387EA], EAX |
AND r8,r/m8 |
22 /r |
AND AL, [006387EA] |
AND r16,r/m16 |
23 /r |
AND AX, [006387EA] |
AND r32,r/m32 |
23 /r |
AND EAX, [006387EA] |
ARPL |
ARPL r/m16,r16 |
63 /r |
设置 ZF |
调整请求特权级 (286+ PM) |
ARPL AX, BX ;如果AX的RPL小于BX的RPL,则改为BX的RPL,且ZF置1,否则ZF清0 |
BOUND |
BOUND r16,m16&16 |
62 /r |
不影响标志位 |
越界检查 (80188+) |
BOUND AX, [006387EA] ;如果AX不在[006387EA]及[006387EA+2]的值中间,则产生异常5 |
BOUND r32,m32&32 |
BOUND EAX, [006387EA] ;如果EAX不在[006387EA]及[006387EA+4]的值中间,则产生异常5 |
BSF |
BSF r16,r/m16 |
0F BC |
设置 ZF |
从低到高扫描目标,查找对应为1的位 (386+) |
BSF AX, BX ;把BX由低到高第一个1的位置送AX,如全0则ZF置1,否则ZF清0 |
BSF r32,r/m32 |
BSF EAX, EBX ;把EBX由低到高第一个1的位置送EAX,如全0则ZF置1,否则ZF清0 |
BSR |
BSR r16,r/m16 |
0F BD |
设置 ZF |
从高到低扫描目标,查找对应为1的位 (386+) |
BSR AX, BX ;把BX由高到低第一个1的位置送AX,如全0则ZF置1,否则ZF清0 |
BSR r32,r/m32 |
BSR EAX, EBX ;把EBX由高到低第一个1的位置送EAX,如全0则ZF置1,否则ZF清0 |
BSWAP |
BSWAP reg32 |
0F C8+rd |
不影响标志位 |
32位寄存器高低字节交换(486+) |
BSWAP EAX |
BT |
BT r/m16,r16 |
0F A3 |
设置 CF |
测试目标的指定位 (386+) |
BT AX, BX ;如果AX中BX指定的位为1,则CF置1,否则CF清0 |
BT r/m32,r32 |
0F A3 |
BT EAX, EBX ;如果EAX中EBX指定的位为1,则CF置1,否则CF清0 |
BT r/m16,imm8 |
0F BA /4 |
BT AX, 01 ;如果AX中01位为1,则CF置1,否则CF清0 |
BT r/m32,imm8 |
0F BA /4 |
BT EAX, 01 ;如果EAX中01位为1,则CF置1,否则CF清0 |
BTC |
BTC r/m16,r16 |
0F BB |
设置 CF |
将目标指定位取反 (386+) |
BTC AX, BX ;将AX中BX指定的位取反,CF存放指定位并取反位 |
BTC r/m32,r32 |
0F BB |
BTC EAX, EBX ;将EAX中EBX指定的位取反,CF存放指定位并取反 |
BTC r/m16,imm8 |
0F BA /7 |
BTC AX, 01 ;将AX中01位取反,CF存放指定位并取反 |
BTC r/m32,imm8 |
0F BA /7 |
BTC EAX, 01 ;将EAX中01位取反,CF存放指定位并取反 |
BTR |
BTR r/m16,r16 |
0F B3 |
设置 CF |
将目标指定位清0 (386+) |
BTR AX, BX ;将AX中BX指定的位清0,CF存放指定位并清0 |
BTR r/m32,r32 |
0F B3 |
BTR EAX, EBX ;将EAX中EBX指定的位清0,CF存放指定位并清0 |
BTR r/m16,imm8 |
0F BA /6 |
BTR AX, 01 ;将AX中01位清0,CF存放指定位并清0 |
BTR r/m32,imm8 |
0F BA /6 |
BTR EAX, 01 ;将EAX中01位清0,CF存放指定位并清0 |
BTS |
BTS r/m16,r16 |
0F AB |
设置 CF |
将目标指定位置1 (386+) |
BTS AX, BX ;将AX中BX指定的位置1,CF存放指定位并置1 |
BTS r/m32,r32 |
0F AB |
BTS EAX, EBX ;将EAX中EBX指定的位置1,CF存放指定位并置1 |
BTS r/m16,imm8 |
0F BA /5 |
BTS AX, 01 ;将AX中01位置1,CF存放指定位并置1 |
BTS r/m32,imm8 |
0F BA /5 |
BTS EAX, 01 ;将EAX中01位置1,CF存放指定位并置1 |
CALL |
CALL rel16 |
E8 cw |
不影响标志位 |
子程序调用(16位相对寻址) |
|
CALL rel32 |
E8 cd |
子程序调用(32位相对寻址) |
|
CALL r/m16 |
FF /2 |
子程序调用(16位间接寻址) |
|
CALL r/m32 |
FF /2 |
子程序调用(32位间接寻址) |
|
CALL ptr16:16 |
9A cd |
子程序调用(直接绝对寻址) |
|
CALL ptr16:32 |
9A cp |
子程序调用(直接绝对寻址) |
|
CALL m16:16 |
FF /3 |
子程序调用(间接绝对寻址) |
|
CALL m16:32 |
FF /3 |
子程序调用(间接绝对寻址) |
|
CBW |
CBW |
98 |
不影响标志位 |
将AL值带符号扩展到AX |
CBW |
CDQ |
CDQ |
99 |
不影响标志位 |
将EAX值带符号扩展到EDX:EAX |
CDQ |
CLD |
CLD |
FC |
设置 DF |
清除方向位(DF)标志 |
CLD |
CLI |
CLI |
FA |
设置 IF |
清除中断允许位(IF)标志 |
CLD |
CLTS |
CLTS |
0F 06 |
不影响标志位 |
清除任务开关标志(TSF) |
CLTS |
CMC |
CMC |
F5 |
设置 CF |
进位标志取反 |
CMC |
CMOVcc |
CMOVA r16, r/m16 |
0F 47 /r |
高于(CF=0 and ZF=0) |
条件传送指令 |
CMOVA AX, BX |
CMOVA r32, r/m32 |
CMOVA EAX, EBX |
CMOVAE r16, r/m16 |
0F 43 /r |
高于等于(CF=0) |
CMOVAE AX, BX |
CMOVAE r32, r/m32 |
CMOVAE EAX, EBX |
CMOVB r16, r/m16 |
0F 42 /r |
低于(CF=1) |
CMOVB AX, BX |
CMOVB r32, r/m32 |
CMOVB EAX, EBX |
CMOVBE r16, r/m16 |
0F 46 /r |
低于等于(CF=1 or ZF=1) |
CMOVBE AX, BX |
CMOVBE r32, r/m32 |
CMOVBE EAX, EBX |
CMOVC r16, r/m16 |
0F 42 /r |
有进位(CF=1) |
CMOVC AX, BX |
CMOVC r32, r/m32 |
CMOVC EAX, EBX |
CMOVE r16, r/m16 |
0F 44 /r |
等于(ZF=1) |
CMOVE AX, BX |
CMOVE r32, r/m32 |
CMOVE EAX, EBX |
CMOVG r16, r/m16 |
0F 4F /r |
大于(ZF=0 and SF=OF) |
CMOVG AX, BX |
CMOVG r32, r/m32 |
CMOVG EAX, EBX |
CMOVGE r16, r/m16 |
0F 4D /r |
大于等于(SF=OF) |
CMOVGE AX, BX |
CMOVGE r32, r/m32 |
CMOVGE EAX, EBX |
CMOVL r16, r/m16 |
0F 4C /r |
小于(SF<>OF) |
CMOVL AX, BX |
CMOVL r32, r/m32 |
CMOVL EAX, EBX |
CMOVLE r16, r/m16 |
0F 4E /r |
小于等于(ZF=1 or SF<>OF) |
CMOVLE AX, BX |
CMOVLE r32, r/m32 |
CMOVLE EAX, EBX |
CMOVNA r16, r/m16 |
0F 46 /r |
不高于(CF=1 or ZF=1) |
CMOVNA AX, BX |
CMOVNA r32, r/m32 |
CMOVNA EAX, EBX |
CMOVNAE r16, r/m16 |
0F 42 /r |
不高等于(CF=1) |
CMOVNAE AX, BX |
CMOVNAE r32, r/m32 |
CMOVNAE EAX, EBX |
CMOVNB r16, r/m16 |
0F 43 /r |
不低于(CF=0) |
CMOVNB AX, BX |
CMOVNB r32, r/m32 |
CMOVNB EAX, EBX |
CMOVNBE r16, r/m16 |
0F 47 /r |
不低等于(CF=0 and ZF=0) |
CMOVNBE AX, BX |
CMOVNBE r32, r/m32 |
CMOVNBE EAX, EBX |
CMOVNC r16, r/m16 |
0F 43 /r |
无进位(CF=0) |
CMOVNC AX, BX |
CMOVNC r32, r/m32 |
CMOVNC EAX, EBX |
CMOVNE r16, r/m16 |
0F 45 /r |
不等于(ZF=0) |
CMOVNE AX, BX |
CMOVNE r32, r/m32 |
CMOVNE EAX, EBX |
CMOVNG r16, r/m16 |
0F 4E /r |
不大于(ZF=1 or SF<>OF) |
CMOVNG AX, BX |
CMOVNG r32, r/m32 |
CMOVNG EAX, EBX |
CMOVNGE r16, r/m16 |
0F 4C /r |
不大等于(SF<>OF) |
CMOVNGE AX, BX |
CMOVNGE r32, r/m32 |
CMOVNGE EAX, EBX |
CMOVNL r16, r/m16 |
0F 4D /r |
不小于(SF=OF) |
CMOVNL AX, BX |
CMOVNL r32, r/m32 |
CMOVNL EAX, EBX |
CMOVNLE r16, r/m16 |
0F 4F /r |
不小等于(ZF=0 and SF=OF) |
CMOVNLE AX, BX |
CMOVNLE r32, r/m32 |
CMOVNLE EAX, EBX |
CMOVNO r16, r/m16 |
0F 41 /r |
无溢出(OF=0) |
CMOVNO AX, BX |
CMOVNO r32, r/m32 |
CMOVNO EAX, EBX |
CMOVNP r16, r/m16 |
0F 4B /r |
非偶数(PF=0) |
CMOVNP AX, BX |
CMOVNP r32, r/m32 |
CMOVNP EAX, EBX |
CMOVNS r16, r/m16 |
0F 49 /r |
非负数(SF=0) |
CMOVNS AX, BX |
CMOVNS r32, r/m32 |
CMOVNS EAX, EBX |
CMOVNZ r16, r/m16 |
0F 45 /r |
非零(ZF=0) |
CMOVNZ AX, BX |
CMOVNZ r32, r/m32 |
CMOVNZ EAX, EBX |
CMOVO r16, r/m16 |
0F 40 /r |
溢出(OF=1) |
CMOVO AX, BX |
CMOVO r32, r/m32 |
CMOVO EAX, EBX |
CMOVP r16, r/m16 |
0F 4A /r |
偶数(PF=1) |
CMOVP AX, BX |
CMOVP r32, r/m32 |
CMOVP EAX, EBX |
CMOVPE r16, r/m16 |
0F 4A /r |
偶数(PF=1) |
CMOVPE AX, BX |
CMOVPE r32, r/m32 |
CMOVPE EAX, EBX |
CMOVPO r16, r/m16 |
0F 4B /r |
奇数(PF=0) |
CMOVPO AX, BX |
CMOVPO r32, r/m32 |
CMOVPO EAX, EBX |
CMOVS r16, r/m16 |
0F 48 /r |
负数(SF=1) |
CMOVS AX, BX |
CMOVS r32, r/m32 |
CMOVS EAX, EBX |
CMOVZ r16, r/m16 |
0F 44 /r |
为零(ZF=1) |
CMOVZ AX, BX |
CMOVZ r32, r/m32 |
CMOVZ EAX, EBX |
CMP |
CMP AL, imm8 |
3C ib |
设置 AF CF OF PF SF ZF |
比较大小,然后设置标志位 |
CMP AL, 1F |
CMP AX, imm16 |
3D iw |
CMP AX, 4F80 |
CMP EAX, imm32 |
3D id |
CMP EAX, 00004F80 |
CMP r/m8, imm8 |
80 /7 ib |
CMP BYTE PTR [006387EA], 39 |
CMP r/m16,imm16 |
81 /7 iw |
CMP WORD PTR [006387EA], 1039 |
CMP r/m32,imm32 |
81 /7 id |
CMP DWORD PTR [006387EA], 00001039 |
CMP r/m16,imm8 |
83 /7 ib |
CMP WORD PTR [006387EA], 39 |
CMP r/m32,imm8 |
83 /7 ib |
CMP DWORD PTR [006387EA], 39 |
CMP r/m8,r8 |
38 /r |
CMP BYTE PTR [006387EA], AL |
CMP r/m16,r16 |
39 /r |
CMP WORD PTR [006387EA], AX |
CMP r/m32,r32 |
39 / r |
CMP DWORD PTR [006387EA], EAX |
CMP r8,r/m8 |
3A /r |
CMP AL, [006387EA] |
CMP r16,r/m16 |
3B /r |
CMP AX, [006387EA] |
CMP r32,r/m32 |
3B /r |
CMP EAX, [006387EA] |
CMPS |
CMPS m8, m8 |
A6 |
设置 AF CF OF PF SF ZF |
比较字符串,每次比较1个字节 |
CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI |
CMPS m16, m16 |
A7 |
比较字符串,每次比较1个字 |
CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI |
CMPS m32, m32 |
A7 |
比较字符串,每次比较1个双字 |
CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI (386+) |
CMPSB |
A6 |
比较字符串,每次比较1个字节 |
CMPSB ;源串DS:(E)SI,目的串:ES:(E)DI |
CMPSW |
A7 |
比较字符串,每次比较1个字 |
CMPSW ;源串DS:(E)SI,目的串:ES:(E)DI |
CMPSD |
A7 |
比较字符串,每次比较1个双字 |
CMPSD ;源串DS:(E)SI,目的串:ES:(E)DI (386+) |
CMPXCHG |
CMPXCHG r/m8,r8 |
0F B0 /r |
设置 AF CF OF PF SF ZF |
比较交换 (486+) |
CMPXCHG BL,CL ;如果AL与BL相等,则CL送BL且ZF置1;否则BL送CL,且ZF清0 |
CMPXCHG r/m16,r16 |
0F B1 /r |
CMPXCHG BX,CX ;如果AX与BX相等,则CX送BX且ZF置1;否则BX送CX,且ZF清0 |
CMPXCHG r/m32,r32 |
0F B1 /r |
CMPXCHG EBX,ECX ;如果EAX与EBX相等,则ECX送EBX且ZF置1;否则EBX送ECX,且ZF清0 |
CMPXCHG8B |
CMPXCHG8B m64 |
0F C7 /1 m64 |
设置 ZF |
比较交换 (486+) |
CMPXCHG [ESI] ;比较EDX:EAX与64位的目标,如果相等则ECX:EBX送往目标且ZF置1,否则目标送EDX:EAX且ZF清0 |
CPUID |
CPUID |
0F A2 |
不影响标志位 |
CPU标识送EAX、EBX、ECX、EDX |
CPUID |
CWD |
CWD |
99 |
不影响标志位 |
将AX带符号扩展到DX:AX |
CWD |
CWDE |
CWDE |
98 |
不影响标志位 |
将AX带符号扩展到EAX |
CWDE |
DAA |
DAA |
27 |
设置 AF CF PF SF ZF |
加法后的10进制调整AL |
DAA |
DAS |
DAS |
2F |
设置 AF CF PF SF ZF |
减法后的10进制调整AL |
DAS |
DEC |
DEC r/m8 |
FE /1 |
设置 AF OF PF SF ZF |
目标减1 |
DEC BYTE PTR [00458A90] |
DEC r/m16 |
FF /1 |
DEC WORD PTR [00458A90] |
DEC r/m32 |
FF /1 |
DEC DWORD PTR [00458A90] |
DEC r16 |
48 +rw |
DEC AX |
DEC r32 |
48 +rd |
DEC EAX |
DIV |
DIV r/m8 |
F6 /6 |
AF CF OF PF SF ZF 未定义 |
无符号除法 |
DIV BL ;AX除以BL,商在AL中,余数在AH中 |
DIV r/m16 |
F6 /7 |
DIV BX ;DX:AX除以BX,商在AX中,余数在DX中 |
DIV r/m32 |
F6 /7 |
DIV EBX;EDX:EAX除以BX,商在EAX中,余数在EDX中 |
EMMS |
EMMS |
0F 77 |
不影响标志位 |
清空MMX状态 |
EMMS |
ENTER |
ENTER imm16,0 |
C8 iw 00 |
不影响标志位 |
为子程序建立堆栈框架,imm16指定要分配的堆栈大小,另外一个操作数指明子程序的等级 (80188+) |
ENTER 12,0 |
ENTER imm16,1 |
C8 iw 01 |
ENTER 12,1 |
ENTER imm16,imm8 |
C8 iw ib |
DENTER 12,4 |
ESC |
ESC 0 |
D8h xxh |
不影响标志位 |
处理器放弃总线 |
ESC 0 |
ESC 1 |
D9h xxh |
ESC 1 |
ESC 2 |
DAh xxh |
ESC 2 |
ESC 3 |
DBh xxh |
ESC 3 |
ESC 4 |
DCh xxh |
ESC 4 |
ESC 5 |
DDh xxh |
ESC 5 |
ESC 6 |
DEh xxh |
ESC 6 |
ESC 7 |
DFh xxh |
ESC 7 |
F2XM1 |
F2XM1 |
D9 F0 |
设置C1 (C0, C2, C3未定义) |
ST(0)←(2**ST(0) - 1) |
F2XM1 |
FABS |
FABS |
D9 E1 |
设置C1 (C0, C2, C3未定义) |
求绝对值:ST(0)←ABS(ST(0)) |
FABS |
FADD |
FADD m32real |
D8 /0 |
设置C1 (C0, C2, C3未定义) |
实数加法:ST(0)←ST(0)+m32real |
FADD REAL4 PTR [00459AF0] |
FADD m64real |
DC /0 |
实数加法:ST(0)←ST(0)+m64real |
FADD REAL8 PTR [00459AF0] |
FADD ST(0), ST(i) |
D8 C0+i |
实数加法:ST(0)←ST(0)+ST(i) |
FADD ST(0), ST(1) |
FADD ST(i), ST(0) |
DC C0+i |
实数加法:ST(i)←ST(i)+ST(0) |
FADD ST(1), ST(0) |
FADDP |
FADDP ST(i), ST(0) |
DE C0+i |
设置C1 (C0, C2, C3未定义) |
先进行实数加法:ST(i)←ST(i)+ST(0),然后进行一次出栈操作 |
FADDP ST(1), ST(0) |
FADDP |
DE C1 |
先进行实数加法:ST(0)←ST(0)+ST(1),然后进行一次出栈操作 |
FADDP |
FIADD |
FIADD m32int |
DA /0 |
设置C1 (C0, C2, C3未定义) |
加整数:ST(0)←ST(0)+m32int |
FIADD DWORD PTR [00812CD0] |
FIADD m16int |
DE /0 |
加整数:ST(0)←ST(0)+m16int |
FIADD WORD PTR [00812CD0] |
FBLD |
FBLD m80bcd |
DF /4 |
设置C1 (C0, C2, C3未定义) |
将BCD数装入ST(0),然后压栈push ST(0) |
|
FBSTP |
FBSTP m80bcd |
DF /6 |
设置C1 (C0, C2, C3未定义) |
将ST(0)以BCD数保存在m80bcd,然后出栈pop ST(0) |
|
FCHS |
FCHS |
D9 E0 |
设置C1 (C0, C2, C3未定义) |
改变ST(0)的符号位,即求负数 |
FCHS |
FCLEX |
FCLEX |
9B DB E2 |
PE, UE, OE, ZE, DE, IE, ES, SF, B 清0,设置C0 (C1, C2, C3未定义) |
清除浮点异常标志(检查非屏蔽浮点异常) |
FCLEX |
FNCLEX |
FNCLEX |
DB E2 |
PE, UE, OE, ZE, DE, IE, ES, SF, B 清0,设置C0 (C1, C2, C3未定义) |
清除浮点异常标志(不检查非屏蔽浮点异常) |
FNCLEX |
FCMOVcc |
FCMOVB ST(0), ST(i) |
DA C0+i |
小于(CF=1),设置C1 (C0, C2, C3未定义) |
条件浮点传送指令 |
FCMOVB ST(0), ST(1) |
FCMOVE ST(0), ST(i) |
DA C8+i |
等于(ZF=1),设置C1 (C0, C2, C3未定义) |
FCMOVE ST(0), ST(1) |
FCMOVBE ST(0), ST(i) |
DA D0+i |
小于等于(CF=1 or ZF=1),设置C1 (C0, C2, C3未定义) |
FCMOVBE ST(0), ST(1) |
FCMOVU ST(0), ST(i) |
DA D8+i |
unordered(PF=1),设置C1 (C0, C2, C3未定义) |
FCMOVU ST(0), ST(1) |
FCMOVNB ST(0), ST(i) |
DB C0+i |
不小于(CF=0),设置C1 (C0, C2, C3未定义) |
FCMOVNB ST(0), ST(1) |
FCMOVNE ST(0), ST(i) |
DB C8+i |
不等于(ZF=0),设置C1 (C0, C2, C3未定义) |
FCMOVNE ST(0), ST(1) |
FCMOVNBE ST(0), ST(i) |
DB D0+i |
不小于等于(CF=0 and ZF=0),设置C1 (C0, C2, C3未定义) |
FCMOVNBE ST(0), ST(1) |
FCMOVNU ST(0), ST(i) |
DB D8+i |
not unordered(PF=1),设置C1 (C0, C2, C3未定义) |
FCMOVNBE ST(0), ST(1) |
FCOM |
FCOM m32real |
D8 /2 |
设置C1,C0, C2, C3 |
实数比较:ST(0)-m32real,设置标志位 |
FCOM REAL4 PTR [00812CD0] |
FCOM m64real |
DC /2 |
实数比较:ST(0)-m64real,设置标志位 |
FCOM REAL8 PTR [00812CD0] |
FCOM ST(i) |
D8 D0+i |
实数比较:ST(0)-ST(i),设置标志位 |
FCOM ST(2) |
FCOM |
D8 D1 |
实数比较:ST(0)-ST(1),设置标志位 |
FCOM |
FCOMP |
FCOMP m32real |
D8 /3 |
设置C1,C0, C2, C3 |
实数比较:ST(0)-m32real,设置标志位,执行一次出栈操作 |
FCOMP REAL4 PTR [00812CD0] |
FCOMP m64real |
DC /3 |
实数比较:ST(0)-m64real,设置标志位,执行一次出栈操作 |
FCOMP REAL8 PTR [00812CD0] |
FCOMP ST(i) |
D8 D8+i |
实数比较:ST(0)-ST(i),设置标志位,执行一次出栈操作 |
FCOMP ST(2) |
FCOMP |
D8 D9 |
实数比较:ST(0)-ST(1),设置标志位,执行一次出栈操作 |
FCOMP |
FCOMI |
FCOMI ST, ST(i) |
DB F0+i |
设置ZF,PF,CF,C1 |
实数比较:ST(0)-ST(i),设置标志位 |
FCOMI ST, ST(1) |
FCOMIP |
FCOMIP ST, ST(i) |
DF F0+i |
设置ZF,PF,CF,C1 |
实数比较:ST(0)-ST(i),设置标志位,执行一次出栈操作 |
FCOMIP ST, ST(1) |
FUCOMI |
FUCOMI ST, ST(i) |
DB E8+i |
设置ZF,PF,CF,C1 |
实数比较:ST(0)-ST(i),检查ordered值,设置标志位 |
FCOMIP ST, ST(1) |
FUCOMIP |
FUCOMIP ST, ST(i) |
DF E8+i |
设置ZF,PF,CF,C1 |
实数比较:ST(0)-ST(i),检查ordered值,设置标志位,执行一次出栈操作 |
FUCOMIP ST, ST(1) |
FCOS |
FCOS |
D9 FF |
设置C1,C2 |
余弦函数COS,ST(0)←cosine(ST(0)) |
FCOS |
FDECSTP |
FDECSTP |
D9 F6 |
设置C1 (C0, C2, C3未定义) |
将FPU的栈顶指针值减小1 |
FDECSTP |
FDIV |
FDIV m32real |
D8 /6 |
设置C1 (C0, C2, C3未定义) |
实数除法:ST(0)←ST(0)/m32real |
FDIV REAL4 PTR [00459AF0] |
FDIV m64real |
DC /6 |
实数除法:ST(0)←ST(0)/m64real |
FDIV REAL8 PTR [00459AF0] |
FDIV ST(0), ST(i) |
D8 F0+i |
实数除法:ST(0)←ST(0)/ST(i) |
FDIV ST(0), ST(1) |
FDIV ST(i), ST(0) |
DC F8+i |
实数除法:ST(i)←ST(i)/ST(0) |
FDIV ST(1), ST(0) |
FDIVP |
FDIVP ST(i), ST(0) |
DE F8+i |
设置C1 (C0, C2, C3未定义) |
实数除法:ST(i)←ST(i)/ST(0),执行一次出栈操作 |
FDIVP ST(1), ST(0) |
FDIVP |
DE F9 |
实数除法:ST(1)←ST(1)/ST(0),执行一次出栈操作 |
FDIVP |
FIDIV |
FIDIV m32int |
DA /6 |
设置C1 (C0, C2, C3未定义) |
除以整数:ST(0)←ST(0)/m32int |
FIDIV DWORD PTR [00459AF0] |
FIDIV m16int |
DE /6 |
除以整数:ST(0)←ST(0)/m16int |
FIDIV WORD PTR [00459AF0] |
FDIVR |
FDIVR m32real |
D8 /7 |
设置C1 (C0, C2, C3未定义) |
实数除法:ST(0)←m32real/ST(0) |
FDIVR REAL4 PTR [00459AF0] |
FDIVR m64real |
DC /7 |
实数除法:ST(0)←m64real/ST(0) |
FDIVR REAL8 PTR [00459AF0] |
FDIVR ST(0), ST(i) |
D8 F8+i |
实数除法:ST(0)←ST(i)/ST(0) |
FDIVR ST(0), ST(1) |
FDIVR ST(i), ST(0) |
DC F0+i |
实数除法:ST(i)←ST(0)/ST(i) |
FDIVR ST(1), ST(0) |
FDIVRP |
FDIVRP ST(i), ST(0) |
DE F0+i |
设置C1 (C0, C2, C3未定义) |
实数除法:ST(i)←ST(0)/ST(i),执行一次出栈操作 |
FDIVRP ST(1), ST(0) |
FDIVRP |
DE F1 |
实数除法:ST(1)←ST(0)/ST(1),执行一次出栈操作 |
FDIVRP |
FIDIVR |
FIDIVR m32int |
DA /7 |
设置C1 (C0, C2, C3未定义) |
被整数除:ST(0)←m32int/ST(0) |
FIDIVR DWORD PTR [00459AF0] |
FIDIVR m16int |
DE /7 |
被整数除:ST(0)←m16int/ST(0) |
FIDIVR WORD PTR [00459AF0] |
FFREE |
FFREE ST(i) |
DD C0+i |
(C0, C1,C2, C3未定义) |
将与ST(i)相对应的标志位设置为空,即TAG(i)←11B |
FFREE ST(1) |
FICOM |
FICOM m16int |
DE /2 |
设置 C1,C0, C2, C3 |
和整数比较:ST(0)- m16int,设置标志 |
FICOM WORD PTR [00459AF0] |
FICOM m32int |
DA /2 |
和整数比较:ST(0)- m32int,设置标志 |
FICOM DWORD PTR [00459AF0] |
FICOMP |
FICOMP m16int |
DE /3 |
设置C1,C0, C2, C3 |
和整数比较:ST(0)- m16int,设置标志,执行一次出栈操作 |
FICOMP WORD PTR [00459AF0] |
FICOMP m32int |
DA /3 |
和整数比较:ST(0)- m32int,设置标志,执行一次出栈操作 |
FICOMP DWORD PTR [00459AF0] |
FILD |
FILD m16int |
DF /0 |
设置C1 (C0, C2, C3未定义) |
将16位整数压栈,即装入ST(0) |
FILD WORD PTR [00459AF0] |
FILD m32int |
DB /0 |
将32位整数压栈,即装入ST(0) |
FILD DWORD PTR [00459AF0] |
FILD m64int |
DF /5 |
将64位整数压栈,即装入ST(0) |
|
FINCSTP |
FINCSTP |
D9 F7 |
设置C1 (C0, C2, C3未定义) |
将FPU的栈顶指针值增大1 |
FINCSTP |
FINIT |
FINIT |
9B DB E3 |
设置C1 (C0, C2, C3未定义) |
初始化FPU,检查非屏蔽浮点异常 |
FINIT |
FNINIT |
FNINIT |
DB E3 |
设置C1 (C0, C2, C3未定义) |
初始化FPU,不检查非屏蔽浮点异常 |
FNINIT |
FIST |
FIST m16int |
DF /2 |
设置C1 (C0, C2, C3未定义) |
将ST(0)以16位整数保存到m16int |
FIST WORD PTR [00459AF0] |
FIST m32int |
DB /2 |
将ST(0)以32位整数保存到m32int |
FIST DWORD PTR [00459AF0] |
FISTP |
FISTP m16int |
DF /3 |
设置C1 (C0, C2, C3未定义) |
将ST(0)以16位整数保存到m16int,执行一次出栈操作 |
FISTP WORD PTR [00459AF0] |
FISTP m32int |
DB /3 |
将ST(0)以32位整数保存到m32int,执行一次出栈操作 |
FISTP DWORD PTR [00459AF0] |
FISTP m64int |
DF /7 |
将ST(0)以64位整数保存到m64int,执行一次出栈操作 |
|
FLD |
FLD m32real |
D9 /0 |
设置C1 (C0, C2, C3未定义) |
将32位实数压栈,即装入ST(0) |
FLD REAL4 PTR [00459AF0] |
FLD m64real |
DD /0 |
将64位实数压栈,即装入ST(0) |
FLD REAL8 PTR [00459AF0] |
FLD m80real |
DB /5 |
将80位实数压栈,即装入ST(0) |
|
FLD ST(i) |
D9 C0+i |
将ST(i)压栈,即装入ST(0) |
FLD ST(7) |
FLD1 |
FLD1 |
D9 E8 |
设置C1 (C0, C2, C3未定义) |
将+1.0压栈,即装入ST(0) |
FLD1 |
FLDL2T |
FLDL2T |
D9 E9 |
设置C1 (C0, C2, C3未定义) |
将log2(10)压栈,即装入ST(0) |
FLDL2T |
FLDL2E |
FLDL2E |
D9 EA |
设置C1 (C0, C2, C3未定义) |
将log2(e)压栈,即装入ST(0) |
FLDL2E |
FLDPI |
FLDPI |
D9 EB |
设置C1 (C0, C2, C3未定义) |
将pi压栈,即装入ST(0) |
FLDPI |
FLDLG2 |
FLDLG2 |
D9 EC |
设置C1 (C0, C2, C3未定义) |
将log10(2)压栈,即装入ST(0) |
FLDLG2 |
FLDLN2 |
FLDLN2 |
D9 ED |
设置C1 (C0, C2, C3未定义) |
将loge(2)压栈,即装入ST(0) |
FLDLN2 |
FLDZ |
FLDZ |
D9 EE |
设置C1 (C0, C2, C3未定义) |
将+0.0压栈,即装入ST(0) |
FLDZ |
FLDCW |
FLDCW m2byte |
D9 /5 |
C1, C0, C2, C3 未定义 |
从m2byte装入FPU控制字 |
FLDCW BYTE PTR [00459AF0] |
FLDENV |
FLDENV m14/28byte |
D9 /4 |
C1, C0, C2, C3 未定义 |
从m14/28byte装入FPU环境 |
FLDENV BYTE PTR [00459AF0] |
FMUL |
FMUL m32real |
D8 /1 |
设置C1 (C0, C2, C3未定义) |
实数乘法:ST(0)←ST(0)*m32real |
FMUL REAL4 PTR [00459AF0] |
FMUL m64real |
DC /1 |
实数乘法:ST(0)←ST(0)*m64real |
FMUL REAL8 PTR [00459AF0] |
FMUL ST(0), ST(i) |
D8 C8+i |
实数乘法:ST(0)←ST(0)*ST(i) |
FMUL ST(0), ST(1) |
FMUL ST(i), ST(0) |
DC C8+i |
实数乘法:ST(i)←ST(i)*ST(0) |
FMUL ST(1), ST(0) |
FMULP |
FMULP ST(i), ST(0) |
DE C8+i |
设置C1 (C0, C2, C3未定义) |
实数乘法:ST(i)←ST(i)*ST(0),执行一次出栈操作 |
FMULP ST(1), ST(0) |
FMULP |
DE C9 |
实数乘法:ST(1)←ST(1)*ST(0),执行一次出栈操作 |
FMULP |
FIMUL |
FIMUL m32int |
DA /1 |
设置C1 (C0, C2, C3未定义) |
乘以整数:ST(0)←m32int*ST(0) |
FIMUL DWORD PTR [00459AF0] |
FIMUL m16int |
DE /1 |
乘以整数:ST(0)←m16int*ST(0) |
FIMUL WORD PTR [00459AF0] |
FNOP |
FNOP |
D9 D0 |
C1, C0, C2, C3 未定义 |
空操作(等同于NOP) |
FNOP |
FPATAN |
FPATAN |
D9 F3 |
设置C1 (C0, C2, C3未定义) |
反正切函数arctan,ST(1)←arctan(ST(1)/ST(0)),执行一次出栈操作 |
FPATAN |
FPREM |
FPREM |
D9 F8 |
设置C1,C0, C2, C3 |
取余数,ST(0)←ST(0) MOD ST(1) |
FPREM |
FPREM1 |
FPREM1 |
D9 F5 |
设置C1,C0, C2, C3 |
取余数(使用IEEE标准),ST(0)←ST(0) MOD ST(1) |
FPREM1 |
FATAN |
FATAN |
D9 F2 |
设置C1,C2 (C0, C3未定义) |
正切函数Tan,ST(0)←tangent(ST(0)),执行一次压栈1.0的操作 |
FATAN |
FRNDINT |
FRNDINT |
D9 FC |
设置C1 (C0,C2,C3未定义) |
取整(四舍五入,当小数部分刚好等于0.5时:如果整数部分为偶数,则“舍”;如果整数部分为奇数,则“入”),ST(0)←Round(ST(0)) |
FRNDINT |
FRSTOR |
FRSTOR m94/108byte |
DD /4 |
设置C0,C1,C2,C3 |
从m94/108byte装入FPU状态 |
FRSTOR BYTE PTR [00459AF0] |
FSAVE |
FSAVE m94/108byte |
9B DD /6 |
设置C0,C1,C2,C3 |
将FPU状态保存在m94/108byte中,检查非屏蔽浮点异常,然后初始化FPU |
FSAVE BYTE PTR [00459AF0] |
FNSAVE |
FNSAVE m94/108byte |
9B DD /6 |
设置C0,C1,C2,C3 |
将FPU状态保存在m94/108byte中,不检查非屏蔽浮点异常,然后初始化FPU |
FNSAVE BYTE PTR [00459AF0] |
FSCALE |
FSCALE |
D9 FD |
设置C1 (C0,C2,C3 未定义) |
ST(0)←ST(0)* 2^ST(1) |
FSCALE |
FSIN |
FSIN |
D9 FE |
设置C1,C2 (C0,C3 未定义) |
正弦函数Sin,ST(0)←sine(ST(0)) |
FSIN |
FSINCOS |
FSINCOS |
D9 FB |
设置C1,C2 (C0,C3 未定义) |
SinCos函数: ST(0)←sine(ST(0)),PUSH cosine(ST(0)) |
FSINCOS |
FSQRT |
FSQRT |
D9 FA |
设置C1 (C0,C2, C3 未定义) |
平方根函数: ST(0)←SQRT(ST(0)) |
FSQRT |
FST |
FST m32real |
D9 /2 |
设置C1 (C0, C2, C3未定义) |
将ST(0)复制到m32real |
FST REAL4 PTR [00459AF0] |
FST m64real |
DD /2 |
将ST(0)复制到m64real |
FST REAL8 PTR [00459AF0] |
FST ST(i) |
DD D0+i |
将ST(0)复制到ST(i) |
FST ST(3) |
FSTP |
FSTP m32real |
D9 /3 |
设置C1 (C0, C2, C3未定义) |
将ST(0)复制到m32real,执行一次出栈操作 |
FSTP REAL4 PTR [00459AF0] |
FSTP m64real |
DD /3 |
将ST(0)复制到m64real,执行一次出栈操作 |
FSTP REAL8 PTR [00459AF0] |
FSTP m80real |
DB /7 |
将ST(0)复制到m80real,执行一次出栈操作 |
|
FSTP ST(i) |
DD D8+i |
将ST(0)复制到ST(i),执行一次出栈操作 |
FSTP ST(3) |
FSTCW |
FSTCW m2byte |
9B D9 /7 |
C0,C1,C2,C3 未定义 |
将FPU控制字保存到m2byte,检查非屏蔽浮点异常 |
FSTCW BYTE PTR [00459AF0] |
FNSTCW |
FNSTCW m2byte |
9B D9 /7 |
C0,C1,C2,C3 未定义 |
将FPU控制字保存到m2byte,不检查非屏蔽浮点异常 |
FNSTCW BYTE PTR [00459AF0] |
FSTENV |
FSTENV m14/28byte |
9B D9 /6 |
C0,C1,C2,C3 未定义 |
将FPU环境保存到m14/28byte,检查非屏蔽浮点异常,然后屏蔽所有浮点异常 |
FSTENV BYTE PTR [00459AF0] |
FNSTENV |
FNSTENV m14/28byte |
D9 /6 |
C0,C1,C2,C3 未定义 |
将FPU环境字保存到m14/28byte,不检查非屏蔽浮点异常,然后屏蔽所有浮点异常 |
FNSTENV BYTE PTR [00459AF0] |
FSTSW |
FSTSW m2byte |
9B DD /7 |
C0,C1,C2,C3 未定义 |
将FPU状态字保存到m2byte,检查非屏蔽浮点异常 |
FSTSW BYTE PTR [00459AF0] |
FSTSW AX |
9B DF E0 |
将FPU状态字保存到AX,检查非屏蔽浮点异常 |
FSTSW AX |
FNSTSW |
FNSTSW m2byte |
DD /7 |
C0,C1,C2,C3 未定义 |
将FPU状态字保存到m2byte,不检查非屏蔽浮点异常 |
FNSTSW BYTE PTR [00459AF0] |
FNSTSW AX |
DF E0 |
将FPU状态字保存到AX,不检查非屏蔽浮点异常 |
FNSTSW AX |
FSUB |
FSUB m32real |
D8 /4 |
设置C1 (C0, C2, C3未定义) |
实数减法:ST(0)←ST(0)-m32real |
FSUB REAL4 PTR [00459AF0] |
FSUB m64real |
DC /4 |
实数减法:ST(0)←ST(0)-m64real |
FSUB REAL8 PTR [00459AF0] |
FSUB ST(0), ST(i) |
D8 E0-i |
实数减法:ST(0)←ST(0)-ST(i) |
FSUB ST(0), ST(1) |
FSUB ST(i), ST(0) |
DC E8-i |
实数减法:ST(i)←ST(i)-ST(0) |
FSUB ST(1), ST(0) |
FSUBP |
FSUBP ST(i), ST(0) |
DE E8-i |
设置C1 (C0, C2, C3未定义) |
先进行实数减法:ST(i)←ST(i)-ST(0),然后进行一次出栈操作 |
FSUBP ST(1), ST(0) |
FSUBP |
DE E9 |
先进行实数减法:ST(1)←ST(1)-ST(0),然后进行一次出栈操作 |
FSUBP |
FISUB |
FISUB m32int |
DA /4 |
设置C1 (C0, C2, C3未定义) |
减整数:ST(0)←ST(0)-m32int |
FISUB DWORD PTR [00812CD0] |
FISUB m16int |
DE /4 |
减整数:ST(0)←ST(0)-m16int |
FISUB WORD PTR [00812CD0] |
FSUBR |
FSUBR m32real |
D8 /5 |
设置C1 (C0, C2, C3未定义) |
实数减法:ST(0)←m32real-ST(0) |
FSUBR REAL4 PTR [00459AF0] |
FSUBR m64real |
DC /5 |
实数减法:ST(0)←m64real-ST(0) |
FSUBR REAL8 PTR [00459AF0] |
FSUBR ST(0), ST(i) |
D8 E8+i |
实数减法:ST(0)←ST(i)-ST(0) |
FSUBR ST(0), ST(1) |
FSUBR ST(i), ST(0) |
DC E0+i |
实数减法:ST(i)←ST(0)-ST(i) |
FSUBR ST(1), ST(0) |
FSUBRP |
FSUBRP ST(i), ST(0) |
DE E0+i |
设置C1 (C0, C2, C3未定义) |
实数减法:ST(i)←ST(0)-ST(i),执行一次出栈操作 |
FSUBRP ST(1), ST(0) |
FSUBRP |
DE E1 |
实数减法:ST(1)←ST(0)-ST(1),执行一次出栈操作 |
FSUBRP |
FISUBR |
FISUBR m32int |
DA /5 |
设置C1 (C0, C2, C3未定义) |
被整数减:ST(0)←m32int-ST(0) |
FISUBR DWORD PTR [00459AF0] |
FISUBR m16int |
DE /5 |
被整数减:ST(0)←m16int-ST(0) |
FISUBR WORD PTR [00459AF0] |
FTST |
FTST |
D9 E4 |
设置C0,C1, C2, C3 |
零检测,将ST(0)和0.0相比较 |
FTST |
FUCOM |
FUCOM ST(i) |
DD E0+i |
设置C0,C1, C2, C3 |
比较ST(0)和ST(i) |
FUCOM ST(4) |
FUCOM |
DD E1 |
比较ST(0)和ST(1) |
FUCOM |
FUCOMP |
FUCOMP ST(i) |
DD E8+i |
设置C0,C1, C2, C3 |
比较ST(0)和ST(i),执行一次出栈操作 |
FUCOMP ST(4) |
FUCOMP |
DD E9 |
比较ST(0)和ST(1),执行一次出栈操作 |
FUCOMP |
FUCOMPP |
FUCOMPP |
DD E8+i |
设置C0,C1, C2, C3 |
比较ST(0)和ST(1),执行两次出栈操作 |
FUCOMPP |
FWAIT |
FWAIT |
9B |
C0,C1, C2, C3 未定义 |
等待,检查非屏蔽浮点异常 |
FWAIT |
FXAM |
FXAM |
D9 E5 |
设置C0,C1, C2, C3 |
检查ST(0)中的数值类型 |
FXAM |
FXCH |
FXCH ST(i) |
D9 C8+i |
设置C1 (C0, C2, C3未定义) |
交换ST(0)和ST(i)的内容 |
FXCH ST(4) |
FXCH |
D9 C9 |
交换ST(0)和ST(1)的内容 |
FXCH |
FXRSTOR |
FXRSTOR m512byte |
0F AE /1 |
恢复所有标志位 |
由m512byte恢复寄存器x87 FPU, MMX, XMM, 和MXCSR的状态 |
FXRSTOR BYTE PTR [00459AF0] |
FXSAVE |
FXSAVE m512byte |
0F AE /0 |
不影响标志位 |
将寄存器x87 FPU, MMX, XMM, 和MXCSR的状态保存到m512byte |
FXSAVE BYTE PTR [00459AF0] |
FXTRACT |
FXTRACT |
D9 F4 |
设置C1 (C0, C2, C3未定义) |
将ST(0)中的数分成exponent和significand两部分,ST(0)←Exponent(ST(0)),PUSH Significand(ST(0)) |
FXTRACT |
FYL2X |
FYL2X |
D9 F1 |
设置C1 (C0, C2, C3未定义) |
计算:ST(1)←ST(1)*log2(ST(0)),执行一次出栈操作 |
FYL2X |
FYL2XP1 |
FYL2XP1 |
D9 F9 |
设置C1 (C0, C2, C3未定义) |
计算:ST(1) ←ST(1)*log2(ST(0) + 1.0),执行一次出栈操作 |
FYL2XP1 |
HLT |
HLT |
F4 |
不影响标志位 |
系统进入暂停状态 |
HLT |
IDIV |
IDIV r/m8 |
F6 /7 |
AF CF OF PF SF ZF 未定义 |
有符号除法 |
IDIV BL ;AX除以BL,商在AL中,余数在AH中 |
IDIV r/m16 |
F7 /7 |
IDIV BX ;DX:AX除以BX,商在AX中,余数在DX中 |
IDIV r/m32 |
F7 /7 |
IDIV EBX;EDX:EAX除以BX,商在EAX中,余数在EDX中 |
IMUL |
IMUL r/m8 |
F6 /5 |
设置CF OF (SF ZF AF PF未定义) |
有符号乘法:AX←AL*r/m8 |
IMUL CL |
IMUL r/m16 |
F7 /5 |
有符号乘法:DX:AX←AX*r/m16 |
IMUL CX |
IMUL r/m32 |
F7 /5 |
有符号乘法:EDX:EAX←EAX*r/m32 |
IMUL ECX |
IMUL r16, r/m16 |
0F AF /r |
有符号乘法:r16←r16*r/m16 |
IMUL AX, BX |
IMUL r32, r/m32 |
0F AF /r |
有符号乘法:r32←r32*r/m32 |
IMUL EAX, EBX |
IMUL r16,r/m16,imm8 |
6B /r ib |
有符号乘法:r16←r/m16*imm8 |
IMUL AX, BX, 39 |
IMUL r32,r/m32,imm8 |
6B /r ib |
有符号乘法:r32←r/m32*imm8 |
IMUL EAX, EBX, 39 |
IMUL r16, imm8 |
6B /r ib |
有符号乘法:r16←r16*imm8 |
IMUL AX, 37 |
IMUL r32, imm8 |
6B /r ib |
有符号乘法:r32←r32*imm8 |
IMUL EAX, 37 |
IMUL r16,r/m16,imm16 |
69 /r iw |
有符号乘法:r16←r/m16*imm16 |
IMUL AX, BX, 387E |
IMUL r32,r/m32,imm32 |
69 /r id |
有符号乘法:r32←r/m32*imm32 |
IMUL EAX, EBX, 006387EA |
IMUL r16, imm16 |
69 /r iw |
有符号乘法:r16←r16*imm16 |
IMUL AX, 387E |
IMUL r32, imm32 |
69 /r id |
有符号乘法:r32←r32*imm32 |
IMUL EAX, 006387EA |
IN |
IN AL,imm8 |
E4 ib |
不影响标志位 |
从imm8指定的端口读字节(BYTE)到AL |
IN AL,E0 |
IN AX,imm8 |
E5 ib |
从imm8指定的端口读字节(BYTE)到AX |
IN AX,E0 |
IN EAX,imm8 |
E5 ib |
从imm8指定的端口读字节(BYTE)到EAX |
IN EAX,E0 |
IN AL,DX |
EC |
从DX指定的端口读字节(BYTE)到AL |
IN AL,DX |
IN AX,DX |
ED |
从DX指定的端口读字(WORD)到AX |
IN AX,DX |
IN EAX,DX |
ED |
从DX指定的端口读双字(DWORD)到EAX |
IN EAX,DX |
INC |
INC r/m8 |
FE /0 |
设置 OF SF ZF AF PF |
目标加1 |
INC BYTE PTR [00459AF0] |
INC r/m16 |
FF /0 |
INC WORD PTR [00459AF0] |
INC r/m32 |
FF /0 |
INC DWORD PTR [00459AF0] |
INC r16 |
40+rw |
INC DX |
INC r32 |
40+rd |
INC EDX |
INS |
INS m8, DX |
6C |
不影响标志位 |
从DX指定的端口读字节(BYTE)到ES:(E)DI |
|
INS m16, DX |
6D |
从DX指定的端口读字(WORD)到ES:(E)DI |
|
INS m32, DX |
6D |
从DX指定的端口读双字(DWORD)到ES:(E)DI |
|
INSB |
INSB |
6C |
不影响标志位 |
从DX指定的端口读字节(BYTE)到ES:(E)DI |
INSB |
INSW |
INSW |
6D |
不影响标志位 |
从DX指定的端口读字(WORD)到ES:(E)DI |
INSW |
INSD |
INSD |
6D |
不影响标志位 |
从DX指定的端口读双字(DWORD)到ES:(E)DI |
INSD |
INT 3 |
INT 3 |
CC |
标志位被保存压栈 |
调试陷阱中断 |
INT 3 |
INT imm8 |
INT imm8 |
CD ib |
标志位被保存压栈 |
中断功能调用,imm8是中断向量号 |
INT 21 |
INTO |
INTO |
CE |
标志位被保存压栈 |
溢出中断,条件:OV=1,4号中断功能调用 |
INTO |
INVD |
INVD |
0F 08 |
不影响标志位 |
使内部CACHES无效,初始化外部CACHES |
INVD |
INVLPG |
INVLPG |
0F 01/7 |
不影响标志位 |
使TLB项无效 |
INVLPG [EBX] |
IRET |
IRET |
CF |
恢复被压栈的标志位 |
中断返回(16位) |
IRET |
IRETD |
IRETD |
CF |
恢复被压栈的标志位 |
中断返回(32位) |
IRETD |
Jcc |
JA rel8 |
77 cb |
高于(CF=0 and ZF=0) |
条件转移指令 |
|
JAE rel8 |
73 cb |
高于等于(CF=0) |
|
JB rel8 |
72 cb |
低于(CF=1) |
|
JBE rel8 |
76 cb |
低于等于(CF=1 or ZF=1) |
|
JC rel8 |
72 cb |
有进位(CF=1) |
|
JCXZ rel8 |
E3 cb |
CX=0则跳 |
|
JECXZ rel8 |
E3 cb |
ECX=0则跳 |
|
JE rel8 |
74 cb |
等于(ZF=1) |
|
JG rel8 |
7F cb |
大于(ZF=0 and SF=OF) |
|
JGE rel8 |
7D cb |
大于等于(SF=OF) |
|
JL rel8 |
7C cb |
小于(SF<>OF) |
|
JLE rel8 |
7E cb |
小于等于(ZF=1 or SF<>OF) |
|
JNA rel8 |
76 cb |
不高于(CF=1 or ZF=1) |
|
JNAE rel8 |
72 cb |
不高等于(CF=1) |
|
JNB rel8 |
73 cb |
不低于(CF=0) |
|
JNBE rel8 |
77 cb |
不低等于(CF=0 and ZF=0) |
|
JNC rel8 |
73 cb |
无进位(CF=0) |
|
JNE rel8 |
75 cb |
不等于(ZF=0) |
|
JNG rel8 |
7E cb |
不大于(ZF=1 or SF<>OF) |
|
JNGE rel8 |
7C cb |
不大等于(SF<>OF) |
|
JNL rel8 |
7D cb |
不小于(SF=OF) |
|
JNLE rel8 |
7F cb |
不小等于(ZF=0 and SF=OF) |
|
JNO rel8 |
71 cb |
无溢出(OF=0) |
|
JNP rel8 |
7B cb |
非偶数(PF=0) |
|
JNS rel8 |
79 cb |
非负数(SF=0) |
|
JNZ rel8 |
75 cb |
非零(ZF=0) |
|
JO rel8 |
70 cb |
溢出(OF=1) |
|
JP rel8 |
7A cb |
偶数(PF=1) |
|
JPE rel8 |
7A cb |
偶数(PF=1) |
|
JPO rel8 |
7B cb |
奇数(PF=0) |
|
JS rel8 |
78 cb |
负数(SF=1) |
|
JZ rel8 |
74 cb |
为零(ZF=1) |
|
JA rel16/32 |
0F 87 cw/cd |
高于(CF=0 and ZF=0) |
|
JAE rel16/32 |
0F 83 cw/cd |
高于等于(CF=0) |
|
JB rel16/32 |
0F 82 cw/cd |
低于(CF=1) |
|
JBE rel16/32 |
0F 86 cw/cd |
低于等于(CF=1 or ZF=1) |
|
JC rel16/32 |
0F 82 cw/cd |
有进位(CF=1) |
|
JE rel16/32 |
0F 84 cw/cd |
等于(ZF=1) |
|
JZ rel16/32 |
0F 84 cw/cd |
为零(ZF=1) |
|
JG rel16/32 |
0F 8F cw/cd |
大于(ZF=0 and SF=OF) |
|
JMP |
JMP rel8 |
EB cb |
不影响标志位 |
无条件转移指令 |
|
JMP rel16 |
E9 cw |
|
JMP rel32 |
E9 cd |
|
JMP r/m16 |
FF /4 |
|
JMP r/m32 |
FF /4 |
|
JMP ptr16:16 |
EA cd |
|
JMP ptr16:32 |
EA cp |
|
JMP m16:16 |
FF /5 |
|
JMP m16:32 |
FF /5 |
|
LAHF |
LAHF |
9F |
不影响标志位 |
将标志寄存器的低字节送入AH,格式为:AH=(SF:ZF:0:AF:0:PF:1:CF) |
LAHF |
LAR |
LAR r16,r/m16 |
0F 02 /r |
设置ZF |
将源操作数指定的选择子访问权送目标寄存器 |
LAR AX,BX |
LAR r32,r/m32 |
LAR EAX,EBX |
LDS |
LDS r16,m16:16 |
C5 /r |
不影响标志位 |
从内存位置m16:16装入地址值DS:r16 |
|
LDS r32,m16:32 |
从内存位置m16:32装入地址值DS:r32 |
|
LSS |
LSS r16,m16:16 |
0F B2 /r |
不影响标志位 |
从内存位置m16:16装入地址值SS:r16 |
|
LSS r32,m16:32 |
从内存位置m16:32装入地址值SS:r32 |
|
LES |
LES r16,m16:16 |
C4 /r |
不影响标志位 |
从内存位置m16:16装入地址值ES:r16 |
|
LES r32,m16:32 |
从内存位置m16:32装入地址值ES:r32 |
|
LFS |
LFS r16,m16:16 |
0F B4 /r |
不影响标志位 |
从内存位置m16:16装入地址值FS:r16 |
|
LFS r32,m16:32 |
从内存位置m16:32装入地址值FS:r32 |
|
LGS |
LGS r16,m16:16 |
0F B5 /r |
不影响标志位 |
从内存位置m16:16装入地址值GS:r16 |
|
LGS r32,m16:32 |
从内存位置m16:32装入地址值GS:r32 |
|
LEA |
LEA r16,m |
8D /r |
不影响标志位 |
将源操作数的有效地址送r16 |
|
LEA r32,m |
将源操作数的有效地址送r32 |
|
LEAVE |
LEAVE |
C9 |
不影响标志位 |
子过程返回释放堆栈框架 |
LEAVE |
LGDT |
LGDT m16&32 |
0F 01 /2 |
不影响标志位 |
将内存m16&32处的值装入全局描述符表寄存器 |
LGDT [EBP] |
LIDT |
LIDT m16&32 |
0F 01 /3 |
不影响标志位 |
将内存m16&32处的值装入中断描述符表寄存器 |
LIDT [SI] |
LLDT |
LLDT r/m16 |
0F 00 /2 |
不影响标志位 |
将r/m16处的值装入局部描述符表寄存器 |
LLDT BX |
LMSW |
LMSW r/m16 |
0F 01 /6 |
不影响标志位 |
将r/m16处的值装入机器状态字 |
LMSW [BP] |
LOCK |
LOCK |
F0 |
不影响标志位 |
总线锁定 |
LOCK |
LODS |
LODS m8 |
AC |
不影响标志位 |
将地址DS:(E)SI的值装入AL |
|
LODS m16 |
AD |
将地址DS:(E)SI的值装入AX |
|
LODS m32 |
AD |
将地址DS:(E)SI的值装入EAX |
|
LODSB |
LODSB |
AC |
不影响标志位 |
将地址DS:(E)SI的值装入AL |
LODSB |
LODSW |
LODSW |
AD |
不影响标志位 |
将地址DS:(E)SI的值装入AX |
LODSW |
LODSD |
LODSD |
AD |
不影响标志位 |
将地址DS:(E)SI的值装入EAX |
LODSD |
LOOP |
LOOP rel8 |
E2 cb |
不影响标志位 |
条件循环指令,循环条件:CX/ECX != 0 |
|
LOOPE |
LOOPE rel8 |
E1 cb |
不影响标志位 |
条件循环指令,循环条件:CX/ECX != 0 且 ZF=1 |
|
LOOPZ |
LOOPZ rel8 |
E1 cb |
不影响标志位 |
条件循环指令,循环条件:CX/ECX != 0 且 ZF=1 |
|
LOOPNE |
LOOPNE rel8 |
E1 cb |
不影响标志位 |
条件循环指令,循环条件:CX/ECX != 0 且 ZF=0 |
|
LOOPNZ |
LOOPNZ rel8 |
E1 cb |
不影响标志位 |
条件循环指令,循环条件:CX/ECX != 0 且 ZF=0 |
|
LSL |
LSL r16,r/m16 |
0F 03 /r |
设置ZF |
装入选择子对应的描述符的段界限 |
LSL AX,BX |
LSL r32,r/m32 |
LSL EAX,EBX |
LTR |
LTR r/m16 |
0F 00 /3 |
不影响标志位 |
装入任务寄存器 |
LTR AX |
MOV |
MOV r/m8,r8 |
88 /r |
不影响标志位 |
传送指令 |
MOV [00459AF0],AL |
MOV r/m16,r16 |
89 /r |
MOV [00459AF0],AX |
MOV r/m32,r32 |
89 /r |
MOV [00459AF0],EAX |
MOV r8,r/m8 |
8A /r |
MOV AL,[00459AF0] |
MOV r16,r/m16 |
8B /r |
MOV AX,[00459AF0] |
MOV r32,r/m32 |
8B /r |
MOV EAX,[00459AF0] |
MOV r/m16,Sreg |
8C /r |
MOV AX,ES |
MOV Sreg,r/m16 |
8E /r |
MOV ES,AX |
MOV AL,moffs8 |
A0 |
MOV AL,ES:[459A] |
MOV AX,moffs16 |
A1 |
MOV AX,ES:[459A] |
MOV EAX,moffs32 |
A1 |
MOV EAX,ES:[00459AF0] |
MOV moffs8,AL |
A2 |
MOV ES:[459A],AL |
MOV moffs16,AX |
A3 |
MOV ES:[459A],AX |
MOV moffs32,EAX |
A3 |
MOV ES:[00459AF0],EAX |
MOV r8,imm8 |
B0+rb |
MOV AL,F0 |
MOV r16,imm16 |
B8+rw |
MOV AX,9AF0 |
MOV r32,imm32 |
B8+rd |
MOV EAX,00459AF0 |
MOV r/m8,imm8 |
C6 /0 |
MOV BYTE PTR [00459AF0],F0 |
MOV r/m16,imm16 |
C7 /0 |
MOV WORD PTR [00459AF0],9AF0 |
MOV r/m32,imm32 |
C7 /0 |
MOV DWORD PTR [00459AF0],00459AF0 |
MOV |
MOV CR0,r32 |
0F 22 /r |
不影响标志位 |
控制寄存器传送指令 |
MOV CR0,EAX |
MOV CR2,r32 |
0F 22 /r |
MOV CR2,EAX |
MOV CR3,r32 |
0F 22 /r |
MOV CR3,EAX |
MOV CR4,r32 |
0F 22 /r |
MOV CR4,EAX |
MOV r32,CR0 |
0F 20 /r |
MOV EAX,CR0 |
MOV r32,CR2 |
0F 20 /r |
MOV EAX,CR2 |
MOV r32,CR3 |
0F 20 /r |
MOV EAX,CR3 |
MOV r32,CR4 |
0F 20 /r |
MOV EAX,CR4 |
MOV |
MOV r32, DR0-DR7 |
0F 21 /r |
不影响标志位 |
调试寄存器传送指令 |
MOV EAX,DR0 |
MOV DR0-DR7,r32 |
0F 23 /r |
MOV DR0,EAX |
MOVD |
MOVD mm, r/m32 |
0F 6E /r |
不影响标志位 |
双字传送指令 |
|
MOVD r/m32, mm |
0F 7E /r |
|
MOVD xmm, r/m32 |
66 0F 6E /r |
|
MOVD r/m32, xmm |
66 0F 7E /r |
|
MOVQ |
MOVQ mm, r/m64 |
0F 6F /r |
不影响标志位 |
八字节传送指令 |
|
MOVQ mm/m64, mm |
0F 7F /r |
|
MOVQ xmm1, xmm2/m64 |
F3 0F 7E |
|
MOVQ xmm2/m64, xmm1 |
66 0F D6 |
|
MOVS |
MOVS m8, m8 |
A4 |
不影响标志位 |
字符串传送,每次传送1个字节 |
MOVS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI |
MOVS m16, m16 |
A5 |
字符串传送,每次传送1个字 |
MOVS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI |
MOVS m32, m32 |
A5 |
字符串传送,每次传送1个双字 |
MOVS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI (386+) |
MOVSB |
A4 |
字符串传送,每次传送1个字节 |
MOVSB ;源串DS:(E)SI,目的串:ES:(E)DI |
MOVSW |
A5 |
字符串传送,每次传送1个字 |
MOVSW ;源串DS:(E)SI,目的串:ES:(E)DI |
MOVSD |
A5 |
字符串传送,每次传送1个双字 |
MOVSD ;源串DS:(E)SI,目的串:ES:(E)DI (386+) |
MOVSX |
MOVSX r16,r/m8 |
0F BE /r |
不影响标志位 |
带符号扩展传送指令 |
MOVSX AX, BL |
MOVSX r32,r/m8 |
0F BE /r |
MOVSX EAX,BL |
MOVSX r32,r/m16 |
0F BF /r |
MOVSX EAX,BX |
MOVZX |
MOVZX r16,r/m8 |
0F B6 /r |
不影响标志位 |
零扩展传送指令 |
MOVZX AX, BL |
MOVZX r32,r/m8 |
0F B6 /r |
MOVZX EAX,BL |
MOVZX r32,r/m16 |
0F B7 /r |
MOVZX EAX,BX |
MUL |
MUL r/m8 |
F6 /4 |
设置CF OF (SF ZF AF PF未定义) |
无符号乘法:AX←AL*r/m8 |
MUL CL |
MUL r/m16 |
F7 /4 |
无符号乘法:DX:AX←AX*r/m16 |
MUL CX |
MUL r/m32 |
F7 /4 |
无符号乘法:EDX:EAX←EAX*r/m32 |
MUL ECX |
NEG |
NEG r/m8 |
F6 /3 |
设置CF OF SF ZF AF PF |
取负:r/m8=-r/m8 |
NEG CL |
NEG r/m16 |
F7 /3 |
取负:r/m16=-r/m16 |
NEG CX |
NEG r/m32 |
F7 /3 |
取负:r/m32=-r/m32 |
NEG ECX |
NOP |
NOP |
90 |
不影响标志位 |
空操作 |
NOP |
NOT |
NOT r/m8 |
F6 /2 |
设置CF OF SF ZF AF PF |
按位取反:r/m8=NOT r/m8 |
NOT CL |
NOT r/m16 |
F7 /2 |
按位取反:r/m16=NOT r/m16 |
NOT CX |
NOT r/m32 |
F7 /2 |
按位取反:r/m32=NOT r/m32 |
NOT ECX |
OR |
OR AL, imm8 |
0C ib |
设置 CF OF PF SF ZF |
逻辑或 |
OR AL, 1F |
OR AX, imm16 |
0D iw |
OR AX, 4F80 |
OR EAX, imm32 |
0D id |
OR EAX, 00004F80 |
OR r/m8, imm8 |
80 /1 ib |
OR BYTE PTR [006387EA], 39 |
OR r/m16,imm16 |
81 /1 iw |
OR WORD PTR [006387EA], 1039 |
OR r/m32,imm32 |
81 /1 id |
OR DWORD PTR [006387EA], 00001039 |
OR r/m16,imm8 |
83 /1 ib |
OR WORD PTR [006387EA], 39 |
OR r/m32,imm8 |
83 /1 ib |
OR DWORD PTR [006387EA], 39 |
OR r/m8,r8 |
08 /r |
OR [006387EA], AL |
OR r/m16,r16 |
09 /r |
OR [006387EA], AX |
OR r/m32,r32 |
09 /r |
OR [006387EA], EAX |
OR r8,r/m8 |
0A /r |
OR AL, [006387EA] |
OR r16,r/m16 |
0B /r |
OR AX, [006387EA] |
OR r32,r/m32 |
0B /r |
OR EAX, [006387EA] |
OUT |
OUT imm8,AL |
E6 ib |
不影响标志位 |
将AL输出到imm8指定的端口 |
OUT E0,AL |
OUT imm8,AX |
E7 ib |
将AX输出到imm8指定的端口 |
OUT E0,AX |
OUT imm8,EAX |
E7 ib |
将EAX输出到imm8指定的端口 |
OUT E0,EAX |
OUT AL,DX |
EE |
将AL输出到DX指定的端口 |
OUT DX,AL |
OUT AX,DX |
EF |
将AX输出到DX指定的端口 |
OUT DX,AX |
OUT EAX,DX |
EF |
将EAX输出到DX指定的端口 |
OUT DX,EAX |
OUTS |
OUTS DX,m8 |
6E |
不影响标志位 |
将DS:(E)SI处的字节输出到DX指定的端口 |
|
OUTS DX,m16 |
6F |
将DS:(E)SI处的字输出到DX指定的端口 |
|
OUTS DX,m32 |
6F |
将DS:(E)SI处的双字输出到DX指定的端口 |
|
OUTSB |
OUTSB |
6E |
不影响标志位 |
将DS:(E)SI处的字节输出到DX指定的端口 |
OUTSB |
OUTSW |
OUTSW |
6F |
不影响标志位 |
将DS:(E)SI处的字输出到DX指定的端口 |
OUTSW |
OUTSD |
OUTSD |
6F |
不影响标志位 |
将DS:(E)SI处的双字输出到DX指定的端口 |
OUTSD |
PACKSSWB |
PACKSSWB mm1, mm2/m64 |
0F 63 /r |
不影响标志位 |
紧缩带符号字到字节,溢出取饱和值 |
|
PACKSSWB xmm1,xmm2/m128 |
66 0F 63 /r |
PACKSSWB XMM0,XMM1 |
PACKSSDW |
PACKSSDW mm1, mm2/m64 |
0F 6B /r |
不影响标志位 |
紧缩带符号双字到字,溢出取饱和值 |
|
PACKSSDW xmm1,xmm2/m128 |
66 0F 6B /r |
PACKSSDW XMM0,XMM1 |
PACKUSWB |
PACKUSWB mm1, mm2/m64 |
0F 67 /r |
不影响标志位 |
紧缩无符号字到字节,溢出取饱和值 |
|
PACKUSWB xmm1,xmm2/m128 |
66 0F 67 /r |
PACKUSWB XMM0,XMM1 |
PADDB |
PADDB mm, mm/m64 |
0F FC /r |
不影响标志位 |
紧缩字节相加,溢出则回绕 |
|
PADDB xmm1,xmm2/m128 |
66 0F FC /r |
PADDB XMM6,XMM7 |
PADDW |
PADDW mm, mm/m64 |
0F FD /r |
不影响标志位 |
紧缩字相加,溢出则回绕 |
|
PADDW xmm1,xmm2/m128 |
66 0F FD /r |
PADDW XMM6,XMM7 |
PADDD |
PADDD mm, mm/m64 |
0F FE /r |
不影响标志位 |
紧缩双字相加,溢出则回绕 |
|
PADDD xmm1,xmm2/m128 |
66 0F FE /r |
PADDD XMM6,XMM7 |
PADDQ |
PADDQ mm1, mm2/m64 |
0F D4 /r |
不影响标志位 |
紧缩四字相加,溢出则回绕 |
|
PADDQ xmm1,xmm2/m128 |
66 0F D4 /r |
PADDQ XMM6,XMM7 |
PADDSB |
PADDSB mm, mm/m64 |
0F EC /r |
不影响标志位 |
带符号紧缩字节相加,溢出取饱和值 |
|
PADDSB xmm1,xmm2/m128 |
66 0F EC /r |
PADDSB XMM6,XMM7 |
PADDSW |
PADDSW mm, mm/m64 |
0F ED /r |
不影响标志位 |
带符号紧缩字相加,溢出取饱和值 |
|
PADDSW xmm1,xmm2/m128 |
66 0F ED /r |
PADDSW XMM6,XMM7 |
PADDUSB |
PADDUSB mm, mm/m64 |
0F DC /r |
不影响标志位 |
无符号紧缩字节相加,溢出取饱和值 |
|
PADDUSB xmm1,xmm2/m128 |
66 0F DC /r |
PADDUSB XMM0,XMM1 |
PADDUSW |
PADDUSW mm, mm/m64 |
0F DD /r |
不影响标志位 |
无符号紧缩字相加,溢出取饱和值 |
|
PADDUSW xmm1,xmm2/m128 |
66 0F DD /r |
PADDUSW XMM1,XMM2 |
PAND |
PAND mm, mm/m64 |
0F DB /r |
不影响标志位 |
逻辑与操作 |
|
PAND xmm1,xmm2/m128 |
66 0F DB /r |
PAND XMM4,XMM1 |
PANDN |
PANDN mm, mm/m64 |
0F DF /r |
不影响标志位 |
求反后与操作:DEST ←(NOT DEST) AND SRC |
|
PANDN xmm1,xmm2/m128 |
66 0F DF /r |
PANDN XMM4,XMM1 |
PAUSE |
PAUSE |
F3 90 |
不影响标志位 |
改善处理器的“spin-wait loop”性能 |
PAUSE |
PAVGB |
PAVGB mm, mm/m64 |
0F E0 /r |
不影响标志位 |
取紧缩无符号字节的平均值(四舍五入) |
|
PAVGB xmm1,xmm2/m128 |
0F E0 /r |
PAVGB XMM4,XMM1 |
PAVGW |
PAVGW mm, mm/m64 |
0F E0 /r |
不影响标志位 |
取紧缩无符号字的平均值(四舍五入) |
|
PAVGW xmm1,xmm2/m128 |
0F E0 /r |
PAVGW XMM4,XMM1 |
PCMPEQB |
PCMPEQB mm, mm/m64 |
0F 74 /r |
不影响标志位 |
紧缩字节相等比较 |
|
PCMPEQB xmm1,xmm2/m128 |
66 0F 74 /r |
PCMPEQB XMM4,XMM1 |
PCMPEQW |
PCMPEQW mm, mm/m64 |
0F 75 /r |
不影响标志位 |
紧缩字相等比较 |
|
PCMPEQW xmm1,xmm2/m128 |
66 0F 75 /r |
PCMPEQW XMM4,XMM1 |
PCMPEQD |
PCMPEQD mm, mm/m64 |
0F 76 /r |
不影响标志位 |
紧缩双字相等比较 |
|
PCMPEQD xmm1,xmm2/m128 |
66 0F 76 /r |
PCMPEQD XMM4,XMM1 |
PCMPGTB |
PCMPGTB mm, mm/m64 |
0F 64 /r |
不影响标志位 |
带符号紧缩字节大于比较 |
|
PCMPGTB xmm1,xmm2/m128 |
66 0F 64 /r |
PCMPGTB XMM4,XMM1 |
PCMPGTW |
PCMPGTW mm, mm/m64 |
0F 65 /r |
不影响标志位 |
带符号紧缩字大于比较 |
|
PCMPGTW xmm1,xmm2/m128 |
66 0F 65 /r |
PCMPGTW XMM4,XMM1 |
PCMPGTD |
PCMPGTD mm, mm/m64 |
0F 66 /r |
不影响标志位 |
带符号紧缩双字大于比较 |
|
PCMPGTD xmm1,xmm2/m128 |
66 0F 66 /r |
PCMPGTD XMM4,XMM1 |
PMADDWD |
PMADDWD mm, mm/m64 |
0F F5 /r |
不影响标志位 |
紧缩乘和加操作 |
|
PMADDWD xmm1,xmm2/m128 |
66 0F F5 /r |
PMADDWD XMM4,XMM1 |
PMAXSW |
PMAXSW mm1, mm2/m64 |
0F EE /r |
不影响标志位 |
有符号字比较,返回最大值 |
|
PMAXSW xmm1,xmm2/m128 |
66 0F EE /r |
PMAXSW XMM4,XMM1 |
PMAXUB |
PMAXUB mm1, mm2/m64 |
0F DE /r |
不影响标志位 |
无符号字比较,返回最大值 |
|
PMAXUB xmm1,xmm2/m128 |
66 0F DE /r |
PMAXUB XMM4,XMM1 |
PMINSW |
PMINSW mm1, mm2/m64 |
0F EA /r |
不影响标志位 |
有符号字比较,返回最小值 |
|
PMINSW xmm1,xmm2/m128 |
66 0F EA /r |
PMINSW XMM4,XMM1 |
PMINUB |
PMINUB mm1, mm2/m64 |
0F DA /r |
不影响标志位 |
无符号字比较,返回最小值 |
|
PMINUB xmm1,xmm2/m128 |
66 0F DA /r |
PMINUB XMM4,XMM1 |
PMULHUW |
PMULHUW mm1, mm2/m64 |
0F E4 /r |
不影响标志位 |
紧缩无符号字相乘,存高位 |
|
PMULHUW xmm1,xmm2/m128 |
66 0F E4 /r |
PMULHUW XMM4,XMM1 |
PMULHW |
PMULHW mm1, mm2/m64 |
0F E5 /r |
不影响标志位 |
紧缩有符号字相乘,存高位 |
|
PMULHW xmm1,xmm2/m128 |
66 0F E5 /r |
PMULHW XMM4,XMM1 |
PMULLW |
PMULLW mm1, mm2/m64 |
0F D5 /r |
不影响标志位 |
紧缩有符号字相乘,存低位 |
|
PMULLW xmm1,xmm2/m128 |
66 0F D5 /r |
PMULLW XMM4,XMM1 |
PMULUDQ |
PMULUDQ mm1, mm2/m64 |
0F F4 /r |
不影响标志位 |
无符号双字相乘,存四字 |
|
PMULUDQ xmm1,xmm2/m128 |
66 OF F4 /r |
PMULUDQ XMM4,XMM1 |
POP |
POP r/m16 |
8F /0 |
不影响标志位 |
16位数据出栈 |
POP WORD PTR [006387EA] |
POP r/m32 |
8F /0 |
32位数据出栈 |
POP DWORD PTR [006387EA] |
POP r16 |
58+rw |
16位数据出栈到寄存器 |
POP AX |
POP r32 |
58+rd |
32位数据出栈到寄存器 |
POP EAX |
POP DS |
1F |
数据出栈到寄存器DS |
POP DS |
POP ES |
07 |
数据出栈到寄存器ES |
POP ES |
POP SS |
17 |
数据出栈到寄存器SS |
POP SS |
POP FS |
0F A1 |
数据出栈到寄存器FS |
POP FS |
POP GS |
0F A9 |
32位数据出栈到寄存器GS |
POP GS |
POPA |
POPA |
61 |
不影响标志位 |
从堆栈中弹出全部16位通用寄存器:DI, SI, BP, BX, DX, CX, AX |
POPA |
POPAD |
POPAD |
61 |
不影响标志位 |
从堆栈中弹出全部32位通用寄存器:EDI, ESI, EBP, EBX, EDX, ECX, EAX |
POPAD |
POPF |
POPF |
9D |
设置所有标志位 |
从堆栈中弹出16位标志寄存器 |
POPF |
POPFD |
POPFD |
9D |
设置所有标志位 |
从堆栈中弹出32位标志寄存器 |
POPFD |
POR |
POR mm, mm/m64 |
0F EB /r |
不影响标志位 |
逻辑或操作 |
|
POR xmm1,xmm2/m128 |
66 0F EB /r |
POR XMM4,XMM1 |
PSLLD |
PSLLD mm, mm/m64 |
0F F2 /r |
不影响标志位 |
紧缩双字逻辑左移 |
|
PSLLD xmm1,xmm2/m128 |
66 0F F2 /r |
PSLLD XMM4,XMM1 |
PSLLD mm, imm8 |
0F 72 /6 ib |
|
PSLLD xmm1, imm8 |
66 0F 72 /6 ib |
|
PSLLQ |
PSLLQ mm, mm/m64 |
0F F3 /r |
不影响标志位 |
紧缩四字逻辑左移 |
|
PSLLQ xmm1,xmm2/m128 |
66 0F F3 /r |
PSLLQ XMM4,XMM1 |
PSLLQ mm, imm8 |
0F 73 /6 ib |
|
PSLLQ xmm1, imm8 |
66 0F 73 /6 ib |
|
PSLLW |
PSLLW mm, mm/m64 |
0F F1 /r |
不影响标志位 |
紧缩字逻辑左移 |
|
PSLLW xmm1,xmm2/m128 |
66 0F F1 /r |
PSLLW XMM4,XMM1 |
PSLLW mm, imm8 |
0F 71 /6 ib |
|
PSLLW xmm1, imm8 |
66 0F 71 /6 ib |
|
PSRAD |
PSRAD mm, mm/m64 |
0F E2 /r |
不影响标志位 |
紧缩双字算术右移 |
|
PSRAD xmm1,xmm2/m128 |
66 0F E2 /r |
PSRAD XMM4,XMM1 |
PSRAD mm, imm8 |
0F 72 /4 ib |
|
PSRAD xmm1, imm8 |
66 0F 72 /4 ib |
|
PSRAW |
PSRAW mm, mm/m64 |
0F E1 /r |
不影响标志位 |
紧缩字算术右移 |
|
PSRAW xmm1,xmm2/m128 |
66 0F E1 /r |
PSRAW XMM4,XMM1 |
PSRAW mm, imm8 |
0F 71 /4 ib |
|
PSRAW xmm1, imm8 |
66 0F 71 /4 ib |
|
PSRLD |
PSRLD mm, mm/m64 |
0F D2 /r |
不影响标志位 |
紧缩双字逻辑右移 |
|
PSRLD xmm1,xmm2/m128 |
66 0F D2 /r |
PSRLD XMM4,XMM1 |
PSRLD mm, imm8 |
0F 72 /2 ib |
|
PSRLD xmm1, imm8 |
66 0F 72 /2 ib |
|
PSRLQ |
PSRLQ mm, mm/m64 |
0F D3 /r |
不影响标志位 |
紧缩四字逻辑右移 |
|
PSRLQ xmm1,xmm2/m128 |
66 0F D3 /r |
PSRLQ XMM4,XMM1 |
PSRLQ mm, imm8 |
0F 73 /2 ib |
|
PSRLQ xmm1, imm8 |
66 0F 73 /2 ib |
|
PSRLW |
PSRLW mm, mm/m64 |
0F D1 /r |
不影响标志位 |
紧缩字逻辑右移 |
|
PSRLW xmm1,xmm2/m128 |
66 0F D1 /r |
PSRLW XMM4,XMM1 |
PSRLW mm, imm8 |
0F 71 /2 ib |
|
PSRLW xmm1, imm8 |
66 0F 71 /2 ib |
|
PSUBB |
PSUBB mm, mm/m64 |
0F F8 /r |
不影响标志位 |
紧缩字节减法,溢出则回绕 |
|
PSUBB xmm1,xmm2/m128 |
66 0F F8 /r |
PSUBB XMM6,XMM7 |
PSUBW |
PSUBW mm, mm/m64 |
0F F9 /r |
不影响标志位 |
紧缩字减法,溢出则回绕 |
|
PSUBW xmm1,xmm2/m128 |
66 0F F9 /r |
PSUBW XMM6,XMM7 |
PSUBD |
PSUBD mm, mm/m64 |
0F FA /r |
不影响标志位 |
紧缩双字减法,溢出则回绕 |
|
PSUBD xmm1,xmm2/m128 |
66 0F FA /r |
PSUBD XMM6,XMM7 |
PSUBQ |
PSUBQ mm1, mm2/m64 |
0F FB /r |
不影响标志位 |
紧缩四字减法,溢出则回绕 |
|
PSUBQ xmm1,xmm2/m128 |
66 0F FB /r |
PSUBQ XMM6,XMM7 |
PSUBSB |
PSUBSB mm, mm/m64 |
0F E8 /r |
不影响标志位 |
带符号紧缩字节减法,溢出取饱和值 |
|
PSUBSB xmm1,xmm2/m128 |
66 0F E8 /r |
PSUBSB XMM6,XMM7 |
PSUBSW |
PSUBSW mm, mm/m64 |
0F E9 /r |
不影响标志位 |
带符号紧缩字减法,溢出取饱和值 |
|
PSUBSW xmm1,xmm2/m128 |
66 0F E9 /r |
PSUBSW XMM6,XMM7 |
PSUBUSB |
PSUBUSB mm, mm/m64 |
0F D8 /r |
不影响标志位 |
无符号紧缩字节减法,溢出取饱和值 |
|
PSUBUSB xmm1,xmm2/m128 |
66 0F D8 /r |
PSUBUSB XMM6,XMM7 |
PSUBUSW |
PSUBUSW mm, mm/m64 |
0F D9 /r |
不影响标志位 |
无符号紧缩字减法,溢出取饱和值 |
|
PSUBUSW xmm1,xmm2/m128 |
66 0F D9 /r |
PSUBUSW XMM6,XMM7 |
PUNPCKHBW |
PUNPCKHBW mm, mm/m64 |
0F 68 /r |
不影响标志位 |
反紧缩高位,字节到字 |
|
PUNPCKHBW xmm1,xmm2/m128 |
66 0F 68 /r |
PUNPCKHBW XMM6,XMM7 |
PUNPCKHWD |
PUNPCKHWD mm, mm/m64 |
0F 69 /r |
不影响标志位 |
反紧缩高位,字到双字 |
|
PUNPCKHWD xmm1,xmm2/m128 |
66 0F 69 /r |
PUNPCKHWD XMM6,XMM7 |
PUNPCKHDQ |
PUNPCKHDQ mm1, mm2/m64 |
0F 6A /r |
不影响标志位 |
反紧缩高位,双字到四字 |
|
PUNPCKHDQ xmm1,xmm2/m128 |
66 0F 6A /r |
PUNPCKHDQ XMM6,XMM7 |
PUNPCKHQDQ |
PUNPCKHQDQ xmm1,xmm2/m128 |
66 0F 6D /r |
不影响标志位 |
反紧缩高位,四字到八字 |
|
PUNPCKLBW |
PUNPCKLBW mm, mm/m64 |
0F 60 /r |
不影响标志位 |
反紧缩低位,字节到字 |
|
PUNPCKLBW xmm1,xmm2/m128 |
66 0F 60 /r |
PUNPCKLBW XMM6,XMM7 |
PUNPCKLWD |
PUNPCKLWD mm, mm/m64 |
0F 61 /r |
不影响标志位 |
反紧缩低位,字到双字 |
|
PUNPCKLWD xmm1,xmm2/m128 |
66 0F 61 /r |
PUNPCKLWD XMM6,XMM7 |
PUNPCKLDQ |
PUNPCKLDQ mm1, mm2/m64 |
0F 62 /r |
不影响标志位 |
反紧缩低位,双字到四字 |
|
PUNPCKLDQ xmm1,xmm2/m128 |
66 0F 62 /r |
PUNPCKLDQ XMM6,XMM7 |
PUNPCKLQDQ |
PUNPCKLQDQ xmm1, xmm2/m128 |
66 0F 6C /r |
不影响标志位 |
反紧缩低位,四字到八字 |
|
PUSH |
PUSH r/m16 |
FF /6 |
不影响标志位 |
16位数据压栈 |
PUSH WORD PTR [006387EA] |
PUSH r/m32 |
FF /6 |
32位数据压栈 |
PUSH DWORD PTR [006387EA] |
PUSH r16 |
50+rw |
16位寄存器数据压栈 |
PUSH AX |
PUSH r32 |
50+rd |
32位寄存器数据压栈 |
PUSH EAX |
PUSH imm8 |
6A |
8位立即数据压栈 |
PUSH EA |
PUSH imm16 |
68 |
16位立即数据压栈 |
PUSH 87EA |
PUSH imm32 |
58 |
32位立即数据压栈 |
PUSH 006387EA |
PUSH CS |
0E |
寄存器CS数据压栈 |
PUSH CS |
PUSH SS |
16 |
寄存器SS数据压栈 |
PUSH SS |
PUSH DS |
1E |
寄存器DS数据压栈 |
PUSH DS |
PUSH ES |
06 |
寄存器ES数据压栈 |
PUSH ES |
PUSH FS |
0F A0 |
寄存器FS数据压栈 |
PUSH FS |
PUSH GS |
0F A8 |
寄存器GS数据压栈 |
PUSH GS |
PUSHA |
PUSHA |
60 |
不影响标志位 |
压栈全部16位通用寄存器:AX, CX, DX, BX, SP, BP, SI, DI |
PUSHA |
PUSHAD |
PUSHAD |
60 |
不影响标志位 |
压栈全部32位通用寄存器:EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI |
PUSHAD |
PUSHF |
PUSHF |
9C |
设置所有标志位 |
压栈16位标志寄存器 |
PUSHF |
PUSHFD |
PUSHFD |
9C |
设置所有标志位 |
压栈32位标志寄存器 |
PUSHFD |
PXOR |
PXOR mm, mm/m64 |
0F EF /r |
不影响标志位 |
逻辑异或操作 |
|
PXOR xmm1,xmm2/m128 |
66 0F EF /r |
PXOR XMM6,XMM7 |
RCL |
RCL r/m8, 1 |
D0 /2 |
CF(或OF)被改变 |
带进位循环左移1次 |
RCL AL,1 |
RCL r/m8, CL |
D2 /2 |
带进位循环左移CL次 |
RCL AL,CL |
RCL r/m8, imm8 |
C0 /2 ib |
带进位循环左移imm8次 |
RCL AL,03 |
RCL r/m16, 1 |
D1 /2 |
带进位循环左移1次 |
RCL AX,1 |
RCL r/m16, CL |
D3 /2 |
带进位循环左移CL次 |
RCL AX,CL |
RCL r/m16, imm8 |
C1 /2 ib |
带进位循环左移imm8次 |
RCL AX,03 |
RCL r/m32, 1 |
D1 /2 |
带进位循环左移1次 |
RCL EAX,1 |
RCL r/m32, CL |
D3 /2 |
带进位循环左移CL次 |
RCL EAX,CL |
RCL r/m32, imm8 |
C1 /2 ib |
带进位循环左移imm8次 |
RCL EAX,03 |
RCR |
RCR r/m8, 1 |
D0 /3 |
CF(或OF)被改变 |
带进位循环右移1次 |
RCR AL,1 |
RCR r/m8, CL |
D2 /3 |
带进位循环右移CL次 |
RCR AL,CL |
RCR r/m8, imm8 |
C0 /3 ib |
带进位循环右移imm8次 |
RCR AL,03 |
RCR r/m16, 1 |
D1 /3 |
带进位循环右移1次 |
RCR AX,1 |
RCR r/m16, CL |
D3 /3 |
带进位循环右移CL次 |
RCR AX,CL |
RCR r/m16, imm8 |
C1 /3 ib |
带进位循环右移imm8次 |
RCR AX,03 |
RCR r/m32, 1 |
D1 /3 |
带进位循环右移1次 |
RCR EAX,1 |
RCR r/m32, CL |
D3 /3 |
带进位循环右移CL次 |
RCR EAX,CL |
RCR r/m32, imm8 |
C1 /3 ib |
带进位循环右移imm8次 |
RCR EAX,03 |
ROL |
ROL r/m8, 1 |
D0 /0 |
CF(或OF)被改变 |
循环左移1次 |
ROL AL,1 |
ROL r/m8, CL |
D2 /0 |
循环左移CL次 |
ROL AL,CL |
ROL r/m8, imm8 |
C0 /0 ib |
循环左移imm8次 |
ROL AL,03 |
ROL r/m16, 1 |
D1 /0 |
循环左移1次 |
ROL AX,1 |
ROL r/m16, CL |
D3 /0 |
循环左移CL次 |
ROL AX,CL |
ROL r/m16, imm8 |
C1 /0 ib |
循环左移imm8次 |
ROL AX,03 |
ROL r/m32, 1 |
D1 /0 |
循环左移1次 |
ROL EAX,1 |
ROL r/m32, CL |
D3 /0 |
循环左移CL次 |
ROL EAX,CL |
ROL r/m32, imm8 |
C1 /0 ib |
循环左移imm8次 |
ROL EAX,03 |
ROR |
ROR r/m8, 1 |
D0 /1 |
CF(或OF)被改变 |
循环右移1次 |
ROR AL,1 |
ROR r/m8, CL |
D2 /1 |
循环右移CL次 |
ROR AL,CL |
ROR r/m8, imm8 |
C0 /1 ib |
循环右移imm8次 |
ROR AL,03 |
ROR r/m16, 1 |
D1 /1 |
循环右移1次 |
ROR AX,1 |
ROR r/m16, CL |
D3 /1 |
循环右移CL次 |
ROR AX,CL |
ROR r/m16, imm8 |
C1 /1 ib |
循环右移imm8次 |
ROR AX,03 |
ROR r/m32, 1 |
D1 /1 |
循环右移1次 |
ROR EAX,1 |
ROR r/m32, CL |
D3 /1 |
循环右移CL次 |
ROR EAX,CL |
ROR r/m32, imm8 |
C1 /1 ib |
循环右移imm8次 |
ROR EAX,03 |
RDMSR |
RDMSR |
0F 32 |
不影响标志位 |
把ECX指定的模型专用寄存器内容送EDX:EAX |
RDMSR |
RDPMC |
RDPMC |
0F 33 |
不影响标志位 |
把ECX指定的性能监测计数器内容送EDX:EAX |
RDPMC |
RDTSC |
RDTSC |
0F 31 |
不影响标志位 |
读时间标记计数器到EDX:EAX |
RDTSC |
REP |
REP INS r/m8, DX |
F3 6C |
不影响标志位 |
从DX指定的端口读(E)CX个字节(BYTE)到ES:[(E)DI] |
|
REP INS r/m16, DX |
F3 6D |
从DX指定的端口读(E)CX个字(WORD)到ES:[(E)DI] |
|
REP INS r/m32, DX |
F3 6D |
从DX指定的端口读(E)CX个双字(DWORD)到ES:[(E)DI] |
|
REP MOVS m8, m8 |
F3 A4 |
连续字符串传送,每次传送1个字节,传送(E)CX次 |
REP MOVS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REP MOVS m16, m16 |
F3 A5 |
连续字符串传送,每次传送1个字,传送(E)CX次 |
REP MOVS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REP MOVS m32, m32 |
F3 A5 |
连续字符串传送,每次传送1个双字,传送(E)CX次 |
REP MOVS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REP OUTS DX,r/m8 |
F3 6E |
将DS:[(E)SI]处的(E)CX个字节输出到DX指定的端口 |
|
REP OUTS DX,r/m16 |
F3 6F |
将DS:[(E)SI]处的(E)CX个字输出到DX指定的端口 |
|
REP OUTS DX,r/m32 |
F3 6F |
将DS:[(E)SI]处的(E)CX个双字输出到DX指定的端口 |
|
REP LODS AL |
F3 AC |
将地址DS:[(E)SI]处的(E)CX个字节装入AL |
|
REP LODS AX |
F3 AD |
将地址DS:[(E)SI]处的(E)CX个字装入AX |
|
REP LODS EAX |
F3 AD |
将地址DS:[(E)SI]处的(E)CX个双字装入EAX |
|
REP STOS m8 |
F3 AA |
用AL填充地址ES:[(E)DI]处的(E)CX个字节 |
|
REP STOS m16 |
F3 AB |
用AX填充地址ES:[(E)DI]处的(E)CX个字 |
|
REP STOS m32 |
F3 AB |
用EAX填充地址ES:[(E)DI]处的(E)CX个双字 |
|
REPE |
REPE CMPS m8, m8 |
F3 A6 |
设置 AF CF OF PF SF ZF |
比较字符串,每次比较1个字节,直到不相等字节停止 |
REPE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPE CMPS m16, m16 |
F3 A7 |
比较字符串,每次比较1个字,直到不相等字停止 |
REPE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPE CMPS m32, m32 |
F3 A7 |
比较字符串,每次比较1个双字,直到不相等双字停止 |
REPE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPE SCAS m8 |
F3 AE |
扫描字符串ES:[(E)DI]中的AL字节值,遇到非AL值停止 |
REPE SCAS STRING1 |
REPE SCAS m16 |
F3 AF |
扫描字符串ES:[(E)DI]中的AX字值,遇到非AX值停止 |
REPE CMPS STRING1 |
REPE SCAS m32 |
F3 AF |
扫描字符串ES:[(E)DI]中的EAX双字值,遇到非EAX值停止 |
REPE CMPS STRING1 |
REPNE |
REPNE CMPS m8, m8 |
F2 A6 |
设置 AF CF OF PF SF ZF |
比较字符串,每次比较1个字节,直到相等字节停止 |
REPNE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNE CMPS m16, m16 |
F2 A7 |
比较字符串,每次比较1个字,直到相等字停止 |
REPNE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNE CMPS m32, m32 |
F2 A7 |
比较字符串,每次比较1个双字,直到相等双字停止 |
REPNE CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNE SCAS m8 |
F2 AE |
扫描字符串ES:[(E)DI]中的AL字节值,遇到AL值停止 |
REPNE SCAS STRING1 |
REPNE SCAS m16 |
F2 AF |
扫描字符串ES:[(E)DI]中的AX字值,遇到AX值停止 |
REPNE CMPS STRING1 |
REPNE SCAS m32 |
F2 AF |
扫描字符串ES:[(E)DI]中的EAX双字值,遇到EAX值停止 |
REPNE CMPS STRING1 |
REPZ |
REPZ CMPS m8, m8 |
F3 A6 |
设置 AF CF OF PF SF ZF |
比较字符串,每次比较1个字节,直到不相等字节停止 |
REPZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPZ CMPS m16, m16 |
F3 A7 |
比较字符串,每次比较1个字,直到不相等字停止 |
REPZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPZ CMPS m32, m32 |
F3 A7 |
比较字符串,每次比较1个双字,直到不相等双字停止 |
REPZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPZ SCAS m8 |
F3 AE |
扫描字符串ES:[(E)DI]中的AL字节值,遇到非AL值停止 |
REPZ SCAS STRING1 |
REPZ SCAS m16 |
F3 AF |
扫描字符串ES:[(E)DI]中的AX字值,遇到非AX值停止 |
REPZ CMPS STRING1 |
REPZ SCAS m32 |
F3 AF |
扫描字符串ES:[(E)DI]中的EAX双字值,遇到非EAX值停止 |
REPZ CMPS STRING1 |
REPNZ |
REPNZ CMPS m8, m8 |
F2 A6 |
设置 AF CF OF PF SF ZF |
比较字符串,每次比较1个字节,直到相等字节停止 |
REPNZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNZ CMPS m16, m16 |
F2 A7 |
比较字符串,每次比较1个字,直到相等字停止 |
REPNZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNZ CMPS m32, m32 |
F2 A7 |
比较字符串,每次比较1个双字,直到相等双字停止 |
REPNZ CMPS STRING1, STRING2 ;源串DS:[(E)SI],目的串:ES:[(E)DI] |
REPNZ SCAS m8 |
F2 AE |
扫描字符串ES:[(E)DI]中的AL字节值,遇到AL值停止 |
REPNZ SCAS STRING1 |
REPNZ SCAS m16 |
F2 AF |
扫描字符串ES:[(E)DI]中的AX字值,遇到AX值停止 |
REPNZ CMPS STRING1 |
REPNZ SCAS m32 |
F2 AF |
扫描字符串ES:[(E)DI]中的EAX双字值,遇到EAX值停止 |
REPNZ CMPS STRING1 |
RET |
RET |
C3 |
恢复压栈的标志位 |
子过程返回(Near) |
RET |
RET |
CB |
子过程返回(Far) |
RET |
RET imm16 |
C2 iw |
子过程返回(Near),并从堆栈弹出imm16字节 |
RET 08 |
RET imm16 |
CA iw |
子过程返回(Far),并从堆栈弹出imm16字节 |
RET 08 |
RSM |
RSM |
0F AA |
恢复所有标志位 |
从系统管理模式返回 |
RSM |
SAHF |
SAHF |
9E |
设置SF ZF AF PF CF |
装入AH到标志寄存器,格式:(SF:ZF:0:AF:0:PF:1:CF)←AH |
SAHF |
SAL |
SAL r/m8, 1 |
D0 /4 |
CF(或OF)被改变 |
算术左移1次(乘法:r/m8=r/m8*2) |
SAL AL,1 |
SAL r/m8, CL |
D2 /4 |
算术左移CL次(乘法:r/m8=r/m8*(2^CL)) |
SAL AL,CL |
SAL r/m8, imm8 |
C0 /4 ib |
算术左移imm8次(乘法:r/m8=r/m8*(2^imm8)) |
SAL AL,03 |
SAL r/m16, 1 |
D1 /4 |
算术左移1次(乘法:r/m16=r/m16*2) |
SAL AX,1 |
SAL r/m16, CL |
D3 /4 |
算术左移CL次(乘法:r/m16=r/m16*(2^CL)) |
SAL AX,CL |
SAL r/m16, imm8 |
C1 /4 ib |
算术左移imm8次(乘法:r/m16=r/m16*(2^imm8)) |
SAL AX,03 |
SAL r/m32, 1 |
D1 /4 |
算术左移1次(乘法:r/m32=r/m32*2) |
SAL EAX,1 |
SAL r/m32, CL |
D3 /4 |
算术左移CL次(乘法:r/m32=r/m32*(2^CL)) |
SAL EAX,CL |
SAL r/m32, imm8 |
C1 /4 ib |
算术左移imm8次(乘法:r/m32=r/m32*(2^imm8)) |
SAL EAX,03 |
SAR |
SAR r/m8, 1 |
D0 /7 |
CF(或OF)被改变 |
算术右移1次(有符号除法:r/m8=r/m8 / 2) |
SAR AL,1 |
SAR r/m8, CL |
D2 /7 |
算术右移CL次(有符号除法:r/m8=r/m8 / (2^CL)) |
SAR AL,CL |
SAR r/m8, imm8 |
C0 /7 ib |
算术右移imm8次(有符号除法:r/m8=r/m8 / (2^imm8)) |
SAR AL,03 |
SAR r/m16, 1 |
D1 /7 |
算术右移1次(有符号除法:r/m16=r/m16 / 2) |
SAR AX,1 |
SAR r/m16, CL |
D3 /7 |
算术右移CL次(有符号除法:r/m16=r/m16 / (2^CL)) |
SAR AX,CL |
SAR r/m16, imm8 |
C1 /7 ib |
算术右移imm8次(有符号除法:r/m16=r/m16 / (2^imm8)) |
SAR AX,03 |
SAR r/m32, 1 |
D1 /7 |
算术右移1次(有符号除法:r/m32=r/m32 / 2) |
SAR EAX,1 |
SAR r/m32, CL |
D3 /7 |
算术右移CL次(有符号除法:r/m32=r/m32 / (2^CL)) |
SAR EAX,CL |
SAR r/m32, imm8 |
C1 /7 ib |
算术右移imm8次(有符号除法:r/m32=r/m32 / (2^imm8)) |
SAR EAX,03 |
SHL |
SHL r/m8, 1 |
D0 /4 |
CF(或OF)被改变 |
逻辑左移1次(乘法:r/m8=r/m8*2) |
SHL AL,1 |
SHL r/m8, CL |
D2 /4 |
逻辑左移CL次(乘法:r/m8=r/m8*(2^CL)) |
SHL AL,CL |
SHL r/m8, imm8 |
C0 /4 ib |
逻辑左移imm8次(乘法:r/m8=r/m8*(2^imm8)) |
SHL AL,03 |
SHL r/m16, 1 |
D1 /4 |
逻辑左移1次(乘法:r/m16=r/m16*2) |
SHL AX,1 |
SHL r/m16, CL |
D3 /4 |
逻辑左移CL次(乘法:r/m16=r/m16*(2^CL)) |
SHL AX,CL |
SHL r/m16, imm8 |
C1 /4 ib |
逻辑左移imm8次(乘法:r/m16=r/m16*(2^imm8)) |
SHL AX,03 |
SHL r/m32, 1 |
D1 /4 |
逻辑左移1次(乘法:r/m32=r/m32*2) |
SHL EAX,1 |
SHL r/m32, CL |
D3 /4 |
逻辑左移CL次(乘法:r/m32=r/m32*(2^CL)) |
SHL EAX,CL |
SHL r/m32, imm8 |
C1 /4 ib |
逻辑左移imm8次(乘法:r/m32=r/m32*(2^imm8)) |
SHL EAX,03 |
SHR |
SHR r/m8, 1 |
D0 /5 |
CF(或OF)被改变 |
逻辑右移1次(无符号除法:r/m8=r/m8 / 2) |
SHR AL,1 |
SHR r/m8, CL |
D2 /5 |
逻辑右移CL次(无符号除法:r/m8=r/m8 / (2^CL)) |
SHR AL,CL |
SHR r/m8, imm8 |
C0 /5 ib |
逻辑右移imm8次(无符号除法:r/m8=r/m8 / (2^imm8)) |
SHR AL,03 |
SHR r/m16, 1 |
D1 /5 |
逻辑右移1次(无符号除法:r/m16=r/m16 / 2) |
SHR AX,1 |
SHR r/m16, CL |
D3 /5 |
逻辑右移CL次(无符号除法:r/m16=r/m16 / (2^CL)) |
SHR AX,CL |
SHR r/m16, imm8 |
C1 /5 ib |
逻辑右移imm8次(无符号除法:r/m16=r/m16 / (2^imm8)) |
SHR AX,03 |
SHR r/m32, 1 |
D1 /5 |
逻辑右移1次(无符号除法:r/m32=r/m32 / 2) |
SHR EAX,1 |
SHR r/m32, CL |
D3 /5 |
逻辑右移CL次(无符号除法:r/m32=r/m32 / (2^CL)) |
SHR EAX,CL |
SHR r/m32, imm8 |
C1 /5 ib |
逻辑右移imm8次(无符号除法:r/m32=r/m32 / (2^imm8)) |
SHR EAX,03 |
SBB |
SBB AL, imm8 |
1C ib |
设置 AF CF OF SF PF ZF |
带借位减法 |
SBB AL, 1F |
SBB AX, imm16 |
1D iw |
SBB AX, 4F80 |
SBB EAX, imm32 |
1D id |
SBB EAX, 00004F80 |
SBB r/m8, imm8 |
80 /3 ib |
SBB BYTE PTR [006387EA], 39 |
SBB r/m16,imm16 |
81 /3 iw |
SBB WORD PTR [006387EA], 1039 |
SBB r/m32,imm32 |
81 /3 id |
SBB DWORD PTR [006387EA], 00001039 |
SBB r/m16,imm8 |
83 /3 ib |
SBB WORD PTR [006387EA], 39 |
SBB r/m32,imm8 |
83 /3 ib |
SBB DWORD PTR [006387EA], 39 |
SBB r/m8,r8 |
18 /r |
SBB [006387EA], AL |
SBB r/m16,r16 |
19 /r |
SBB [006387EA], AX |
SBB r/m32,r32 |
19 / r |
SBB [006387EA], EAX |
SBB r8,r/m8 |
1A /r |
SBB AL, [006387EA] |
SBB r16,r/m16 |
1B /r |
SBB AX, [006387EA] |
SBB r32,r/m32 |
1B /r |
SBB EAX, [006387EA] |
SCAS |
SCAS m8 |
AE |
设置OF SF ZF AF PF CF |
用AL中的字节值扫描字符串ES:(E)DI,然后设置标志位 |
|
SCAS m16 |
AF |
用AX中的字值扫描字符串ES:(E)DI,然后设置标志位 |
|
SCAS m32 |
AF |
用EAX中的双字值扫描字符串ES:(E)DI,然后设置标志位 |
|
SCASB |
SCASB |
AE |
设置OF SF ZF AF PF CF |
用AL中的字节值扫描字符串ES:(E)DI,然后设置标志位 |
SCASB |
SCASW |
SCASW |
AF |
设置OF SF ZF AF PF CF |
用AX中的字值扫描字符串ES:(E)DI,然后设置标志位 |
SCASW |
SCASD |
SCASD |
AF |
设置OF SF ZF AF PF CF |
用EAX中的双字值扫描字符串ES:(E)DI,然后设置标志位 |
SCASD |
SETcc |
SETA r/m8 |
0F 97 |
高于(CF=0 and ZF=0) |
条件设置指令,如果条件满足则r/m8=1,否则r/m8=0 |
SETA AL |
SETAE r/m8 |
0F 93 |
高于等于(CF=0) |
SETAE AL |
SETB r/m8 |
0F 92 |
低于(CF=1) |
SETB AL |
SETBE r/m8 |
0F 96 |
低于等于(CF=1 or ZF=1) |
SETBE AL |
SETC r/m8 |
0F 92 |
有进位(CF=1) |
SETC AL |
SETE r/m8 |
0F 94 |
等于(ZF=1) |
SETE AL |
SETG r/m8 |
0F 9F |
大于(ZF=0 and SF=OF) |
SETG AL |
SETGE r/m8 |
0F 9D |
大于等于(SF=OF) |
SETGE AL |
SETL r/m8 |
0F 9C |
小于(SF<>OF) |
SETL AL |
SETLE r/m8 |
0F 9E |
小于等于(ZF=1 or SF<>OF) |
SETLE AL |
SETNA r/m8 |
0F 96 |
不高于(CF=1 or ZF=1) |
SETNA AL |
SETNAE r/m8 |
0F 92 |
不高等于(CF=1) |
SETNAE AL |
SETNB r/m8 |
0F 93 |
不低于(CF=0) |
SETNB AL |
SETNBE r/m8 |
0F 97 |
不低等于(CF=0 and ZF=0) |
SETNBE AL |
SETNC r/m8 |
0F 93 |
无进位(CF=0) |
SETNC AL |
SETNE r/m8 |
0F 95 |
不等于(ZF=0) |
SETNE AL |
SETNG r/m8 |
0F 9E |
不大于(ZF=1 or SF<>OF) |
SETNG AL |
SETNGE r/m8 |
0F 9C |
不大等于(SF<>OF) |
SETNGE AL |
SETNL r/m8 |
0F 9D |
不小于(SF=OF) |
SETNL AL |
SETNLE r/m8 |
0F 9F |
不小等于(ZF=0 and SF=OF) |
SETNLE AL |
SETNO r/m8 |
0F 91 |
无溢出(OF=0) |
SETNO AL |
SETNP r/m8 |
0F 9B |
非偶数(PF=0) |
SETNP AL |
SETNS r/m8 |
0F 99 |
非负数(SF=0) |
SETNS AL |
SETNZ r/m8 |
0F 95 |
非零(ZF=0) |
SETNZ AL |
SETO r/m8 |
0F 90 |
溢出(OF=1) |
SETO AL |
SETP r/m8 |
0F 9A |
偶数(PF=1) |
SETP AL |
SETPE r/m8 |
0F 9A |
偶数(PF=1) |
SETPE AL |
SETPO r/m8 |
0F 9B |
奇数(PF=0) |
SETPO AL |
SETS r/m8 |
0F 98 |
负数(SF=1) |
SETS AL |
SETZ r/m8 |
0F 94 |
为零(ZF=1) |
SETZ AL |
SGDT |
SGDT m |
0F 01 /0 |
不影响标志位 |
保存全局描述符表寄存器到内存m处 |
SGDT [EBP] |
SIDT |
SIDT m |
0F 01 /1 |
不影响标志位 |
保存中断描述符表寄存器到内存m处 |
SIDT [ESI] |
SLDT |
SLDT r/m16 |
0F 00 /0 |
不影响标志位 |
保存LDT选择子到r/m16 |
SLDT SI |
SLDT r/m32 |
保存LDT选择子到r/m32 |
SLDT ESI |
SHLD |
SHLD r/m16, r16, imm8 |
0F A4 |
设置CF SF ZF PF AF OF |
双精度左移 |
SHLD AX,BX,3 |
SHLD r/m16, r16, CL |
0F A5 |
SHLD AX,BX,CL |
SHLD r/m32, r32, imm8 |
0F A4 |
SHLD EAX,EBX,3 |
SHLD r/m32, r32, CL |
0F A5 |
SHLD EAX,EBX,CL |
SHRD |
SHRD r/m16, r16, imm8 |
0F AC |
设置CF SF ZF PF AF OF |
双精度右移 |
SHRD AX,BX,3 |
SHRD r/m16, r16, CL |
0F AD |
SHRD AX,BX,CL |
SHRD r/m32, r32, imm8 |
0F AC |
SHRD EAX,EBX,3 |
SHRD r/m32, r32, CL |
0F AD |
SHRD EAX,EBX,CL |
SMSW |
SMSW r/m16 |
0F 01 /4 |
不影响标志位 |
保存机器状态字到r/m16 |
SMSW SI |
SMSW r32/m16 |
保存机器状态字到r32/m16 |
SMSW ESI |
STC |
STC |
F9 |
设置CF |
设置CF=1 |
STC |
STD |
STD |
FD |
设置DF |
设置DF=1 |
STD |
STI |
STI |
FB |
设置IF |
设置IF=1,开中断 |
STI |
STOS |
STOS m8 |
AA |
不影响标志位 |
将AL保存到地址ES:(E)DI |
|
STOS m16 |
AB |
将AX保存到地址ES:(E)DI |
|
STOS m32 |
AB |
将EAX保存到地址ES:(E)DI |
|
STOSB |
STOSB |
AA |
不影响标志位 |
将AL保存到地址ES:(E)DI |
STOSB |
STOSW |
STOSW |
AB |
不影响标志位 |
将AX保存到地址ES:(E)DI |
STOSW |
STOSD |
STOSD |
AB |
不影响标志位 |
将EAX保存到地址ES:(E)DI |
STOSD |
STR |
STR r/m16 |
0F 00 /1 |
不影响标志位 |
保存任务寄存器到r/m16 |
STR AX |
SUB |
SUB AL, imm8 |
2C ib |
设置 AF CF OF SF PF ZF |
减法 |
SUB AL, 1F |
SUB AX, imm16 |
2D iw |
SUB AX, 4F80 |
SUB EAX, imm32 |
2D id |
SUB EAX, 00004F80 |
SUB r/m8, imm8 |
80 /5 ib |
SUB BYTE PTR [006387EA], 39 |
SUB r/m16,imm16 |
81 /5 iw |
SUB WORD PTR [006387EA], 1039 |
SUB r/m32,imm32 |
81 /5 id |
SUB DWORD PTR [006387EA], 00001039 |
SUB r/m16,imm8 |
83 /5 ib |
SUB WORD PTR [006387EA], 39 |
SUB r/m32,imm8 |
83 /5 ib |
SUB DWORD PTR [006387EA], 39 |
SUB r/m8,r8 |
28 /r |
SUB [006387EA], AL |
SUB r/m16,r16 |
29 /r |
SUB [006387EA], AX |
SUB r/m32,r32 |
29 / r |
SUB [006387EA], EAX |
SUB r8,r/m8 |
2A /r |
SUB AL, [006387EA] |
SUB r16,r/m16 |
2B /r |
SUB AX, [006387EA] |
SUB r32,r/m32 |
2B /r |
SUB EAX, [006387EA] |
SYSENTER |
SYSENTER |
0F 34 |
设置VM IF RF |
快速调用系统0级过程(用于系统3级应用程序),配合SYSEXIT使用 |
|
SYSEXIT |
SYSEXIT |
0F 35 |
不影响标志位 |
快速返回到系统3级用户代码,配合SYSENTER使用 |
|
TEST |
TEST AL, imm8 |
A8 ib |
设置 CF OF PF SF ZF |
逻辑与测试,但是不改变目的操作数,只设置相关标志位 |
TEST AL, 1F |
TEST AX, imm16 |
A9 iw |
TEST AX, 4F80 |
TEST EAX, imm32 |
A9 id |
TEST EAX, 00004F80 |
TEST r/m8, imm8 |
F6 /0 ib |
TEST BYTE PTR [006387EA], 39 |
TEST r/m16,imm16 |
F7 /0 ib |
TEST WORD PTR [006387EA], 1039 |
TEST r/m32,imm32 |
F7 /0 ib |
TEST DWORD PTR [006387EA], 00001039 |
TEST r/m8,r8 |
84 /r |
TEST BYTE PTR [006387EA], AL |
TEST r/m16,r16 |
85 /r |
TEST WORD PTR [006387EA], AX |
TEST r/m32,r32 |
85 /r |
TEST DWORD PTR [006387EA], EAX |
UD2 |
UD2 |
0F 0B |
不影响标志位 |
产生无效代码异常,用于软件测试 |
UD2 |
VERR |
VERR |
0F 00 /4 |
设置ZF |
如果目标选择子对应段可读,则ZF置1 |
VERR |
VERW |
VERW |
0F 00 /5 |
设置ZF |
如果目标选择子对应段可写,则ZF置1 |
VERW |
WAIT |
WAIT |
9B |
C0,C1, C2, C3 未定义 |
等待,检查非屏蔽浮点异常 |
WAIT |
WBINVD |
WBINVD |
0F 09 |
不影响标志位 |
写回内部CACHE并使之失效 |
WBINVD |
WRMSR |
WRMSR |
0F 30 |
不影响标志位 |
把EDX:EAX的内容写入ECX指定的模型专用寄存器 |
WRMSR |
XADD |
XADD r/m8, r8 |
0F C0 /r |
设置 CF PF AF SF ZF OF |
目的操作数和源操作数相加,并使源操作数保存目的操作数的值 |
XADD AL,BL |
XADD r/m16, r16 |
0F C1 /r |
XADD AX,BX |
XADD r/m32, r32 |
0F C1 /r |
XADD EAX,EBX |
XCHG |
XCHG AX, r16 |
90+rw |
不影响标志位 |
目的操作数和源操作数的值交换 |
XCHG AX,BX |
XCHG r16, AX |
90+rw |
XCHG CX,AX |
XCHG EAX, r32 |
90+rd |
XCHG EAX,EBX |
XCHG r32, EAX |
90+rd |
XCHG ECX,EAX |
XCHG r/m8, r8 |
86 /r |
XCHG [006387EA],BL |
XCHG r8, r/m8 |
86 /r |
XCHG AX,[006387EA] |
XCHG r/m16, r16 |
87 /r |
XCHG [006387EA],BX |
XCHG r16, r/m16 |
87 /r |
XCHG AX,[006387EA] |
XCHG r/m32, r32 |
87 /r |
XCHG [006387EA],EBX |
XCHG r32, r/m32 |
87 /r |
XCHG EAX,[006387EA] |
XLAT |
XLAT m8 |
D7 |
不影响标志位 |
换码:DS:[(E)BX + unsigned AL]←AL |
|
XLATB |
XLATB |
D7 |
不影响标志位 |
换码:DS:[(E)BX + unsigned AL]←AL |
XLATB |
XOR |
XOR AL, imm8 |
34 ib |
设置 CF OF PF SF ZF |
逻辑异或 |
XOR AL, 1F |
XOR AX, imm16 |
35 iw |
XOR AX, 4F80 |
XOR EAX, imm32 |
35 id |
XOR EAX, 00004F80 |
XOR r/m8, imm8 |
80 /6 ib |
XOR BYTE PTR [006387EA], 39 |
XOR r/m16,imm16 |
81 /6 iw |
XOR WORD PTR [006387EA], 1039 |
XOR r/m32,imm32 |
81 /6 id |
XOR DWORD PTR [006387EA], 00001039 |
XOR r/m16,imm8 |
83 /6 ib |
XOR WORD PTR [006387EA], 39 |
XOR r/m32,imm8 |
83 /6 ib |
XOR DWORD PTR [006387EA], 39 |
XOR r/m8,r8 |
30 /r |
XOR BYTE PTR [006387EA], AL |
XOR r/m16,r16 |
31 /r |
XOR WORD PTR [006387EA], AX |
XOR r/m32,r32 |
31 /r |
XOR DWORD PTR [006387EA], EAX |
XOR r8,r/m8 |
32 /r |
XOR AL, [006387EA] |
XOR r16,r/m16 |
33 /r |
XOR AX, [006387EA] |
XOR r32,r/m32 |
33 /r |
XOR EAX, [006387EA] |