奔腾处理器指令速查手册(包括协处理器和cpu常用指令) IE编程框架
程序员文章站
2022-03-28 14:41:51
...
ES: | ES: | 26 | ES段跨越前缀 | ||
CS: | CS: | 2E | CS段跨越前缀 | ||
SS: | SS: | 36 | SS段跨越前缀 | ||
DS: | DS: | 3E | DS段跨越前缀 | ||
FS: | FS: | 64 | FS段跨越前缀 | ||
GS: | GS: | 65 | GS段跨越前缀 | ||
Opsize: | Opsize: | 66 | 操作数类型跨越前缀 | ||
Address: | Address: | 67 | 地址类型跨越前缀 |
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),执行一次出栈操作 | <t
转自无花果编程