https://www.cnblogs.com/findumars/p/3498714.htmlhtml
GAS中每一個操做都是有一個字符的後綴,代表操做數的大小。編程
C聲明數組 |
GAS後綴緩存 |
大小(字節)框架 |
charless |
bide |
1函數 |
shortoop |
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 |
指令 | 功能 |
---|---|
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、命令類 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位標誌出棧 2、算術運算指令 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 3、邏輯運算指令 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 經過進位的循環右移 4、串指令 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時重複 5、程序轉移指令 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 清中斷容許位 6、僞指令 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)