指令名称 | 指令形式 | 机器码 | 标志位(设置/测试) | 说 明 | 应用举例 |
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 |
| 地址类型跨越前缀 |
|
下表中所使用符号的说明
/digit -- 0到7之间的数字,用于只使用寄存器/内存操作数的指令的 ModR/M字节,作为指令扩展码
/r -- 表明指令的ModR/M字节既包含寄存器操作数,又包含内存操作数
cb -- 相对于下一条指令的字节偏移值
cw -- 相对于下一条指令的字偏移值
cd -- 相对于下一条指令的双字偏移值
cp -- 绝对远指针
ib, iw, id -- ib:1字节立即数;iw:2字节立即数;id:4字节立即数
+rb, +rw, +rd -- 寄存器代码,从0到7,被加到操作数字节:
rb rw rd ---------------------- AL = 0 AX = 0 EAX = 0 CL = 1 CX = 1 ECX = 1 DL = 2 DX = 2 EDX = 2 BL = 3 BX = 3 EBX = 3 AH = 4 SP = 4 ESP = 4 CH = 5 BP = 5 EBP = 5 DH = 6 SI = 6 ESI = 6 BH = 7 DI = 7 EDI = 7
+i -- 用于浮点指令的数字,表示ST(i)之一
rel8 -- 8位相对地址,范围:-128 ~ 127
rel16, rel32 -- 同一段内的相对地址
ptr16:16,ptr16:32 -- 远指针,典型应用于跨段指令
r8 -- 8位通用寄存器
r16 -- 16位通用寄存器
r32 -- 32位通用寄存器
imm8 -- 8位立即数
imm16 -- 16位立即数
imm32 -- 32位立即数
r/m8 -- 8位通用寄存器或内存字节
r/m16 -- 16位通用寄存器或内存字节
r/m32 -- 32位通用寄存器或内存字节
m -- 16位或32位内存操作数
m8 -- 由DS:(E)SI或ES:(E)DI指向的内存字节
m16 -- 由DS:(E)SI或ES:(E)DI指向的内存字
m32 -- 由DS:(E)SI或ES:(E)DI指向的内存双字
m64 -- 内存四字,仅用于CMPXCHG8B指令
m16:16, m16:32 -- 包含两个数据的内存指针操作数,引号前面的是段地址,引号后面的是偏移地址
m16&32, m16&16, m32&32 -- 包含数据对的内存操作数
moffs8, moffs16, moffs32 -- 分别表示类型为字节、字、双字的内存变量
Sreg -- 段寄存器,ES=0, CS=1, SS=2, DS=3, FS=4, GS=5
m32real, m64real, m80real -- 单精度、双精度、扩展双精度内存浮点操作数
m16int, m32int, m64int -- 字型、双字型、四字型内存整数操作数
ST or ST(0) -- FPU寄存器堆栈栈顶元素
ST(i) -- 从FPU寄存器堆栈栈顶数起的第i个元素,i = 0,1,2,3,4,5,6,7
mm -- MMX寄存器,从MM0到MM7
mm/m32 -- MMX寄存器的低32位或32位内存操作数
mm/m64 -- MMX寄存器或64位内存操作数
xmm -- 128位XMM寄存器,从XMM0到XMM7
xmm/m32 -- XMM寄存器或32位内存操作数
xmm/m64 -- XMM寄存器或64位内存操作数
xmm/m128 -- XMM寄存器或128位内存操作数
|
|
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),执行一次出栈操作 |
|
HLT | F4 | 不影响标志位 | 系统进入暂停状态 | HLT | |
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 | 有符号乘法: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 |
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 | 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 | 不影响标志位 | 装入任务寄存器 |
|
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 | 无符号乘法: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 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 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 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 |
|
|