汇编指令速查
https://www.cnblogs.com/findumars/p/3498714.html
GAS中每个操作都是有一个字符的后缀,表明操作数的大小。
C声明 |
GAS后缀 |
大小(字节) |
char |
b |
1 |
short |
w |
2 |
(unsigned) int / long / char* |
l |
4 |
float |
s |
4 |
double |
l |
8 |
long double |
t |
10/12 |
注意:GAL使用后缀“l”同时表示4字节整数和8字节双精度浮点数,这不会产生歧义因为浮点数使用的是完全不同的指令和寄存器。
操作数格式:
格式 |
操作数值 |
名称 |
样例(GAS = C语言) |
$Imm |
Imm |
立即数寻址 |
$1 = 1 |
Ea |
R[Ea] |
寄存器寻址 |
%eax = eax |
Imm |
M[Imm] |
绝对寻址 |
0x104 = *0x104 |
(Ea) |
M[R[Ea]] |
间接寻址 |
(%eax)= *eax |
Imm(Ea) |
M[Imm+R[Ea]] |
(基址+偏移量)寻址 |
4(%eax) = *(4+eax) |
(Ea,Eb) |
M[R[Ea]+R[Eb]] |
变址 |
(%eax,%ebx) = *(eax+ebx) |
Imm(Ea,Eb) |
M[Imm+R[Ea]+R[Eb]] |
寻址 |
9(%eax,%ebx)= *(9+eax+ebx) |
(,Ea,s) |
M[R[Ea]*s] |
伸缩化变址寻址 |
(,%eax,4)= *(eax*4) |
Imm(,Ea,s) |
M[Imm+R[Ea]*s] |
伸缩化变址寻址 |
0xfc(,%eax,4)= *(0xfc+eax*4) |
(Ea,Eb,s) |
M(R[Ea]+R[Eb]*s) |
伸缩化变址寻址 |
(%eax,%ebx,4) = *(eax+ebx*4) |
Imm(Ea,Eb,s) |
M(Imm+R[Ea]+R[Eb]*s) |
伸缩化变址寻址 |
8(%eax,%ebx,4) = *(8+eax+ebx*4) |
注:M[xx]表示在存储器中xx地址的值,R[xx]表示寄存器xx的值,这种表示方法将寄存器、内存都看出一个大数组的形式。
数据传送指令:
指令 |
效果 |
描述 |
movl S,D |
D <– S |
传双字 |
movw S,D |
D <– S |
传字 |
movb S,D |
D <– S |
传字节 |
movsbl S,D |
D <– 符号扩展S |
符号位填充(字节->双字) |
movzbl S,D |
D <– 零扩展S |
零填充(字节->双字) |
pushl S |
R[%esp] <– R[%esp] – 4; M[R[%esp]] <– S |
压栈 |
popl D |
D <– M[R[%esp]]; R[%esp] <– R[%esp] + 4; |
出栈 |
注:均假设栈往低地址扩展。
算数和逻辑操作地址:
指令 |
效果 |
描述 |
leal S,D |
D = &S |
movl地版,S地址入D,D仅能是寄存器 |
incl D |
D++ |
加1 |
decl D |
D– |
减1 |
negl D |
D = -D |
取负 |
notl D |
D = ~D |
取反 |
addl S,D |
D = D + S |
加 |
subl S,D |
D = D – S |
减 |
imull S,D |
D = D*S |
乘 |
xorl S,D |
D = D ^ S |
异或 |
orl S,D |
D = D | S |
或 |
andl S,D |
D = D & S |
与 |
sall k,D |
D = D << k |
左移 |
shll k,D |
D = D << k |
左移(同sall) |
sarl k,D |
D = D >> k |
算数右移 |
shrl k,D |
D = D >> k |
逻辑右移 |
特殊算术操作:
指令 |
效果 |
描述 |
imull S |
R[%edx]:R[%eax] = S * R[%eax] |
无符号64位乘 |
mull S |
R[%edx]:R[%eax] = S * R[%eax] |
有符号64位乘 |
cltd S |
R[%edx]:R[%eax] = 符号位扩展R[%eax] |
转换为4字节 |
idivl S |
R[%edx] = R[%edx]:R[%eax] % S; R[%eax] = R[%edx]:R[%eax] / S; |
有符号除法,保存余数和商 |
divl S |
R[%edx] = R[%edx]:R[%eax] % S; R[%eax] = R[%edx]:R[%eax] / S; |
无符号除法,保存余数和商 |
注:64位数通常存储为,高32位放在edx,低32位放在eax。
条件码:
条件码寄存器描述了最近的算数或逻辑操作的属性。
CF:进位标志,最高位产生了进位,可用于检查无符号数溢出。
OF:溢出标志,二进制补码溢出——正溢出或负溢出。
ZF:零标志,结果为0。
SF:符号标志,操作结果为负。
比较指令:
指令 |
基于 |
描述 |
cmpb S2,S1 |
S1 – S2 |
比较字节,差关系 |
testb S2,S1 |
S1 & S2 |
测试字节,与关系 |
cmpw S2,S1 |
S1 – S2 |
比较字,差关系 |
testw S2,S1 |
S1 & S2 |
测试字,与关系 |
cmpl S2,S1 |
S1 – S2 |
比较双字,差关系 |
testl S2,S1 |
S1 & S2 |
测试双字,与关系 |
访问条件码指令:
指令 |
同义名 |
效果 |
设置条件 |
sete D |
setz |
D = ZF |
相等/零 |
setne D |
setnz |
D = ~ZF |
不等/非零 |
sets D |
|
D = SF |
负数 |
setns D |
|
D = ~SF |
非负数 |
setg D |
setnle |
D = ~(SF ^OF) & ZF |
大于(有符号>) |
setge D |
setnl |
D = ~(SF ^OF) |
小于等于(有符号>=) |
setl D |
setnge |
D = SF ^ OF |
小于(有符号<) |
setle D |
setng |
D = (SF ^ OF) | ZF |
小于等于(有符号<=) |
seta D |
setnbe |
D = ~CF & ~ZF |
超过(无符号>) |
setae D |
setnb |
D = ~CF |
超过或等于(无符号>=) |
setb D |
setnae |
D = CF |
低于(无符号<) |
setbe D |
setna |
D = CF | ZF |
低于或等于(无符号<=) |
跳转指令:
指令 |
同义名 |
跳转条件 |
描述 |
jmp Label |
|
1 |
直接跳转 |
jmp *Operand |
|
1 |
间接跳转 |
je Label |
jz |
ZF |
等于/零 |
jne Label |
jnz |
~ZF |
不等/非零 |
js Label |
|
SF |
负数 |
jnz Label |
|
~SF |
非负数 |
jg Label |
jnle |
~(SF^OF) & ~ZF |
大于(有符号>) |
jge Label |
jnl |
~(SF ^ OF) |
大于等于(有符号>=) |
jl Label |
jnge |
SF ^ OF |
小于(有符号<) |
jle Label |
jng |
(SF ^ OF) | ZF |
小于等于(有符号<=) |
ja Label |
jnbe |
~CF & ~ZF |
超过(无符号>) |
jae Label |
jnb |
~CF |
超过或等于(无符号>=) |
jb Label |
jnae |
CF |
低于(无符号<) |
jbe Label |
jna |
CF | ZF |
低于或等于(无符号<=) |
转移控制指令:(函数调用):
指令 |
描述 |
call Label |
过程调用,返回地址入栈,跳转到调用过程起始处,返回地址是call后面那条指令的地址 |
call *Operand |
|
leave |
为返回准备好栈,为ret准备好栈,主要是弹出函数内的栈使用及%ebp |
用GCC在C中潜入汇编代码:
asm( code-string [:output-list [ : input-list [ :overwrite-list]]]);
注意,后面的参数(如overwrite-list)如果为空则不要相应的“:”,而如果前面参数(如output-list)为空则需要用“:”占位。
如:
asm (“…”
: //output需要占位
: “r” (src) //后面的Overwrites不能写,我测试的结果是写了编译不过
};
如:
Int ok_umul(unsigned x,unsigned y,unsigned *dest)
{
int result;
asm(“movl %2 , %%eax; mull %3; movl %%eax,%0;
setae %dl; movzbl %%dl,%1”
: “=r” (*dest) , “=r” (result) //output
: “r” (x) , “r” (y) //inputs
: “%ebx” , “%edx” //Overwrites
);
return result;
}
我们用%0–%n表示输入的参数,”r”表示整数寄存器,”=”表示对其进行了赋值。%eax要写成%%eax,这是c语言字符串的规则,别忘了code-string就是一个c语言的字符串。
汇编指令速查
指令 | 功能 |
---|---|
AAA | 调整加 |
AAD | 调整除 |
AAM | 调整乘 |
AAS | 调整减 |
ADC | 进位加 |
ADD | 加 |
AND | 与 |
ARPL | 调整优先级 |
BOUND | 检查数组 |
BSF | 位右扫描 |
BSR | 位左扫描 |
BSWAP | 交换字节 |
BT | 位测试 |
BTC | 位测试求反 |
BTR | 位测试清零 |
BTS | 位测试置一 |
CALL | 过程调用 |
CBW | 转换字节 |
CDQ | 转换双字 |
CLC | 进位清零 |
CLD | 方向清零 |
CLI | 中断清零 |
CLTS | 任务清除 |
CMC | 进位求反 |
CMOVA | 高于传送 |
CMOVB | 低于传送 |
CMOVE | 相等传送 |
CMOVG | 大于传送 |
CMOVL | 小于传送 |
CMOVNA | 不高于传送 |
CMOVNB | 不低于传送 |
CMOVNE | 不等传送 |
CMOVNG | 不大于传送 |
CMOVNL | 不小于传送 |
CMOVNO | 不溢出传送 |
CMOVNP | 非奇偶传送 |
CMOVNS | 非负传送 |
CMOVO | 溢出传送 |
CMOVP | 奇偶传送 |
CMOVS | 负号传送 |
CMP | 比较 |
CMPSB | 比较字节串 |
CMPSD | 比较双字串 |
CMPSW | 比较字串 |
CMPXCHG | 比较交换 |
CMPXCHG486 | 比较交换486 |
CMPXCHG8B | 比较交换8字节 |
CPUID | CPU标识 |
CWD | 转换字 |
CWDE | 扩展字 |
DAA | 调整加十 |
DAS | 调整减十 |
DEC | 减一 |
DIV | 除 |
ENTER | 建立堆栈帧 |
HLT | 停 |
IDIV | 符号整除 |
IMUL | 符号乘法 |
IN | 端口输入 |
INC | 加一 |
INSB | 端口输入字节串 |
INSD | 端口输入双字串 |
INSW | 端口输入字串 |
JA | 高于跳转 |
JB | 低于跳转 |
JBE | 不高于跳转 |
JCXZ | 计数一六零跳转 |
JE | 相等跳转 |
JECXZ | 计数三二零跳转 |
JG | 大于跳转 |
JL | 小于跳转 |
JMP | 跳转 |
JMPE | 跳转扩展 |
JNB | 不低于跳转 |
JNE | 不等跳转 |
JNG | 不大于跳转 |
JNL | 不小于跳转 |
JNO | 不溢出跳转 |
JNP | 非奇偶跳转 |
JNS | 非负跳转 |
JO | 溢出跳转 |
JP | 奇偶跳转 |
JS | 负号跳转 |
LAHF | 加载标志低八 |
LAR | 加载访问权限 |
LDS | 加载数据段 |
LEA | 加载有效地址 |
LEAVE | 清除过程堆栈 |
LES | 加载附加段 |
LFS | 加载标志段 |
LGDT | 加载全局描述符 |
LGS | 加载全局段 |
LIDT | 加载中断描述符 |
LMSW | 加载状态字 |
LOADALL | 加载所有 |
LOADALL286 | 加载所有286 |
LOCK | 锁 |
LODSB | 加载源变址字节串 |
LODSD | 加载源变址双字串 |
LODSW | 加载源变址字串 |
LOOP | 计数循环 |
LOOPE | 相等循环 |
LOOPNE | 不等循环 |
LOOPNZ | 非零循环 |
LOOPZ | 为零循环 |
LSL | 加载段界限 |
LSS | 加载堆栈段 |
LTR | 加载任务 |
MONITOR | 监视 |
MOV | 传送 |
MOVSB | 传送字节串 |
MOVSD | 传送双字串 |
MOVSW | 传送字串 |
MOVSX | 符号传送 |
MOVZX | 零传送 |
MUL | 乘 |
MWAIT | |
NEG | 求补 |
NOP | 空 |
NOT | 非 |
OR | 或 |
OUT | 端口输出 |
OUTSB | 端口输出字节串 |
OUTSD | 端口输出双字串 |
OUTSW | 端口输出字串 |
POP | 出栈 |
POPA | 全部出栈 |
POPF | 标志出栈 |
PUSH | 压栈 |
PUSHA | 全部压栈 |
PUSHF | 标志压栈 |
RCL | 进位循环左移 |
RCR | 进位循环右移 |
RDMSR | 读专用模式 |
RDPMC | 读执行监视计数 |
RDSHR | |
RDTSC | 读时间戳计数 |
REP | 重复 |
REPE | 相等重复 |
REPNE | 不等重复 |
RET | 过程返回 |
RETF | 远过程返回 |
RETN | 近过程返回 |
ROL | 循环左移 |
ROR | 循环右移 |
RSM | 恢复系统管理 |
SAHF | 恢复标志低八 |
SAL | 算术左移 |
SALC | |
SAR | 算术右移 |
SBB | 借位减 |
SCASB | 扫描字节串 |
SCASD | 扫描双字串 |
SCASW | 扫描字串 |
SETA | 高于置位 |
SETB | 低于置位 |
SETE | 相等置位 |
SETG | 大于置位 |
SETL | 小于置位 |
SETNA | 不高于置位 |
SETNB | 不低于置位 |
SETNE | 不等置位 |
SETNG | 不大于置位 |
SETNL | 不小于置位 |
SETNO | 不溢出置位 |
SETNP | 非奇偶置位 |
SETNS | 非负置位 |
SETO | 溢出置位 |
SETP | 奇偶置位 |
SETS | 负号置位 |
SGDT | 保存全局描述符 |
SHL | 逻辑左移 |
SHLD | 双精度左移 |
SHR | 逻辑右移 |
SHRD | 双精度右移 |
SIDT | 保存中断描述符 |
SLDT | 保存局部描述符 |
SMI | |
SMINT | |
SMINTOLD | |
SMSW | 保存状态字 |
STC | 进位设置 |
STD | 方向设置 |
STI | 中断设置 |
STOSB | 保存字节串 |
STOSD | 保存双字串 |
STOSW | 保存字串 |
STR | 保存任务 |
SUB | 减 |
SYSCALL | 系统调用 |
SYSENTER | 系统进入 |
SYSEXIT | 系统退出 |
SYSRET | 系统返回 |
TEST | 数测试 |
UD0 | 未定义指令0 |
UD1 | 未定义指令1 |
UD2 | 未定义指令2 |
UMOV | |
VERW | 校验写 |
WAIT | 等 |
WBINVD | 回写无效高速缓存 |
WRMSR | 写专用模式 |
WRSHR | |
XADD | 交换加 |
XBTS | |
XCHG | 交换 |
XLAT | 换码 |
XOR | 异或 |
XSTORE |
http://files.cnblogs.com/findumars/ASM_Detail.pdf
指令 | 功能 |
---|---|
EMMS | 媒体空MMX状态 |
F2XM1 | 浮点栈顶绝对值 |
FADD | 浮点加 |
FADDP | 浮点加出栈 |
FBLD | 浮点加载十数 |
FBSTP | 浮点保存十数出栈 |
FCHS | 浮点正负求反 |
FCLEX | 浮点检查错误清除 |
FCMOVB | 浮点低于传送 |
FCMOVBE | 浮点不高于传送 |
FCMOVE | 浮点相等传送 |
FCMOVNB | 浮点不低于传送 |
FCMOVNBE | 浮点高于传送 |
FCMOVNE | 浮点不等传送 |
FCMOVNU | 浮点有序传送 |
FCMOVU | 浮点无序传送 |
FCOM | 浮点比较 |
FCOMI | 浮点比较加载标志 |
FCOMIP | 浮点比较加载标志出栈 |
FCOMP | 浮点比较出栈 |
FCOMPP | 浮点比较出栈二 |
FCOS | 浮点余弦 |
FDECSTP | 浮点栈针减一 |
FDISI | 浮点检查禁止中断 |
FDIV | 浮点除 |
FDIVP | 浮点除出栈 |
FDIVR | 浮点反除 |
FDIVRP | 浮点反除出栈 |
FENI | 浮点检查禁止中断二 |
FFREE | 浮点释放 |
FFREEP | 浮点释放出栈 |
FIADD | 浮点加整数 |
FICOM | 浮点比较整数 |
FICOMP | 浮点比较整数出栈 |
FIDIV | 浮点除整数 |
FIDIVR | 浮点反除 |
FILD | 浮点加载整数 |
FIMUL | 浮点乘整数 |
FINCSTP | 浮点栈针加一 |
FINIT | 浮点检查初始化 |
FIST | 浮点保存整数 |
FISTP | 浮点保存整数出栈 |
FISTTP | |
FISUB | 浮点减整数 |
FISUBR | 浮点反减整数 |
FLD | 浮点加载数 |
FLD1 | 浮点加载一 |
FLDCW | 浮点加载控制器 |
FLDENV | 浮点加载环境 |
FLDL2E | 浮点加载L2E |
FLDL2T | 浮点加载L2T |
FLDLG2 | 浮点加载LG2 |
FLDLN2 | 浮点加载LN2 |
FLDPI | 浮点加载PI |
FLDZ | 浮点加载零 |
FMUL | 浮点乘 |
FMULP | 浮点乘出栈 |
FNCLEX | 浮点不检查错误清除 |
FNDISI | 浮点不检查禁止中断 |
FNENI | 浮点不检查禁止中断二 |
FNINIT | 浮点不检查初始化 |
FNOP | 浮点空 |
FNSAVE | 浮点不检查保存状态 |
FNSTCW | 浮点不检查保存控制器 |
FNSTENV | 浮点不检查保存环境 |
FNSTSW | 浮点不检查保存状态器 |
FPATAN | 浮点部分反正切 |
FPREM | 浮点部分余数 |
FPREM1 | 浮点部分余数二 |
FPTAN | 浮点部分正切 |
FRNDINT | 浮点舍入求整 |
FRSTOR | 浮点恢复状态 |
FSAVE | 浮点检查保存状态 |
FSCALE | 浮点比例运算 |
FSETPM | 浮点设置保护 |
FSIN | 浮点正弦 |
FSINCOS | 浮点正余弦 |
FSQRT | 浮点平方根 |
FST | 浮点保存 |
FSTCW | 浮点检查保存控制器 |
FSTENV | 浮点检查保存环境 |
FSTP | 浮点保存出栈 |
FSTSW | 浮点检查保存状态器 |
FSUB | 浮点减 |
FSUBP | 浮点减出栈 |
FSUBR | 浮点反减 |
FSUBRP | 浮点反减出栈 |
FTST | 浮点比零 |
FUCOM | 浮点无序比较 |
FUCOMI | 浮点反比加载标志 |
FUCOMIP | 浮点反比加载标志出栈 |
FUCOMP | 浮点无序比较出栈 |
FUCOMPP | 浮点无序比较出栈二 |
FWAIT | 浮点等 |
FXAM | 浮点检查 |
FXCH | 浮点交换 |
FXTRACT | 浮点分解 |
FYL2X | 浮点求L2X |
FYL2XP1 | 浮点求L2XP1 |
MOVED | 媒体双字传送 |
MOVEQ | 媒体四字传送 |
PACKSSDW | 媒体符号双字压缩 |
PACKSSWB | 媒体符号字压缩 |
PACKUSWB | 媒体无符号字压缩 |
PADDB | 媒体截断字节加 |
PADDD | 媒体截断双字加 |
PADDSB | 媒体符号饱和字节加 |
PADDSIW | |
PADDSW | 媒体符号饱和字加 |
PADDUSB | 媒体无符号饱和字节加 |
PADDUSW | 媒体无符号饱和字加 |
PADDW | 媒体截断字加 |
PAND | 媒体与 |
PANDN | 媒体与非 |
PAVEB | |
PCMPEQB | 媒体字节比等 |
PCMPEQD | 媒体双字比等 |
PCMPEQW | 媒体字比等 |
PCMPGTB | 媒体字节比大 |
PCMPGTD | 媒体双字比大 |
PCMPGTW | 媒体字比大 |
PDISTIB | |
PMACHRIW | |
PMADDWD | |
PMAGW | |
PMULHRIW | |
PMULHRWC | |
PMULHW | |
PMVGEZB | |
PMVLZB | |
PMVNZB | |
PMVZB | |
POR | 媒体或 |
PSLLD | 媒体双字左移 |
PSLLQ | 媒体四字左移 |
PSLLW | 媒体字左移 |
PSRAD | 媒体双字算术右移 |
PSRAW | 媒体字算术右移 |
PSRLD | 媒体双字右移 |
PSRLQ | 媒体四字右移 |
PSRLW | 媒体字右移 |
PSUBB | 媒体截断字节减 |
PSUBSB | 媒体符号饱和字节减 |
PSUBSIW | |
PSUBSW | 媒体符号饱和字减 |
PSUBUSB | 媒体无符号饱和字节减 |
PSUBUSW | 媒体无符号饱和字减 |
PSUBW | 媒体截断字减 |
PUNPCKHBW | 媒体字节高位解压 |
PUNPCKHDQ | 媒体双字高位解压 |
PUNPCKHWD | 媒体字高位解压 |
PUNPCKLBW | 媒体字节低位解压 |
PUNPCKLDQ | 媒体双字低位解压 |
PUNPCKLWD | 媒体字低位解压 |
Delphi 2010 VCL、JCL 源码中用到的汇编指令(只是粗略统计):
按名称排序 | 使用次数 | 按使用频率排序 | 使用次数 |
---|---|---|---|
ADC | 15 | MOV | 4053 |
ADD | 659 | PUSH | 1505 |
AND | 162 | CMP | 1372 |
BSF | 8 | POP | 1187 |
BSR | 7 | JE | 952 |
BSWAP | 12 | CALL | 847 |
BT | 13 | JMP | 771 |
BTC | 9 | ADD | 659 |
BTR | 10 | JNE | 503 |
BTS | 10 | TEST | 452 |
CALL | 847 | SUB | 400 |
CDQ | 6 | DEC | 332 |
CLD | 10 | LEA | 288 |
CMP | 1372 | RET | 280 |
CPUID | 3 | INC | 261 |
CWD | 1 | JZ | 252 |
DB | 241 | OR | 248 |
DD | 189 | DB | 241 |
DEC | 332 | DD | 189 |
DIV | 40 | JNZ | 167 |
DW | 63 | MOVZX | 166 |
ELSE | 2 | AND | 162 |
END | 2 | FLD | 154 |
F2XM1 | 6 | SHR | 131 |
FABS | 7 | JB | 101 |
FADD | 9 | JG | 92 |
FADDP | 15 | JA | 86 |
FBSTP | 3 | REP | 83 |
FCHS | 5 | JBE | 81 |
FCLEX | 5 | XCHG | 79 |
FCOM | 7 | JLE | 79 |
FCOMP | 7 | FSTP | 76 |
FCOMPP | 3 | LODSB | 74 |
FCOS | 4 | JL | 72 |
FDIV | 11 | FWAIT | 72 |
FDIVP | 5 | NEG | 70 |
FDIVRP | 11 | DW | 63 |
FFREE | 13 | LOCK | 61 |
FIADD | 6 | STOSB | 58 |
FIDIV | 2 | STOSW | 54 |
FILD | 32 | MOVSX | 53 |
FIMUL | 4 | FLDCW | 52 |
FINCSTP | 1 | FLD1 | 52 |
FISTP | 30 | SHL | 48 |
FLD | 154 | JAE | 48 |
FLD1 | 52 | DIV | 40 |
FLDCW | 52 | JGE | 35 |
FLDL2E | 6 | REPNE | 33 |
FLDLG2 | 2 | LODSW | 33 |
FLDLN2 | 9 | IMUL | 32 |
FLDZ | 8 | FMUL | 32 |
FMUL | 32 | FILD | 32 |
FMULP | 26 | JNS | 31 |
FNCLEX | 11 | FISTP | 30 |
FNINIT | 2 | FXCH | 28 |
FNSTCW | 20 | FMULP | 26 |
FNSTSW | 6 | JS | 24 |
FPATAN | 15 | SBB | 22 |
FPREM | 3 | FSTSW | 22 |
FPTAN | 4 | LOOP | 20 |
FRNDINT | 14 | FNSTCW | 20 |
FSCALE | 8 | FSTCW | 18 |
FSIN | 3 | NOT | 17 |
FSINCOS | 7 | JECXZ | 17 |
FSQRT | 15 | FYL2X | 17 |
FST | 5 | MUL | 16 |
FSTCW | 18 | JNC | 16 |
FSTP | 76 | SAHF | 15 |
FSTSW | 22 | ROR | 15 |
FSUB | 11 | FSQRT | 15 |
FSUBP | 5 | FPATAN | 15 |
FSUBR | 2 | FADDP | 15 |
FSUBRP | 4 | ADC | 15 |
FTST | 4 | FRNDINT | 14 |
FWAIT | 72 | FFREE | 13 |
FXAM | 1 | BT | 13 |
FXCH | 28 | SAR | 12 |
FXTRACT | 1 | ROL | 12 |
FYL2X | 17 | RCL | 12 |
FYL2XP1 | 1 | JO | 12 |
HLT | 1 | BSWAP | 12 |
IMUL | 32 | REPE | 11 |
INC | 261 | FSUB | 11 |
INT | 8 | FNCLEX | 11 |
JA | 86 | FDIVRP | 11 |
JAE | 48 | FDIV | 11 |
JB | 101 | WAIT | 10 |
JBE | 81 | CLD | 10 |
JC | 6 | BTS | 10 |
JE | 952 | BTR | 10 |
JECXZ | 17 | SETC | 9 |
JG | 92 | FLDLN2 | 9 |
JGE | 35 | FADD | 9 |
JL | 72 | BTC | 9 |
JLE | 79 | INT | 8 |
JMP | 771 | FSCALE | 8 |
JNA | 1 | FLDZ | 8 |
JNC | 16 | BSF | 8 |
JNE | 503 | PUSHFD | 7 |
JNG | 2 | FSINCOS | 7 |
JNL | 1 | FCOMP | 7 |
JNS | 31 | FCOM | 7 |
JNZ | 167 | FABS | 7 |
JO | 12 | BSR | 7 |
JRCXZ | 2 | NOP | 6 |
JS | 24 | JC | 6 |
JZ | 252 | FNSTSW | 6 |
LEA | 288 | FLDL2E | 6 |
LEAVE | 1 | FIADD | 6 |
LOCK | 61 | F2XM1 | 6 |
LODSB | 74 | CDQ | 6 |
LODSW | 33 | STOSD | 5 |
LOOP | 20 | POPFD | 5 |
MOV | 4053 | FSUBP | 5 |
MOVSB | 1 | FST | 5 |
MOVSX | 53 | FDIVP | 5 |
MOVZX | 166 | FCLEX | 5 |
MUL | 16 | FCHS | 5 |
NEG | 70 | SHRD | 4 |
NOP | 6 | PUSHF | 4 |
NOT | 17 | POPF | 4 |
OR | 248 | FTST | 4 |
PAUSE | 3 | FSUBRP | 4 |
POP | 1187 | FPTAN | 4 |
POPF | 4 | FIMUL | 4 |
POPFD | 5 | FCOS | 4 |
PUSH | 1505 | RCR | 3 |
PUSHF | 4 | PAUSE | 3 |
PUSHFD | 7 | FSIN | 3 |
RCL | 12 | FPREM | 3 |
RCR | 3 | FCOMPP | 3 |
REP | 83 | FBSTP | 3 |
REPE | 11 | CPUID | 3 |
REPNE | 33 | STD | 2 |
RET | 280 | SETNZ | 2 |
ROL | 12 | SETE | 2 |
ROR | 15 | JRCXZ | 2 |
SAHF | 15 | JNG | 2 |
SAL | 1 | FSUBR | 2 |
SAR | 12 | FNINIT | 2 |
SBB | 22 | FLDLG2 | 2 |
SETC | 9 | FIDIV | 2 |
SETE | 2 | END | 2 |
SETNC | 1 | ELSE | 2 |
SETNZ | 2 | STC | 1 |
SHL | 48 | SHLD | 1 |
SHLD | 1 | SETNC | 1 |
SHR | 131 | SAL | 1 |
SHRD | 4 | MOVSB | 1 |
STC | 1 | LEAVE | 1 |
STD | 2 | JNL | 1 |
STOSB | 58 | JNA | 1 |
STOSD | 5 | HLT | 1 |
STOSW | 54 | FYL2XP1 | 1 |
SUB | 400 | FXTRACT | 1 |
TEST | 452 | FXAM | 1 |
WAIT | 10 | FINCSTP | 1 |
XCHG | 79 | CWD | 1 |
常见汇编命令英文缩写 寄存器类(register): 通用寄存器: EAX、EBX、ECX、EDX:是ax,bx,cx,dx的延伸,各为32位 AH&AL=AX(accumulator) :累加寄存器 BH&BL=BX(base) :基址寄存器 CH&CL=CX(count) :计数寄存器 DH&DL=DX(data) :数据寄存器 特殊功能寄存器: ESP、EBP、ESI、EDI、EIP:是sp,bp,si,di,ip的延伸,32位 SP(Stack Pointer) :堆栈指针寄存器 BP(Base Pointer) :基址指针寄存器 SI(Source Index) :源变址寄存器 DI(Destination Index) :目的变址寄存器 IP(Instruction Pointer) :指令指针寄存器 段寄存器: CS(Code Segment) :代码段寄存器 DS(Data Segment) :数据段寄存器 SS(Stack Segment) :堆栈段寄存器 ES(Extra Segment) :附加段寄存器 标志寄存器 FR--flag register(程序状态字PSW--program status word),PSW常用的标志有: 标志 值为1时的标记 值为0时的标记 说明 OF(overflow flag) OV(overflow) NV(not overflow) 溢出标志 操作数超出机器能表示的范围表示溢出.溢出时为1. ZF(zero flag) ZR(zero) NZ(not zero) 零标志 运算结果等于0时为1.否则为0. PF(parity flag) PE(parity even) PO(parity odd) 奇偶标志 运算结果操作数位为1的个数为偶数个时为1.否则为0. CF(carry flag) CY(carried) NC(not carried) 进位标志 最高有效位产生进位时为1.否则为0. DF(direction flag) DN(down) UP(up) 方向标志 用于串处理.DF=1时.每次操作后使SI和DI减小.DF=0时则增大. SF(sign flag) NG(negtive) PL(plus) 符号标志 记录运算结果的符号.结果负时为1. TF(trap flag) 陷阱标志 用于调试单步操作. IF(interrupt flag) 中断标志 IF=1时.允许CPU响应可屏蔽中断.否则关闭中断. AF(auxiliary flag) 辅助进位标志 运算时.第3位向第4位产生进位时为1.否则为0. 一、命令类 1.通用数据传送指令. MOV----> move 传送字或字节 MOVSX---->extended move with sign data 先符号扩展,再传送 MOVZX---->extended move with zero data 先零扩展,再传送 PUSH---->push 把字压入堆栈 POP---->pop 把字弹出堆栈 PUSHA---->push all 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈 POPA---->pop all 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈 PUSHAD---->push all data 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈 POPAD---->pop all data 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈 BSWAP---->byte swap 交换32位寄存器里字节的顺序 XCHG---->exchange 交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG---->compare and change 比较并交换操作数.第二个操作数为累加器AL/AX/EAX XADD---->exchange and add 先交换再累加.(结果在第一个操作数里) XLAT---->translate 字节查表转换 2.输入输出端口传送指令. IN---->input I/O端口输入.(语法: IN 累加器,{ 端口号│DX }) OUT---->output I/O端口输出.(语法: OUT { 端口号│DX },累加器) 3.目的地址传送指令. LEA---->load effective address 装入有效地址 LDS---->load DS 传送目标指针,把指针内容装入DS LES---->load ES 传送目标指针,把指针内容装入ES LFS---->load FS 传送目标指针,把指针内容装入FS LGS---->load GS 传送目标指针,把指针内容装入GS LSS---->load SS 传送目标指针,把指针内容装入SS 4.标志传送指令. LAHF---->load AH from flag 标志寄存器传送,把标志装入AH. SAHF---->save AH to flag 标志寄存器传送,把AH内容装入标志寄存器 PUSHF---->push flag 标志入栈 POPF---->pop flag 标志出栈 PUSHD---->push dflag 32位标志入栈 POPD---->pop dflag 32位标志出栈 二、算术运算指令 ADD---->add 加法 ADC---->add with carry 带进位加法 INC---->increase 1 加1 AAA---->ascii add with adjust 加法的ASCII码调整 DAA---->decimal add with adjust 加法的十进制调整 SUB---->substract 减法 SBB---->substract with borrow 带借位减法 DEC---->decrease 1 减1 NEC---->negative 求反(以 0 减之) CMP---->compare 比较.两操作数作减法,仅修改标志位,不回送结果 AAS---->ascii adjust on substract 减法的ASCII码调整. DAS---->decimal adjust on substract 减法的十进制调整 MUL---->multiplication 无符号乘法,结果回送AH和AL(字节运算),或DX和AX(字运算) IMUL---->integer multiplication 整数乘法,结果回送AH和AL(字节运算),或DX和AX(字运算) AAM---->ascii adjust on multiplication 乘法的ASCII码调整 DIV---->divide 无符号除法 IDIV---->integer divide 整数除法,商回送AL余数回送AH,字节运算,商回送AX余数回送DX,字运算 AAD---->ascii adjust on divide 除法的ASCII码调整 CBW---->change byte to word 字节转换为字.(把AL中字节的符号扩展到AH中去) CWD---->change word to double word 字转换为双字.(把AX中的字的符号扩展到DX中去) CWDE---->change word to double word with sign to EAX字转换为双字.(把AX中的字符号扩展到EAX中去) CDQ---->change double word to quadrate word 双字扩展.把EAX中的字的符号扩展到EDX 三、逻辑运算指令 AND---->and 与运算 OR---->or 或运算 XOR---->xor 异或运算 NOT---->not 取反 TEST---->test 测试.(两操作数作与运算,仅修改标志位,不回送结果) SHL---->shift left 逻辑左移 SAL---->arithmatic shift left 算术左移.(=SHL) SHR---->shift right 逻辑右移 SAR---->arithmatic shift right 算术右移.(=SHR) ROL---->rotate left 循环左移 ROR---->rotate right 循环右移 RCL---->rotate left with carry 通过进位的循环左移 RCR---->rotate right with carry 通过进位的循环右移 四、串指令 MOVS---->move string 串传送,MOVSB传送字符、MOVSW传送字、MOVSD传送双字 CMPS---->compare string 串比较,CMPSB比较字符、CMPSW比较字 SCAS---->scan string 串扫描,把AL或AX的内容与目标串作比较,比较结果反映在标志位 LODS---->load string 装入串,把源串中的元素(字或字节)逐一装入AL或AX中,LODSB传送字符、LODSW传送字、LODSD传送双字 STOS---->store string 保存串,是LODS的逆过程 REP---->repeat 当CX/ECX<>0时重复 REPE---->repeat when equal 当比较结果相等,且CX/ECX<>0时重复 REPZ---->repeat when zero flag 当ZF=1,且CX/ECX<>0时重复 REPNE---->repeat when not equal 当比较结果不相等,且CX/ECX<>0时重复 REPNZ---->repeat when zero flag 当ZF=0,且CX/ECX<>0时重复 REPC---->repeat when carry flag 当CF=1且CX/ECX<>0时重复 REPNC---->repeat when not carry flag 当CF=0且CX/ECX<>0时重复 五、程序转移指令 1>无条件转移指令(长转移) JMP---->jump 无条件转移指令 CALL---->call 过程调用 RET---->return 过程返回 RETF---->return far 过程返回 2>条件转移指令(短转移,-128到+127的距离内) :当且仅当(SF XOR OF)=1时,OP1<OP2 JAE---->jump when above or equal 不小于时转移 JNB---->jump when not below 不小于时转移 JB---->jump when below 小于时转移 JNAE---->jump when not above or equal 小于时转移 JBE---->jump when below or equal 小于等于时转移 JNA---->jump when not above 小于等于时转移 以上条目,测试无符号整数运算的结果(标志C和Z) JG---->jump when greater 大于转移 JNLE---->jump when not less or equal 大于转移 JGE---->jump when greater or equal 大于等于转移 JNL---->jump when not less 大于等于转移 JL---->jump when less 小于转移 JNGE---->jump when not greater or equal 小于转移 JLE---->jump when less or equal 小于等于转移 JNG---->jump when not greater 小于等于转移 以上条目,测试带符号整数运算的结果(标志S,O和Z). JE---->jump when equal 等于转移 JZ---->jump when has zero flag 结果为0转移 JNE---->jump when not equal 不等于转移 JNZ---->jump when not has zero flag 结果不为0转移 JC---->jump when has carry flag 有进位转移 JNC---->jump when not has carry flag 无进位转移 JNO---->jump when not has overflow flag 不溢出时转移 JNP---->jump when not has parity flag 奇偶性为奇数时转移 JPO---->jump when parity flag is odd 奇偶性为奇数时转移 JNS---->jump when not has sign flag 符号位为0时转移 JO---->jump when has overflow flag 溢出时转移 JP---->jump when has parity flag 奇偶性为偶数时转移 JPE---->jump when parity flag is even 奇偶性为偶数时转移 JS---->jump when has sign flag 符号位为0时转移 3>循环控制指令(短转移) LOOP---->loop CX不为零时循环 LOOPE---->loop equal CX不为零且结果相等时循环(相等时Z=1) LOOPZ---->loop zero CX不为零且标志Z=1时循环 LOOPNE---->loop not equal CX不为零且结果不相等时循环(相等时Z=0) LOOPNZ---->loop not zero CX不为零且标志Z=0时循环 JCXZ---->jump when CX is zero CX为零时转移 JECXZ---->jump when ECX is zero ECX为零时转移 4>中断指令 INT---->interrupt ECX为零时转移 INTO---->overflow interrupt 溢出中断 IRET---->interrupt return 中断返回 5>处理器控制指令 HLT---->halt 处理器暂停,直到出现中断或复位信号才继续 WAIT---->wait 当芯片引线TEST为高电平时使CPU进入等待状态 ESC---->escape 转换到外处理器 LOCK---->lock 封锁总线 NOP---->no operation 空操作 STC---->set carry 置进位标识位 CLC---->clear carry 清进位标识位 CMC---->carry make change 进位标识取反 STD---->set direction 置方向标识位 CLD---->clear direction 清方向标识位 STI---->set interrupt 置中断允许位 CLI---->clear interrupt 清中断允许位 六、伪指令 DW---->definw word 定义字(2字节) PROC---->procedure 定义过程 ENDP---->end of procedure 过程结束 SEGMENT---->segment 定义段 ASSUME---->assume 建立段寄存器寻址 ENDS---->end segment 段结束 END---->end 程序结束
AAA-添加后进行ASCII调整 AAD-ASCII分割前调整AX AAM-ASCII调整AX后乘以 AAS-ASCII减法后调整AL ADC-带进位加法 ADCX - 带进位标志的两个操作数的无符号整数相加 ADD-加 ADDPD-Add打包的双精度浮点值 ADDPS-Add打包的单精度浮点值 ADDSD-Add标量双精度浮点值 ADDSS - add标量单精度浮点值 ADDSUBPD-压缩双FP加/减 ADDSUBPS-压缩单FP加/减 ADOX - 带有溢出标志的两个操作数的无符号整数 AESDEC - 执行一轮AES解密流程 AESDECLAST - 执行AES解密流的最后一轮 AESENC - 执行一轮AES加密流程 AESENCLAST - 执行AES加密流的最后一轮 AESIMC - 执行AES InvMixColumn转换 AESKEYGENASSIST-AES轮回密钥生成辅助 AND-逻辑与 ANDN - 逻辑AND NOT ANDPD-压缩双精度浮点值的按位逻辑与 ANDPS—压缩单精度浮点值的按位逻辑与 ANDNPD—压缩双精度浮点值的按位逻辑AND NOT ANDNPS—压缩单精度浮点值的按位逻辑AND NOT ARPL—调整段选择器的RPL字段 BLENDPD — 混合封装双精度浮点值 BEXTR — 位字段提取 BLENDPS — 混合封装的单精度浮点值 BLENDVPD — 可变混合封装双精度浮点值 BLENDVPS — 可变混合封装单精度浮点值 BLSI — 提取最低设置隔离位 BLSMSK — 获取掩码到最低设置位 BLSR — 复位最低设置位 BNDCL—检查下限 BNDCU/BNDCN—检查上边界 BNDLDX—使用地址转换加载扩展边界 BNDMK—制作界限 BNDMOV—移动边界 BNDSTX—使用地址转换存储扩展边界 BOUND—检查阵列索引对边界 BSF—位扫描转发 BSR—位扫描反转 BSWAP—字节交换 BT—位测试 BTC—位测试和补码 BTR—位测试和复位 BTS—位测试和设置 BZHI — 从指定位位置开始的零高位 CALL—调用过程 CBW/CWDE/CDQE—将字节转换为字/将字转换为双字/将双字转换为四字 CLAC—清除EFLAGS寄存器中的AC标志 CLC—清除进位标志 CLD—清除方向标志 CLFLUSH—刷新缓存行 CLFLUSHOPT—刷新缓存行已优化 CLI — 清除中断标志 CLTS—清除CR0中的任务切换标志 CLWB—高速缓存行回写 CMC—补充进位标志 CMOVcc—条件移动 CMP—比较两个操作数 CMPPD—比较打包的双精度浮点值 CMPPS—比较打包的单精度浮点值 CMPS/CMPSB/CMPSW/CMPSD/CMPSQ—比较字符串操作数 CMPSD—比较标量双精度浮点值 CMPSS—比较标量单精度浮点值 CMPXCHG—比较和交流 CMPXCHG8B/CMPXCHG16B—比较和交换字节 COMISD—比较标量有序双精度浮点值和设置EFLAGS COMISS—比较标量有序单精度浮点值和设置EFLAGS CPUID—CPU识别 CRC32 — 累加CRC32值 CVTDQ2PD—将打包的双字整数转换为打包的双精度浮点值 CVTDQ2PS—将打包的双字整数转换为打包的单精度浮点值 CVTPD2DQ—将打包的双精度浮点值转换为打包的双字整数 CVTPD2PI—将打包的双精度FP值转换为打包的双字整数 CVTPD2PS—将打包的双精度浮点值转换为打包的单精度浮点值 CVTPI2PD—将打包的双字整数转换为打包的双精度FP值 CVTPI2PS—将打包的双字整数转换为打包的单精度FP值 CVTPS2DQ—将打包的单精度浮点值转换为打包签名的双字整数值 CVTPS2PD—将打包的单精度浮点值转换为打包的双精度浮点值 CVTPS2PI—将打包的单精度FP值转换为打包的双字整数 CVTSD2SI—将标量双精度浮点值转换为双字整数 CVTSD2SS—将标量双精度浮点值转换为标量单精度浮点值 CVTSI2SD—将双字整数转换为标量双精度浮点值 CVTSI2SS—将双字整数转换为标量单精度浮点值 CVTSS2SD—将标量单精度浮点值转换为标量双精度浮点值 CVTSS2SI—将标量单精度浮点值转换为双字整数 CVTTPD2DQ—转换为截断打包的双精度浮点值到打包的双字整数 CVTTPD2PI—转换为截断打包的双精度FP值到打包的双字整数 CVTTPS2DQ—将截断转换为打包的单精度浮点值到打包签名的双字整数值 CVTTPS2PI—转换为截断打包的单精度FP值到打包的双字整数 CVTTSD2SI—将截断的标量双精度浮点值转换为有符号整数 CVTTSS2SI—将截断标量单精度浮点值转换为整数 CWD/CDQ/CQO—将字转换为双字/将双字转换为四字 DAA—十进制加法后调整AL DAS—十进制减法后调整AL DEC—减少1 DIV—无符号除法 DIVPD—除法包装的双精度浮点值 DIVPS—分割打包的单精度浮点值 DIVSD—除法标量双精度浮点值 DIVSS—除法标量单精度浮点值 DPPD — 封装双精度浮点值的点积 DPPS — 封装单精度浮点值的点积 EMMS—空MMX技术状态 ENTER—为过程参数创建堆栈框架 EXTRACTPS—提取打包的浮点值 F2XM1—计算2x-1 FABS—绝对值 FADD/FADDP/FIADD—Add FBLD—加载二进制编码十进制 FBSTP—存储BCD整数和弹出 FCHS—更改标志 FCLEX/FNCLEX—清除例外 FCMOVcc—浮点条件移动 FCOM/FCOMP/FCOMPP—比较浮点值 FCOMI/FCOMIP/ FUCOMI/FUCOMIP—比较浮点值和设置EFLAGS FCOS— 余弦 FDECSTP—减少堆栈顶指针 FDIV/FDIVP/FIDIV—划分 FDIVR/FDIVRP/FIDIVR—反向分割 FFREE—自由浮点寄存器 FICOM/FICOMP—比较整数 FILD—加载整数 FINCSTP—增加堆栈顶指针 FINIT/FNINIT—初始化浮点单元 FIST/FISTP—存储整数 FISTTP—存储整数与截断 FLD—加载浮点值 FLD1/FLDL2T/FLDL2E/FLDPI/FLDLG2/FLDLN2/FLDZ—负载常数 FLDCW—加载x87 FPU控制字 FLDENV—加载x87 FPU环境 FMUL/FMULP/FIMUL—乘 FNOP—无操作 FPATAN—部分反正切 FPREM—部分剩余 FPREM1—部分剩余 FPTAN—部分切线 FRNDINT—舍入为整数 FRSTOR—恢复x87 FPU状态 FSAVE/FNSAVE—存储x87 FPU状态 FSCALE—规模 FSIN—正弦 FSINCOS—正弦和余弦 FSQRT—平方根 FST/FSTP—存储浮点值 FSTCW/FNSTCW—存储x87 FPU控制字 FSTENV/FNSTENV—存储x87 FPU环境 FSTSW/FNSTSW—存储x87 FPU状态字 FSUB/FSUBP/FISUB—减去 FSUBR/FSUBRP/FISUBR—反向减 FTST—TEST FUCOM/FUCOMP/FUCOMPP—无序比较浮点值 FXAM—检查浮点 FXCH—交换寄存器内容 FXRSTOR—恢复x87 FPU,MMX,XMM和MXCSR状态 FXSAVE—保存x87 FPU,MMX技术和SSE状态 FXTRACT—提取指数和指标 FYL2X—计算y * log2x FYL2XP1—计算y * log2(x + 1) HADDPD—包装双FP水平添加 HADDPS—包装单FP水平添加 HLT—停 HSUBPD—压缩双FP水平减法 HSUBPS—打包单FP水平减法 IDIV—签名除法 IMUL—签名乘法 IN—从端口输入 INC—递增1 INS/INSB/INSW/INSD—从端口到字符串的输入 INSERTPS—插入标量单精度浮点值 INT n/INTO/INT 3—调用中断过程 INVD—无效内部缓存 INVLPG—使TLB条目无效 INVPCID—使过程上下文标识符无效 IRET/IRETD—中断返回 Jcc—如果条件满足则跳转 JMP—跳 KADDW/KADDB/KADDQ/KADDD—ADD两个面具 KANDW/KANDB/KANDQ/KANDD—按位逻辑和掩码 KANDNW/KANDNB/KANDNQ/KANDND—按位逻辑AND NOT掩码 KMOVW/KMOVB/KMOVQ/KMOVD—从和到掩码寄存器 KNOTW/KNOTB/KNOTQ/KNOTD—NOT屏蔽寄存器 KORW/KORB/KORQ/KORD—按位逻辑或掩码 KORTESTW/KORTESTB/KORTESTQ/KORTESTD—OR Masks And Set Flags KSHIFTLW/KSHIFTLB/KSHIFTLQ/KSHIFTLD—移位左掩码寄存器 KSHIFTRW/KSHIFTRB/KSHIFTRQ/KSHIFTRD—Shift右掩码寄存器 KTESTW/KTESTB/KTESTQ/KTESTD—打包位测试掩码和设置标志 KUNPCKBW/KUNPCKWD/KUNPCKDQ—解包掩码寄存器 KXNORW/KXNORB/KXNORQ/KXNORD—按位逻辑XNOR掩码 KXORW/KXORB/KXORQ/KXORD—按位逻辑异或掩码 LAHF—将状态标志加载到AH寄存器中 LAR—加载访问权限字节 LDDQU—加载未对齐的整数128位 LDMXCSR—加载MXCSR寄存器 LDS/LES/LFS/LGS/LSS—加载远程指针 LEA—加载有效地址 LEAVE—高级过程退出 LFENCE—负载栅栏 LGDT/LIDT—加载全局/中断描述符表寄存器 LLDT—加载本地jubu描述符表寄存器 LMSW—加载机器状态字 LOCK—置位LOCK#信号前缀 LODS/LODSB/LODSW/LODSD/LODSQ—加载字符串 LOOP/LOOPcc—根据ECX计数器循环 LSL—负载段限制 LTR—加载任务寄存器 LZCNT— 计数前导零位的数量 MASKMOVDQU—存储双字双字的所选字节 MASKMOVQ—存储选定的四字节字节 MAXPD—最大打包双精度浮点值 MAXPS—最大打包单精度浮点值 MAXSD—返回最大标量双精度浮点值 MAXSS—返回最大标量单精度浮点值 MFENCE—内存围栏 MINPD—最小包装双精度浮点值 MINPS—最小打包单精度浮点值 MINSD—返回最小标量双精度浮点值 MINSS—返回最小标量单精度浮点值 MONITOR—设置监视器地址 MOV—移动 MOVAPD—移动对齐打包的双精度浮点值 MOVAPS—移动对齐打包的单精度浮点值 MOVBE—在交换字节后移动数据 MOVD/MOVQ—移动双字/移动四字 MOVDDUP—复制双精度浮点值 MOVDQA,VMOVDQA32/64—移动对齐的打包整数值 MOVDQU,VMOVDQU8/16/32/64—移动未对齐的打包整数值 MOVDQ2Q—将四字从XMM移动到MMX技术寄存器 MOVHLPS—将打包的单精度浮点值从高到低移动 MOVHPD—移动高压缩双精度浮点值 MOVHPS—移动高度封装的单精度浮点值 MOVLHPS—将打包的单精度浮点值从低到高移动 MOVLPD—移动低压缩双精度浮点值 MOVLPS—移动低压缩单精度浮点值 MOVMSKPD—提取封装的双精度浮点符号掩码 MOVMSKPS—提取打包的单精度浮点符号掩码 MOVNTDQA—加载双字体非时间对齐提示 MOVNTDQ—使用非时间提示存储打包的整数 MOVNTI—使用非时间提示存储双字 MOVNTPD—使用非时间提示存储打包的双精度浮点值 MOVNTPS—使用非时间提示存储打包的单精度浮点值 MOVNTQ—使用非时间提示的四字存储 MOVQ—移动四字 MOVQ2DQ—将四字从MMX技术移动到XMM寄存器 MOVS/MOVSB/MOVSW/MOVSD/MOVSQ—将数据从字符串移动到字符串 MOVSD—移动或合并标量双精度浮点值 MOVSHDUP—复制单个FP值 MOVSLDUP—复制单个FP值 MOVSS—移动或合并标量单精度浮点值 MOVSX/MOVSXD—使用符号扩展移动 MOVUPD—移动非对齐打包的双精度浮点值 MOVUPS—移动不对齐打包的单精度浮点值 MOVZX—用零扩展移动 MPSADBW — 计算多个封装的绝对差的和 MUL—无符号乘法 MULPD—乘法封装的双精度浮点值 MULPS—乘法封装的单精度浮点值 MULSD—乘以标量双精度浮点值 MULSS—乘以标量单精度浮点值 MULX — 无符号乘法不影响标志 MWAIT—监视等待 NEG—二的互补阴性 NOP—无操作 NOT—一个补码阴性 OR—逻辑包含OR ORPD—压缩双精度浮点值的按位逻辑或 ORPS—压缩单精度浮点值的按位逻辑或 OUT—输出到端口 OUTS/OUTSB/OUTSW/OUTSD—输出字符串到端口 PABSB/PABSW/PABSD/PABSQ — 压缩绝对值 PACKSSWB/PACKSSDW—包含有符号饱和度 PACKUSDW—具有无符号饱和度的包 PACKUSWB—具有无符号饱和度的包 PADDB/PADDW/PADDD/PADDQ—添加打包的整数 PADDSB/PADDSW—添加带签名饱和度的打包签名整数 PADDUSB/PADDUSW—添加带有无符号饱和的打包的无符号整数 PALIGNR — 包装对齐 PAND—逻辑AND PANDN—逻辑AND NOT PAUSE—旋转环提示 PAVGB/PAVGW—平均打包整数 PBLENDVB — 可变混合打包字节 PBLENDW — 混合包装的词 PCLMULQDQ - 无载乘法四字 PCMPEQB/PCMPEQW/PCMPEQD— 比较打包数据以等于 PCMPEQQ — 比较打包的Qword数据 PCMPESTRI — 压缩比较显式长度字符串,返回索引 PCMPESTRM — 压缩比较显式长度字符串,返回掩码 PCMPGTB/PCMPGTW/PCMPGTD—比较打包签名的整数大于 PCMPGTQ — 比较打包数据大于 PCMPISTRI — 压缩比较隐式长度字符串,返回索引 PCMPISTRM — 压缩比较隐式长度字符串,返回掩码 PDEP — 平行位存款 PEXT — 平行位提取 PEXTRB/PEXTRD/PEXTRQ — 提取字节/双字/ Qword PEXTRW—提取 Word PHADDW/PHADDD — 包装水平添加 PHADDSW — 包装水平添加和饱和 PHMINPOSUW — 包装水平词最小 PHSUBW/PHSUBD — 打包水平减法 PHSUBSW — 包装水平扣除和饱和 PINSRB/PINSRD/PINSRQ — 插入字节/双字/ Qword PINSRW—插入字 PMADDUBSW — 乘法和添加打包签名和无符号字节 PMADDWD—乘法和添加打包整数 PMAXSB/PMAXSW/PMAXSD/PMAXSQ—最大打包签名整数 PMAXUB/PMAXUW—最大打包的无符号整数 PMAXUD/PMAXUQ—最大打包的无符号整数 PMINSB/PMINSW—最小打包签名整数 PMINSD/PMINSQ—最小打包签名整数 PMINUB/PMINUW—最小打包的无符号整数 PMINUD/PMINUQ—最小打包的无符号整数 PMOVMSKB—移动字节掩码 PMOVSX—包装移动与符号扩展 PMOVZX—带零扩展的打包移动 PMULDQ—乘以压缩双字整数 PMULHRSW — 包装高与圆和规模 PMULHUW—乘法打包的无符号整数和存储高结果 PMULHW—乘法打包签名整数和存储高结果 PMULLD/PMULLQ—乘以压缩整数和存储低结果 PMULLW—乘以打包的有符号整数和存储低结果 PMULUDQ—乘法打包的无符号双字整数 POP—从堆栈中弹出一个值 POPA/POPAD—弹出所有通用寄存器 POPCNT — 返回设置为1的位数计数 POPF/POPFD/POPFQ—弹出堆栈到 EFLAGS 寄存器 POR—按位逻辑或 PREFETCHh—预取数据到缓存 PREFETCHW—在写入预期中将数据预取到缓存中 PREFETCHWT1—将向量数据预取到具有意图写入和T1提示的高速缓存中 PSADBW—计算绝对差的和 PSHUFB — 打包的随机字节 PSHUFD—随机打包双字 PSHUFHW—随机包装高字 PSHUFLW—随机包装低字 PSHUFW—随机包装的词 PSIGNB/PSIGNW/PSIGND — 打包标志 PSLLDQ—移位双四字左逻辑 PSLLW/PSLLD/PSLLQ—移位数据打包左逻辑 PSRAW/PSRAD/PSRAQ—移位打包数据右算术 PSRLDQ—移位双四字右逻辑 PSRLW/PSRLD/PSRLQ—移位打包数据右逻辑 PSUBB/PSUBW/PSUBD—减去打包的整数 PSUBQ—减去打包的四字整数 PSUBSB/PSUBSW—减去带有符号饱和的打包有符号整数 PSUBUSB/PSUBUSW—使用无符号饱和度减去打包的无符号整数 PTEST- 逻辑比较 PTWRITE - 将数据写入处理器跟踪数据包 PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/PUNPCKHQDQ— 解压高数据 PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/PUNPCKLQDQ—解压低数据 PUSH—将字,双字或四字推到堆栈上 PUSHA/PUSHAD—推送所有通用寄存器 PUSHF/PUSHFD—将EFLAGS寄存器推送到堆栈 PXOR—逻辑异或 RCL/RCR/ROL/ROR—旋转 RCPPS—计算包装的单精度浮点值的倒数 RCPSS—计算标量单精度浮点值的倒数 RDFSBASE/RDGSBASE—读取FS / GS段基址 RDMSR—从模型专用寄存器读取 RDPID—读取处理器ID RDPKRU—读取用户页面的保护关键权限 RDPMC—读取性能监视计数器 RDRAND—读随机数 RDSEED—阅读随机SEED RDTSC—读取时间戳计数器 RDTSCP—读取时间戳计数器和处理器ID REP/REPE/REPZ/REPNE/REPNZ—重复字符串操作前缀 RET—从程序返回 RORX — 向右旋转逻辑而不影响标志 ROUNDPD — 圆形双精度浮点值 ROUNDPS — 圆形封装单精度浮点值 ROUNDSD — 圆形标量双精度浮点值 ROUNDSS — 圆形标量单精度浮点值 RSM—从系统管理模式恢复 RSQRTPS—计算压缩单精度浮点值的平方根的倒数 RSQRTSS—计算标量单精度浮点值的平方根的倒数 SAHF—将AH存储到标志 SAL/SAR/SHL/SHR—转移 SARX/SHLX/SHRX — 转移不影响标志 SBB—借用整数减法 SCAS/SCASB/SCASW/SCASD—扫描字符串 SETcc—在字段上设置字节 SFENCE—商店栅栏 SGDT—存储全局描述符表寄存器 SHA1RNDS4—执行四轮SHA1操作 SHA1NEXTE—计算四轮后的SHA1状态变量E. SHA1MSG1—对下四个SHA1消息双字执行中间计算 SHA1MSG2—对下四个SHA1消息双字执行最终计算 SHA256RNDS2—执行两轮SHA256操作 SHA256MSG1—对下四个SHA256消息双字执行中间计算 SHA256MSG2—对下四个SHA256消息双字执行最终计算 SHLD—双精度位移左 SHRD—双精度平移 SHUFPD—包装交错双精度浮点值对的随机 SHUFPS—Packed Interleave单精度浮点值四重串交替 SIDT—存储中断描述符表寄存器 SLDT—存储本地描述符表寄存器 SMSW—存储机器状态字 SQRTPD—双精度浮点值的平方根 SQRTPS—单精度浮点值的平方根 SQRTSD—计算平方根的标量双精度浮点值 SQRTSS—计算标量单精度值的平方根 STAC—在EFLAGS寄存器中设置AC标志 STC—设置进位标志 STD—设置方向标志 STI—设置中断标志 STMXCSR—存储MXCSR寄存器状态 STOS/STOSB/STOSW/STOSD/STOSQ—存储字符串 STR—存储任务寄存器 SUB—减去 SUBPD—减去打包的双精度浮点值 SUBPS—减去打包的单精度浮点值 SUBSD—减去标量双精度浮点值 SUBSS—减去标量单精度浮点值 SWAPGS—交换GS基址寄存器 SYSCALL—快速系统调用 SYSENTER—快速系统调用 SYSEXIT—从快速系统调用快速返回 SYSRET—从快速系统调用返回 TEST—逻辑比较 TZCNT — 计算零位的位数 UCOMISD—无序比较标量双精度浮点值并设置EFLAGS UCOMISS—无序比较标量单精度浮点值并设置EFLAGS UD2—未定义指令 UNPCKHPD—解包和交织高压双精度浮点值 UNPCKHPS—解包和交织高度封装的单精度浮点值 UNPCKLPD—解包和交织低压双精度浮点值 UNPCKLPS—解包和交织低压缩单精度浮点值 VALIGND/VALIGNQ—对齐双字/四字向量 VBLENDMPD/VBLENDMPS—使用OpMask控件的Blend Float64 / Float32向量 VBROADCAST—加载广播浮点数据 VPBROADCASTM—广播掩码到向量寄存器 VCOMPRESSPD—将稀疏压缩双精度浮点值存储到密集存储器中 VCOMPRESSPS—将稀疏打包的单精度浮点值存储到密集存储器中 VCVTPD2QQ—将打包的双精度浮点值转换为打包的四字整数 VCVTPD2UDQ—将打包的双精度浮点值转换为打包的无符号双字整数 VCVTPD2UQQ—将打包的双精度浮点值转换为打包的无符号四字整数 VCVTPH2PS—将16位FP值转换为单精度FP值 VCVTPS2PH—将Single-Precision FP值转换为16位FP值 VCVTPS2UDQ—将打包的单精度浮点值转换为打包的无符号双字整数值 VCVTPS2QQ—将打包的单精度浮点值转换为打包的有符号四字整数值 VCVTPS2UQQ—将打包的单精度浮点值转换为打包的无符号四字整数值 VCVTQQ2PD—将打包的四字整数转换为打包的双精度浮点值 VCVTQQ2PS—将打包的四字整数转换为打包的单精度浮点值 VCVTSD2USI—将标量双精度浮点值转换为无符号双字整数 VCVTSS2USI—将标量单精度浮点值转换为无符号双字整数 VCVTTPD2QQ—将截断打包的双精度浮点值转换为打包的四字整数 VCVTTPD2UDQ—转换为截断打包的双精度浮点值到打包的无符号双字整数 VCVTTPD2UQQ—将截断的双精度浮点值转换为打包的无符号四字整数 VCVTTPS2UDQ—将截断转换为打包的单精度浮点值到打包的无符号双字整数值 VCVTTPS2QQ—将截断转换为打包的单精度浮点值到打包的有符号四字整数值 VCVTTPS2UQQ—将截断转换为打包的单精度浮点值到打包的无符号四字整数值 VCVTTSD2USI—将截断的标量双精度浮点值转换为无符号整数 VCVTTSS2USI—将截断标量单精度浮点值转换为无符号整数 VCVTUDQ2PD—将打包的无符号双字整数转换为打包的双精度浮点值 VCVTUDQ2PS—将打包的无符号双字整数转换为打包的单精度浮点值 VCVTUQQ2PD—将打包的无符号四字整数转换为打包的双精度浮点值 VCVTUQQ2PS—将打包的无符号四字整数转换为打包的单精度浮点值 VCVTUSI2SD—将无符号整数转换为标量双精度浮点值 VCVTUSI2SS—将无符号整数转换为标量单精度浮点值 VDBPSADBW—对无符号字节的双块打包和绝对差(SAD) VEXPANDPD—从密集存储器加载稀疏压缩双精度浮点值 VEXPANDPS—从密集存储器加载稀疏打包的单精度浮点值 VERR/VERW—验证读取或写入的段 VEXP2PD—近似于指数2 ^ x的打包双精度浮点值,小于2 ^ -23相对误差 VEXP2PS—近似于包装的单精度浮点值的指数2 ^ x小于2 ^ -23相对误差 VEXTRACTF128/VEXTRACTF32x4/VEXTRACTF64x2/VEXTRACTF32x8/VEXTRACTF64x4—Extr act打包浮点值 VEXTRACTI128/VEXTRACTI32x4/VEXTRACTI64x2/VEXTRACTI32x8/VEXTRACTI64x4—提取打包的整数值 VFIXUPIMMPD—修复特殊打包的Float64值 VFIXUPIMMPS—修复特殊打包的Float32值 VFIXUPIMMSD—修复特殊标量Float64价值 VFIXUPIMMSS—修复特殊标量Float32价值 VFMADD132PD/VFMADD213PD/VFMADD231PD—熔丝乘法 - 加上双精度浮点值 VFMADD132PS/VFMADD213PS/VFMADD231PS—融合乘法 - 加上单精度浮点值 VFMADD132SD/VFMADD213SD/VFMADD231SD—熔丝乘加 - 标量双精度浮点值 VFMADD132SS/VFMADD213SS/VFMADD231SS—融合乘法 - 加上标量单精度浮点值 VFMADDSUB132PD/VFMADDSUB213PD/VFMADDSUB231PD—熔断乘法 - 交替加/减包装的双精度浮点值 VFMADDSUB132PS/VFMADDSUB213PS/VFMADDSUB231PS—封装单精度浮点值的融合乘法交替加法/减法 VFMSUBADD132PD/VFMSUBADD213PD/VFMSUBADD231PD—融合乘法交替减法/增加的双精度浮点值 VFMSUBADD132PS/VFMSUBADD213PS/VFMSUBADD231PS—融合乘法交替减法/添加的单精度浮点值 VFMSUB132PD/VFMSUB213PD/VFMSUB231PD—压缩双精度浮点值的乘法减法 VFMSUB132PS/VFMSUB213PS/VFMSUB231PS—压缩单精度浮点值的乘法减法 VFMSUB132SD/VFMSUB213SD/VFMSUB231SD—标量双精度浮点值的融合乘法 - 减法 VFMSUB132SS/VFMSUB213SS/VFMSUB231SS—标量单精度浮点值的融合乘减 VFNMADD132PD/VFNMADD213PD/VFNMADD231PD—熔丝负精度浮点值的乘积 - 加法 VFNMADD132PS/VFNMADD213PS/VFNMADD231PS—熔丝负精度浮点值的乘积 - 加法 VFNMADD132SD/VFNMADD213SD/VFNMADD231SD—熔丝负精度浮点值的乘积 - 加法 VFNMADD132SS/VFNMADD213SS/VFNMADD231SS—熔丝负精度浮点值的乘积 - 加法 VFNMSUB132PD/VFNMSUB213PD/VFNMSUB231PD—压缩双精度浮点值的负值乘法减法 VFNMSUB132PS/VFNMSUB213PS/VFNMSUB231PS—封装单精度浮点值的熔丝负负乘法 - 减法 VFNMSUB132SD/VFNMSUB213SD/VFNMSUB231SD—标量双精度浮点值的熔融负乘法 - 减法 VFNMSUB132SS/VFNMSUB213SS/VFNMSUB231SS—标量单精度浮点值的熔点负乘减 VFPCLASSPD—测试打包的Float64值的类型 VFPCLASSPS—测试打包的Float32值的类型 VFPCLASSSD—测试标量Float64值的类型 VFPCLASSSS—测试Scalar Float32值的类型 VGATHERDPD/VGATHERQPD — 使用有符号的双字/ Qword指数收集打包的DP FP值 VGATHERDPS/VGATHERQPS — 使用签名的双字/ Qword索引收集打包的SP FP值 VGATHERDPS/VGATHERDPD—收集包装单,包装双与签署双剑 VGATHERPF0DPS/VGATHERPF0QPS/VGATHERPF0DPD/VGATHERPF0QPD—稀疏预取打包SP / DP数据值与签名双字,签名的Qword指数使用T0提示 VGATHERPF1DPS/VGATHERPF1QPS/VGATHERPF1DPD/VGATHERPF1QPD—稀疏预取打包SP / DP数据值与签名双字,签名的Qword指数使用T1提示 VGATHERQPS/VGATHERQPD—收集包装单,包装双与签名的Qword指数 VPGATHERDD/VPGATHERQD — 使用签名的双字/ Qword指数收集打包的双字值 VPGATHERDD/VPGATHERDQ—收集包装双剑,包装的Qword和双重指数 VPGATHERDQ/VPGATHERQQ — 使用签名的双字/ Qword指数收集打包的Qword值 VPGATHERQD/VPGATHERQQ—收集包装双剑,包装的Qword与已签名的Qword指数 VGETEXPPD—将打包的DP FP值的指数转换为DP FP值 VGETEXPPS—将打包的SP FP值的指数转换为SP FP值 VGETEXPSD—将标量DP FP值的指数转换为DP FP值 VGETEXPSS—将标量SP FP值的指数转换为SP FP值 VGETMANTPD—从Float64 Vector中提取Float64 Vector of Normalized Mantissas VGETMANTPS—从Float32 Vector中提取Float32向量的Normalized Mantissas VGETMANTSD—从Float64标量提取Float64的规范化尾数 VGETMANTSS—从Float32向量提取标准化尾数Float32矢量 VINSERTF128/VINSERTF32x4/VINSERTF64x2/VINSERTF32x8/VINSERTF64x4—插入打包的浮点值 VINSERTI128/VINSERTI32x4/VINSERTI64x2/VINSERTI32x8/VINSERTI64x4—插入打包的整数值 VMASKMOV—条件SIMD打包荷载和商店 VPBLENDD — 混合包装双字 VPBLENDMB/VPBLENDMW—使用opmask控制的混合字节/字向量 VPBLENDMD/VPBLENDMQ—使用OpMask控件混合Int32 / Int64向量 VPBROADCASTB/W/D/Q—从通用寄存器加载广播整数数据 VPBROADCAST—加载整数和广播 VPCMPB/VPCMPUB—将打包的字节值比较到掩码中 VPCMPD/VPCMPUD—将打包的整数值与掩码进行比较 VPCMPQ/VPCMPUQ—将打包的整数值与掩码进行比较 VPCMPW/VPCMPUW—比较打包的词值到掩码 VPCOMPRESSD—将稀疏压缩双字整数值存储到密集存储器/寄存器中 VPCOMPRESSQ—将稀疏压缩四字整数值存储到密集存储器/寄存器中 VPCONFLICTD/Q—检测在打包的双字/ Qword值的向量内的冲突到密集存储器/寄存器中 VPERM2F128 — 允许浮点值 VPERM2I128 — 允许整数值 VPERMD/VPERMW—Permute打包双字/字元素 VPERMI2W/D/Q/PS/PD—两个表的完全权限覆盖索引 VPERMILPD—允许双精度浮点值对的内部通道 VPERMILPS—允许四精度浮点值的内部通道 VPERMPD—允许双精度浮点元素 VPERMPS—允许单精度浮点元素 VPERMQ—四字节元素置换 VPEXPANDD—从密集存储器/寄存器加载稀疏压缩双字整数值 VPEXPANDQ—从密集存储器/寄存器加载稀疏压缩四字整数值 VPLZCNTD/Q—计算打包双字,打包的Qword值的前导零位数 VPMASKMOV — 条件SIMD整数打包荷载和商店 VPMOVM2B/VPMOVM2W/VPMOVM2D/VPMOVM2Q—将屏蔽寄存器转换为向量寄存器 VPMOVB2M/VPMOVW2M/VPMOVD2M/VPMOVQ2M—将矢量寄存器转换为掩码 VPMOVQB/VPMOVSQB/VPMOVUSQB—Down将QWord转换为字节 VPMOVQW/VPMOVSQW/VPMOVUSQW—Down将QWord转换为Word VPMOVQD/VPMOVSQD/VPMOVUSQD—Down将QWord转换为DWord VPMOVDB/VPMOVSDB/VPMOVUSDB—Down将DWord转换为字节 VPMOVDW/VPMOVSDW/VPMOVUSDW—Down将DWord转换为Word VPMOVWB/VPMOVSWB/VPMOVUSWB—向下将字转换为字节 PROLD/PROLVD/PROLQ/PROLVQ—位向左旋转 PRORD/PRORVD/PRORQ/PRORVQ—位向右旋转 VPSCATTERDD/VPSCATTERDQ/VPSCATTERQD/VPSCATTERQQ—分散包装双字,带有符号双字的打包字,签名的Qword指数 VPSLLVW/VPSLLVD/VPSLLVQ—可变位移左逻辑 VPSRAVW/VPSRAVD/VPSRAVQ—可变位移右算术 VPSRLVW/VPSRLVD/VPSRLVQ—可变位移右逻辑 VPTERNLOGD/VPTERNLOGQ—按位三进制逻辑 VPTESTMB/VPTESTMW/VPTESTMD/VPTESTMQ—逻辑与和设置掩码 VPTESTNMB/W/D/Q—逻辑NAND和设置 VRANGEPD—对于Float64值的打包对的范围限制计算 VRANGEPS—对于Float32值的打包对的范围限制计算 VRANGESD—范围限制计算从一对Scalar Float64值 VRANGESS—从一对标量Float32值计算范围限制 VRCP14PD—计算压缩Float64值的近似倒数 VRCP14SD—计算标量Float64值的近似倒数 VRCP14PS—计算压缩Float32值的近似倒数 VRCP14SS—计算标量Float32值的近似倒数 VRCP28PD—近似于具有小于2 ^ -28相对误差的封装双精度浮点值的倒数 VRCP28SD—近似于标量双精度浮点值的倒数,小于2 ^ -28相对误差 VRCP28PS—近似于具有小于2 ^ -28相对误差的封装单精度浮点值的倒数 VRCP28SS—近似于标量单精度浮点值的倒数,小于2 ^ -28相对误差 VREDUCEPD—对压缩的Float64值执行压缩转换 VREDUCESD—对标量Float64值执行减少转换 VREDUCEPS—对已压缩的Float32值执行减少转换 VREDUCESS—对标量Float32值执行减少转换 VRNDSCALEPD—圆形压缩Float64值以包括给定数目的分数位 VRNDSCALESD—圆形标量浮点值包括给定数量的比特位 VRNDSCALEPS—圆形压缩Float32值以包括给定数目的分数位 VRNDSCALESS—圆形标量浮点值包括给定数量的比特位 VRSQRT14PD—计算压缩Float64值的平方根的近似倒数 VRSQRT14SD—计算标量Float64值的平方根的近似倒数 VRSQRT14PS—计算压缩Float32值的平方根的近似倒数 VRSQRT14SS—计算标量Float32值的平方根的近似倒数 VRSQRT28PD—近似于包装的双精度浮点值的倒数平方根,小于2 ^ -28相对误差 VRSQRT28SD—近似于标量双精度浮点值的倒数平方根,小于2 ^ -28相对误差 VRSQRT28PS—近似于包装的单精度浮点值的倒数平方根,小于2 ^ -28相对误差 VRSQRT28SS—近似于标量单精度浮点值的倒数平方根,小于2 ^ -28相对误差 VSCALEFPD—使用Float64值缩放打包的Float64值 VSCALEFSD—使用Float64值缩放Scalar Float64值 VSCALEFPS—使用Float32值缩放打包的Float32值 VSCALEFSS—使用Float32值缩放标量浮点32值 VSCATTERDPS/VSCATTERDPD/VSCATTERQPS/VSCATTERQPD—分散包装单,包装双与签署的双剑和指数 VSCATTERPF0DPS/VSCATTERPF0QPS/VSCATTERPF0DPD/VSCATTERPF0QPD—稀疏预取打包SP / DP数据值与签名双字,签名的Qword指数使用T0提示与意图写 VSCATTERPF1DPS/VSCATTERPF1QPS/VSCATTERPF1DPD/VSCATTERPF1QPD—稀疏预取打包SP / DP数据值与签名双字,签名的Qword指数使用T1提示与意图写 VSHUFF32x4/VSHUFF64x2/VSHUFI32x4/VSHUFI64x2—随机播放128位粒度的打包值 VTESTPD/VTESTPS—压缩位测试 VZEROALL—零所有YMM寄存器 VZEROUPPER—YMM寄存器的零上限位 WAIT/FWAIT—等待 WBINVD—回写并使缓存无效 WRFSBASE/WRGSBASE—写FS / GS段基 WRMSR—写入模型专用寄存器 WRPKRU—将数据写入用户页密钥寄存器 XACQUIRE/XRELEASE — 硬件锁Elision Prefix提示 XABORT — 事务中止 XADD—交换和添加 XBEGIN — 事务开始 XCHG—与寄存器交换寄存器/存储器 XEND — 事务结束 XGETBV—获取扩展控制寄存器的值 XLAT/XLATB—表查找翻译 XOR—逻辑异或 XORPD—压缩双精度浮点值的按位逻辑异或 XORPS—压缩单精度浮点值的按位逻辑异或 XRSTOR—恢复处理器扩展状态 XRSTORS—恢复处理器扩展状态主管 XSAVE—保存处理器扩展状态 XSAVEC—使用压缩保存处理器扩展状态 XSAVEOPT—保存处理器扩展状态优化 XSAVES—保存处理器扩展状态主管 XSETBV—设置扩展控制寄存器 XTEST — 测试如果在事务执行
AAA
|
未组合的十进制加法调整指令 AAA(ASCII Adgust for Addition) |
说明: |
AAD |
未组合十进制数除法调整指令 AAD(ASCII Adjust for Division) |
说明: |
AAM |
未组合十进制数乘法调整指令 AAM(ASCII Adjust MULtiply) |
说明: |
AAS |
未组合十进制减法调整指令 AAS(ASCII Adjust for Subtraction) |
说明: |
ADC |
带进位加法指令 ADC(Addition Carry) |
说明: |
ADD |
加法指令 ADD(Addition) |
说明: |
AND |
逻辑与运算指令 AND |
说明: |
CALL |
过程调用指令 CALL |
说明: |
CBW |
字节扩展指令 CBW(Convert Byte to Word) |
说明: |
CLC |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
CLD |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
CLI |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
CMC |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
CMP |
比效指令 CMP(CoMPare) |
说明: |
CMPS |
字符串比较指令 |
说明: |
CMPSB |
字符串比较指令 |
说明: |
CMPSW |
字符串比较指令 |
说明: |
CWD |
字扩展指令 CWD(Convert Word to Double Word) |
说明: |
DAA |
组合的十进制加法调整指令 DAA(Decimal Adjust for Addition) |
说明: |
DAS |
组合十进制减法调整指令 DAS(Decimal Adjust for Subtraction) |
说明: |
DEC |
减一指令 DEC(Decrement by 1) |
说明: |
DIV |
无符号数除法指令 DIV(DIVision) |
说明: |
ESC |
处理器交权指令 ESC |
说明: |
HLT |
处理器暂停指令 HLT |
说明: |
IDIV |
带符号数除法指定 IDIV(Interger DIVision) |
说明: |
IMUL |
带符号数乘法指令 IMUL(Integer MULtiply) |
说明: |
IN |
输入指令 IN |
说明: |
INC |
加1指令 INC(INCrement by 1) |
说明: |
INT |
软中断指令 INT |
说明: 操作过程与INTO指令雷同,只需将10H改为n*4即可.所以,本指令也将影响标志位IF及TF. |
INTO |
溢出中断指令 INTO(INTerrupt if Overflow) |
说明: |
IRET |
中断返回指令 IRET |
说明: |
JA |
条件转移指令JA/JNBE |
说明: |
JAE |
条件转移指令JAE/JNB |
说明: |
JB |
条件转移指令JB/JNAE |
说明: 该指令用于无符号数的条件转移 |
JBE |
条件转移指令JBE/JNA |
说明: 该指令用于无符号数的条件转移 |
JC |
条件转移指令 JC |
说明: JC为根据标志位CF进行转移的指令 |
JE |
条件转移指令JE/JZ |
说明: |
JG |
条件转移指令JG/JNLE |
说明: 用于带符号数的条件转移指令 |
JGE |
条件转移指令JGE/JNL |
说明: 用于带符号数的条件转移指令 |
JL |
条件转移指令JL/JNGE |
说明: 用于带符号数的条件转移指令 |
JLE |
条件转移指令JLE/JNG |
说明: 用于带符号数的条件转移指令 |
JMP |
无条件转移指令JMP |
说明: |
JNA |
条件转移指令JBE/JNA |
说明: 该指令用于无符号数的条件转移 |
JNAE |
条件转移指令JB/JNAE |
说明: 该指令用于无符号数的条件转移 |
JNB |
条件转移指令JAE/JNB |
说明: |
JNBE |
条件转移指令JA/JNBE |
说明: |
JNC |
条件转移指令JNC |
说明: JNC为根据标志位CF进行转移的指令 |
JNE |
条件转移指令JNE/JNZ |
说明: |
JNG |
条件转移指令JLE/JNG |
说明: 用于带符号数的条件转移指令 |
JNGE |
条件转移指令JL/JNGE |
说明: 用于带符号数的条件转移指令 |
JNL |
条件转移指令JGE/JNL |
说明: 用于带符号数的条件转移指令 |
JNLE |
条件转移指令JG/JNLE |
说明: 用于带符号数的条件转移指令 |
JNO |
条件转移指令JNO |
说明: JNO是根椐溢出标志位OF进行转移的指令 |
JNP |
条件转移指令JNP/JPO |
说明: |
JNS |
条件转移指令JNS |
说明: JNS是根据符号标志位SF进行转移的指令 |
JNZ |
条件转移指令JNE/JNZ |
说明: |
JO |
条件转移指令JO |
说明: JO是根椐溢出标志位OF进行转移的指令 |
JP |
条件转移指令JP/JPE |
说明: |
JPE |
条件转移指令JP/JPE |
说明: |
JPO |
条件转移指令JNP/JPO |
说明: |
JS |
条件转移指令JS |
说明: JS是根据符号标志位SF进行转移的指令 |
JZ |
条件转移指令JE/JZ |
说明: |
LAHF |
标志传送指令 LAHF |
说明: 该指令不影响FLAG的原来内容,AH只是复制了原FLAG的低8位内容. |
LDS |
从存储器取出32位地址的指令 LDS |
说明: |
LEA |
有效地址传送指令 LEA |
说明: |
LES |
从存储器取出32位地址的指令 LES |
说明: |
LOCK |
封锁总线指令 LOCK |
无可用信息!用户可自行添加! |
LODS |
取字符串元素指令 LODS |
说明: |
LOOP |
循环控制指令LOOP |
说明: |
LOOPE |
循环控制指令LOOPZ/LOOPE |
说明: |
LOOPNE |
循环控制指令LOOPNZ/LOOPNE |
说明: |
LOOPNZ |
循环控制指令LOOPNZ/LOOPNE |
说明: |
LOOPZ |
循环控制指令LOOPZ/LOOPE |
说明: |
MOVE |
数据传送指令 MOV |
说明: |
MOVS |
字符串传送指令 MOVS |
说明: |
MOVSB |
字符串传送指令 MOVS |
说明: |
MOVSW |
字符串传送指令 MOVS |
说明: |
MUL |
无符号数乘法指令 MUL(MULtiply) |
说明: |
NEG |
取补指令 NEG(NEGate) |
说明: |
NOP |
空操作指令 NOP |
说明: 本指令不影响标志位. |
NOT |
逻辑非运算指令 NOT |
说明: |
OR |
逻辑或指令 OR |
说明: |
OUT |
输出指令 OUT |
说明: |
POP |
堆栈操作指令 PUSH和POP |
说明: |
POPF |
标志传送指令 POPF |
说明: 如果对堆栈中的原FLAG内容进行修改,如对TF等标志位进行修改,然后再弹回标志位寄存器FLAG.这是通过指令修改TF标志的唯一方法. |
PUSH |
堆栈操作指令 PUSH和POP |
说明: |
PUSHF |
标志传送指令 PUSHF |
|
RCL |
循环移位指令 |
说明: |
RCR |
循环移位指令 |
说明: |
REP |
重复前缀的说明 |
说明: |
REPE |
重复前缀的说明 |
说明: |
REPNE |
重复前缀的说明 |
说明: |
REPNZ |
重复前缀的说明 |
说明: |
REPZ |
重复前缀的说明 |
说明: |
RET |
返回指令 RET |
说明: |
ROL |
循环移位指令 |
说明: |
ROR |
循环移位指令 |
说明: |
SAHF |
标志传送指令 SAHF |
说明: 本指令将用AH的内容改写FLAG标志寄存器中的SF、ZF、AF、PF、和CF标志,从而改变原来的标志位. |
SAL |
算术左移指令 SAL(Shift Arithmetic Left) |
说明: |
SAR |
算术右移指令 SAR |
说明: |
SBB |
带借位减去指令 SBB(SuBtraction with Borrow) |
说明: |
SCAS |
字符串搜索指令 SCAS |
说明: |
SCASB |
字符串搜索指令 SCAS |
说明: |
SCASW |
字符串搜索指令 SCAS |
说明: |
SHL |
逻辑左移指令 SHL(Shift logical left) |
说明: |
SHR |
逻辑右移指令 SHR |
说明: |
STC |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
STD |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
STI |
处理器控制指令-标志位操作指令 |
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针. |
STOS |
字符串存储指令 STOS |
说明: |
SUB |
减法指令SUB(SUBtract) |
说明: |
TEST |
测试指令 TEST |
说明: TEST与AND指令的关系,有点类似于CMP与SUB指令之间的关系. |
WAIT |
处理器等待指令 WAIT |
说明: 本指令不影响标志位. |
XCHG |
数据交换指令 XCHG |
说明: |
XLAT |
查表指令 XLAT |
说明: |
XOR |
逻辑异或运算指令 XOR |
说明: |
汇编程序从写出到执行的过程
编程(Edit)——1.asm——编译(编译)——1.obj—— 连接(link)——1.exe——加载(command)——内存中的程序——运行(CPU)