彙編指令速查

彙編指令速查

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

 

 

GCCC中潛入彙編代碼:

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、命令類
    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)
格式: AAA
功能: 對兩個組合的十進制數相加運算(存在AL中)的結果進行調整,產生一個未組合的十進制數放在AX中.

說明:
1. 組合的十進制數和未組合的十進制數:在計算中,十進制數可用四位二進制數編碼,稱爲BCD碼.
當一個節(8位)中存放一位BCD碼,且放在字節的低4位, 高4位爲時稱爲未組合的BCD碼.
2. AAA的調整操做
若(AL) and 0FH>9 或 AF=1,則調整以下:
(AL)<--(AL)+6,(AH)<--(AH)+1,AF=1,CF<--AF,(AL)<--(AL) and 0FH

AAD

未組合十進制數除法調整指令 AAD(ASCII Adjust for Division)
格式: AAD
功能: 在除法指令前對AX中的兩個未組合十進制數進行調整,以便能用DIV指令實現兩個未組合的十進制數的除法運算,其結果爲未組合的十進制數,商(在AL中)和餘數(在AH中).

說明:
1. AAD指令是在執行除法DIV以前使用的,以便獲得二進制結果存於AL中,而後除以OPRD,獲得的商在AL中,餘數在AH中.
2. 示例: MOV BL,5
MOV AX,0308H
AAD ;(AL)<--1EH+08H=26H,(AH)<--0
DIV BL ;商=07H-->(AL),餘數=03H-->(AH).

AAM

未組合十進制數乘法調整指令 AAM(ASCII Adjust MULtiply)
格式: AAM
功能: 對兩個未組合的十進制數相乘後存於AX中的結果進行調整,產生一個未組合的十進制數存在AL中.

說明:
1. 其實是兩個未組合的十進制數字節相乘,一個0~9的數與另外一個0~9的數相乘其積最大爲81.爲了獲得正確的結果,應進行以下調整:
乘積: (AH)<--(AL)/10
(AL)<--(AL)MOD10
2. 本指令應跟在MUL指令後使用,乘積的兩位十進制結果,高位放在AH中,低位放在AL中.AH內容是MUL指令的結果被10除的商,即(AL)/10,而最後的AL內容是乘積被10整除的餘數(即個位數).

AAS

未組合十進制減法調整指令 AAS(ASCII Adjust for Subtraction)
格式: AAS
功能: 對兩個未組合十進制數相減後存於AL中的結果進行調整,調整後產生一個未組合的十進制數數且仍存於AL中.

說明:
1. 本指令影響標誌位CF及AF.
2. 調整操做
若(AL) and 0FH > 9 或 AF=1
則(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,
不然(AL)<--(AL) and 0FH

ADC

帶進位加法指令 ADC(Addition Carry)
格式: ADC OPRD1,OPRD2
功能: OPRD1<--OPRD1 + OPRD2 + CF

說明:
1. OPRD1爲任一通用寄存器或存儲器操做數,能夠是任意一個通用寄存器,並且還能夠是任意一個存儲器操做數.
OPRD2爲當即數,也能夠是任意一個通用寄存器操做數.當即數只能用於源操做數.
2. OPRD1和OPRD2均爲寄存器是容許的,一個爲寄存器而另外一個爲存儲器也是容許的,但不容許兩個都是存儲器操做數.
3. 加法指令運算的結果對CF、SF、OF、PF、ZF、AF都會有影響.以上標誌也稱爲結果標誌.
4. 該指令對標誌位的影響同ADD指令.

ADD

加法指令 ADD(Addition)
格式: ADD OPRD1,OPRD2
功能: 兩數相加

說明:
1. OPRD1爲任一通用寄存器或存儲器操做數,能夠是任意一個通用寄存器,並且還能夠是任意一個存儲器操做數.
OPRD2爲當即數,也能夠是任意一個通用寄存器操做數.當即數只能用於源操做數.
2. OPRD1和OPRD2均爲寄存器是容許的,一個爲寄存器而另外一個爲存儲器也是容許的, 但不容許兩個都是存儲器操做數.
3. 加法指令運算的結果對CF、SF、OF、PF、ZF、AF都會有影響.以上標誌也稱爲結果標誌.加法指令適用於無符號數或有符號數的加法運算.

AND

邏輯與運算指令 AND
格式: AND OPRD1,OPRD2
功能: 對兩個操做數實現按位邏輯與運算,結果送至目的操做數.本指令能夠進行字節或字的‘與’運算,
OPRD1<--OPRD1 and OPRD2.

說明:
1. 目的操做數OPRD1爲任一通用寄存器或存儲器操做數.源操做數OPRD2爲當即數,任一通用寄存器或存儲器操做數.
2. 示例: AND AL,0FH ;(AL)<--(AL) AND 0FH
AND AX,BX ;(AX)<--(AX) AND (BX)
AND DX,BUFFER[SI+BX]
AND BETA[BX],00FFH
注意: 兩數相與,有一個數假則值爲假

CALL

過程調用指令 CALL
格式: CALL OPRD
功能: 過程調用指令

說明:
1. 其中OPRD爲過程的目的地址.
2. 過程調用可分爲段內調用和段間調用兩種.尋址方式也能夠分爲直接尋址和間接尋址兩種.
3. 本指令不影響標誌位.

CBW

字節擴展指令 CBW(Convert Byte to Word)
格式: CBW
功能: 將字節擴展爲字,即把AL寄存器的符號位擴展到AH中.

說明:
1. 兩個字節相除時,先使用本指令造成一個雙字節長的被除數.
2. 本指令不影響標誌位.
3. 示例: MOV AL,25
CBW
IDIV BYTE PTR DATA1

CLC

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

CLD

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

CLI

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

CMC

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

CMP

比效指令 CMP(CoMPare)
格式: CMP OPRD1,OPRD2
功能: 對兩數進行相減,進行比較.

說明:
1. OPRD1爲任意通用寄存器或存儲器操做數.
OPRD2爲任意通用寄存器或存儲器操做數,當即數也可用做源操做數OPRD2.
2. 對標誌位的影響同SUB指令,完成的操做與SUB指令相似,惟一的區別是不將OPRD1-OPRD2的結果送回OPRD1,而只是比較.
3. 在8088/8086指令系統中,專門提供了一組根據帶符號數比較大小後,實現條件轉移的指令.

CMPS

字符串比較指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能: 由SI尋址的源串中數據與由DI尋址的目的串中數據進行比較,比較結果送標誌位,而不改變操做數自己.
同時SI,DI將自動調整.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 本指令影響標誌位AF、CF、OF、SF、PF、ZF.本指令可用來檢查二個字符串是否相同,可使用循環控制方法對整串進行比較.
3. 與MOVS類似,CMPS指令也能夠不使用操做數,此時可用指令CMPSB或CMPSW分別表示字節串比較或字串比較.

CMPSB

字符串比較指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能: 由SI尋址的源串中數據與由DI尋址的目的串中數據進行比較,比較結果送標誌位,而不改變操做數自己.
同時SI,DI將自動調整.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 本指令影響標誌位AF、CF、OF、SF、PF、ZF.本指令可用來檢查二個字符串是否相同,可使用循環控制方法對整串進行比較.
3. 與MOVS類似,CMPS指令也能夠不使用操做數,此時可用指令CMPSB或CMPSW分別表示字節串比較或字串比較.

CMPSW

字符串比較指令
格式: CMPS OPRD1,OPRD2
CMPSB
CMPSW
功能: 由SI尋址的源串中數據與由DI尋址的目的串中數據進行比較,比較結果送標誌位,而不改變操做數自己.
同時SI,DI將自動調整.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 本指令影響標誌位AF、CF、OF、SF、PF、ZF.本指令可用來檢查二個字符串是否相同,可使用循環控制方法對整串進行比較.
3. 與MOVS類似,CMPS指令也能夠不使用操做數,此時可用指令CMPSB或CMPSW分別表示字節串比較或字串比較.

CWD

字擴展指令 CWD(Convert Word to Double Word)
格式: CWD
功能: 將字擴展爲雙字長,即把AX寄存器的符號位擴展到DX中.

說明:
1. 兩個字或字節相除時,先用本指令造成一個雙字長的的被除數.
2. 本指令不影響標誌位.
3. 示例: 在B一、B二、B3字節類型變量中,分別存有8們帶符號數a、b、c,實現(a*b+c)/a運算。

DAA

組合的十進制加法調整指令 DAA(Decimal Adjust for Addition)
格式: DAA
功能: 對AL中的兩個組合進制數相加的結果進行調整,調整結果仍放在AL中,進位標誌放在CF中.

說明:
1. 調整操做以下
(1) 若(AL) and 0FH>9 或 AF=1,則(AL)<--(AL)+6,AF<--1,對低四位的調整.
(2) 若(AL) and 0F0H>90H 或 CF=1,則(AL)<--(AL)+60H,CF<--1.
2. 示例: (AL)=18H,(BL)=06H
ADD AL,BL ; (AL)<--(AL)+(BL) ; (AL)=1EH
DAA ; (AL)

DAS

組合十進制減法調整指令 DAS(Decimal Adjust for Subtraction)
格式: DAS
功能: 對兩個組合十進制數相減後存於AL中的結果進行調整,調整後產生一個組合的十進制數且仍存於AL中.

說明:
調整操做
若(AL) and 0FH > 9 或 AF=1,則(AL)<--(AL)-6,AF=1
若(AL) and 0F0H > 90H 或 CF=1,則(AL)<--(AL)-60,CF=1

DEC

減一指令 DEC(Decrement by 1)
格式: DEC OPRD
功能: OPRD<--OPRD-1

說明:
1. OPRD 爲寄存器或存儲器操做數.
2. 這條指令執行結果影響AF、OF、PF、SF、ZF標誌位,但不影響CF標誌位.
3. 示例 DEC AX
DEC CL
DEC WORD PTR[DI]
DEC ALFA[DI+BX]

DIV

無符號數除法指令 DIV(DIVision)
格式: DIV OPRD
功能: 實現兩個無符號二進制數除法運算.

說明:
1. 其中OPRD爲任一個通用寄存器或存儲器操做數.
2. 字節相除,被除數在AX中;字相除,被除數在DX,AX中,除數在OPRD中.
字節除法: (AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
字除法: (AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD

ESC

處理器交權指令 ESC
格式: ESC EXTOPRD,OPRD
功能: 使用本指令能夠實現協處理器出放在ESC指令代碼中的6位常數,該常數指明協處理器要完成的功能.
當源操做數爲存儲器變量時,則取出該存儲器操做數傳送給協處理器.

說明:
1. 其中EXTOPRD爲外部操做碼,OPRD爲源操做數.
2. 本指不影響標誌位.

HLT

處理器暫停指令 HLT
格式: HLT
功能: 使處理器處於暫時停機狀態.

說明:
1. 本指令不影響標誌位.
2. 由執行HLT引發的暫停,只有RESET(復位)、NMI(非屏蔽中斷請求)、INTR(可屏蔽的外部中斷請求)信號可使
其退出暫停狀態.它可用於等待中斷的到來或多機系統的同步操做.

IDIV

帶符號數除法指定 IDIV(Interger DIVision)
格式: IDIV OPRD
功能: 這實現兩個帶符號數的二進制除法運算.

說明:
1. 其中OPRD爲任一通用寄存器或存儲器操做數.
2. 理由與IMUL相同,只有IDIV指令,才能獲得符號數相除的正確結果.
3. 當被除數爲8位,在進行字節除法前,應把AL的符號位擴充至AH中.在16位除法時,若被除數爲16位,則應將AX中的符號位擴到DX中.

IMUL

帶符號數乘法指令 IMUL(Integer MULtiply)
格式: IMUL OPRD
功能: 完成兩個帶符號數的相乘

說明:
1. 其中OPRD爲任一通用寄存器或存儲器操做數.
2. MUL指令對帶符號相乘時,不能獲得正確的結果.
例如: (AL)=255
(CL)=255
MUL CL
(AX)=65025
注意: 這對無符號數講,結果是正確的,但對帶符號數講,至關於(-1)*(-1)結果應爲+1,而65025對應的帶符號數爲-511,顯然是不正確的.

IN

輸入指令 IN
格式: IN AL,n ;(AL)<--(n)
IN AX,n ;(AX)<--(n+1),(n)
IN AL,DX ;(AL)<--[(DX)]
IN AX,DX ;(AX)<--[(DX)+1],[(DX)]
功能: 輸入指令

說明:
1. 其中n爲8位的端口地址,當字節輸入時,將端口地址n+1的內容送至AH中,端口地址n的內容送AL中.
2. 端口地址也能夠是16位的,但必須將16位的端口地址送入DX中.當字節尋址時,由DX內容做端口地址的內容送至AL中;
當輸入數據字時,[(DX)+1]送AH,[(DX)]送AL中,用符號:(AX)<--[(DX)+1],[(DX)]表示.

INC

加1指令 INC(INCrement by 1)
格式: INC OPRD
功能: OPRD<--OPRD+1

說明:
1. OPRD 爲寄存器或存儲器操做數.
2. 這條指令執行結果影響AF、OF、PF、SF、ZF標誌位,但不影響CF標誌位.
3. 示例:
INC SI;(SI)<--(SI)+1
INC WORD PTR[BX]
INC BYTE PTR[BX+DI]
INC CL;(CL)<--(CL)+1
注意: 上述第二,三兩條指令,是對存儲字及存儲字節的內容加1以替代原來的內容.

INT

軟中斷指令 INT
格式: INT n 其中n爲軟中斷的類型號.
功能: 本指令將產生一個軟中斷,把控制轉向一個類型號爲n的軟中斷,該中斷處理程序入口地址在中斷向量表的n*4地址
處的二個存儲器字(4個單元)中.

說明: 操做過程與INTO指令雷同,只需將10H改成n*4便可.因此,本指令也將影響標誌位IF及TF.

INTO

溢出中斷指令 INTO(INTerrupt if Overflow)
格式: INTO
功能: 本指令檢測OF標誌位,當OF=1時,說明已發生溢出,當即產生一箇中斷類型4的中斷,當OF=0時,本指令不起做用.

說明:
1. 本指令影響標誌位IF及TF.
2. 本指令可用於溢出處理,當OF=1時,產生一個類型4的軟中斷.在中斷處理程序中完成溢出的處理操做.

IRET

中斷返回指令 IRET
格式: IRET
功能: 用於中斷處理程序中,從中斷程序的斷點處返回,繼續執行原程序.

說明:
1. 本指令將影響全部標誌位.
2. 不管是軟中斷,仍是硬中斷,本指令都可使其返回到中斷程序的斷點處繼續執行原程序.

JA

條件轉移指令JA/JNBE
格式: JA/JNBE標號
功能: 爲高於/不低於等於的轉移指令

說明:
1. 例如兩個符號數a,b比較時,a>b(即CF=0,ZF=0)時轉移.由於單一標誌位CF=0,只表示a>=b.
2. JA/JNBE是同一條指令的兩種不一樣的助記符.
3. 該指令用於無符號數進行條件轉移

JAE

條件轉移指令JAE/JNB
格式: JAE/JNB 標號
功能: 爲高於等於/不低於的轉移指令

說明:
1. JAE/JNB是同一條指令的兩種不一樣的助記符.
2. 該指令用於無符號數進行條件轉移.

JB

條件轉移指令JB/JNAE
格式: JB/JNAE 標號
功能: 低於/不高於等於時轉移

說明: 該指令用於無符號數的條件轉移

JBE

條件轉移指令JBE/JNA
格式: JBE/JNA 標號
功能: 低於等於/不高於時轉移

說明: 該指令用於無符號數的條件轉移

JC

條件轉移指令 JC
格式: JC 標號
功能: CF=1,轉至標號處執行

說明: JC爲根據標誌位CF進行轉移的指令

JE

條件轉移指令JE/JZ
格式: JE/JZ標號
功能: ZF=1,轉至標號處執

說明:
1. 指令JE與JZ等價,它們是根據標誌位ZF進行轉移的指令
2. JE,JZ均爲一條指令的兩種助記符表示方法

JG

條件轉移指令JG/JNLE
格式: JG/JNLE 標號
功能: 大於/不小於等於時轉移

說明: 用於帶符號數的條件轉移指令

JGE

條件轉移指令JGE/JNL
格式: JGE/JNL標號
功能: 大於等於/不小於時轉移

說明: 用於帶符號數的條件轉移指令

JL

條件轉移指令JL/JNGE
格式: JL/JNGE標號
功能: 小於/不大於等於時轉移

說明: 用於帶符號數的條件轉移指令

JLE

條件轉移指令JLE/JNG
格式: JLE/JNG 標號
功能: 小於等於/不大於時轉移

說明: 用於帶符號數的條件轉移指令

JMP

無條件轉移指令JMP
格式: JMP OPRD
功能: JMP指令將無條件地控制程序轉移到目的地址去執行.當目的地址仍在同一個代碼段內,稱爲段內轉移;當目標地址不在同一個代碼段內,則稱爲段間轉移.這兩種狀況都將產生不一樣的指令代碼,以便能正確地生成目的地址,在段內轉移時,指令只要能提供目的地址的段內偏移量即夠了;而在段間轉移時,指令應能提供目的地址的段地址及段內偏移地址值.

說明:
1. 其中OPRD爲轉移的目的地址.程序轉移到目的地址所指向的指令繼續往下執行.
2. 本組指令對標誌位無影響.
3. <1> 段內直接轉移指令: JMP NEAR 標號
<2> 段內間接轉移指令: JMP OPRD
<3> 段間直接轉移指令: JMP FAR 標號
<4> 段間間接轉移指令:JMP OPRD其中的OPRD爲存儲器雙字操做數.段間間接轉移只能經過存儲器操做數來實現.

JNA

條件轉移指令JBE/JNA
格式: JBE/JNA 標號
功能: 低於等於/不高於時轉移

說明: 該指令用於無符號數的條件轉移

JNAE

條件轉移指令JB/JNAE
格式: JB/JNAE 標號
功能: 低於/不高於等於時轉移

說明: 該指令用於無符號數的條件轉移

JNB

條件轉移指令JAE/JNB
格式: JAE/JNB 標號
功能: 爲高於等於/不低於的轉移指令

說明:
1. JAE/JNB是同一條指令的兩種不一樣的助記符.
2. 該指令用於無符號數進行條件轉移.

JNBE

條件轉移指令JA/JNBE
格式: JA/JNBE標號
功能: 爲高於/不低於等於的轉移指令

說明:
1. 例如兩個符號數a,b比較時,a>b(即CF=0,ZF=0)時轉移.由於單一標誌位CF=0,只表示a>=b.
2. JA/JNBE是同一條指令的兩種不一樣的助記符.
3. 該指令用於無符號數進行條件轉移

JNC

條件轉移指令JNC
格式: JNC標號
功能: CF=0,轉至標號處執行

說明: JNC爲根據標誌位CF進行轉移的指令

JNE

條件轉移指令JNE/JNZ
格式: JNE/JNZ 標號
功能: ZF=0,轉至標號處執行

說明:
1. 指令JNE與JNZ等價,它們是根據標誌位ZF進行轉移的指令
2. JNE,JNZ均爲一條指令的兩種助記符表示方法

JNG

條件轉移指令JLE/JNG
格式: JLE/JNG 標號
功能: 小於等於/不大於時轉移

說明: 用於帶符號數的條件轉移指令

JNGE

條件轉移指令JL/JNGE
格式: JL/JNGE標號
功能: 小於/不大於等於時轉移

說明: 用於帶符號數的條件轉移指令

JNL

條件轉移指令JGE/JNL
格式: JGE/JNL標號
功能: 大於等於/不小於時轉移

說明: 用於帶符號數的條件轉移指令

JNLE

條件轉移指令JG/JNLE
格式: JG/JNLE 標號
功能: 大於/不小於等於時轉移

說明: 用於帶符號數的條件轉移指令

JNO

條件轉移指令JNO
格式: JNO 標號
功能: OF=0,轉至標號處執行

說明: JNO是根椐溢出標誌位OF進行轉移的指令

JNP

條件轉移指令JNP/JPO
格式: JNP/JPO 標號
功能: PF=0,轉至標號處執行

說明:
1. 指令JNP與JPO,它們是根據奇偶標誌位PF進行轉移的指令
2. JNP,JPO均爲一條指令的兩種助記符表示方法

JNS

條件轉移指令JNS
格式: JNS 標號
功能: SF=0,轉至標號處執行

說明: JNS是根據符號標誌位SF進行轉移的指令

JNZ

條件轉移指令JNE/JNZ
格式: JNE/JNZ 標號
功能: ZF=0,轉至標號處執行

說明:
1. 指令JNE與JNZ等價,它們是根據標誌位ZF進行轉移的指令
2. JNE,JNZ均爲一條指令的兩種助記符表示方法

JO

條件轉移指令JO
格式: JO 標號
功能: OF=1,轉至標號處執行

說明: JO是根椐溢出標誌位OF進行轉移的指令

JP

條件轉移指令JP/JPE
格式: JP/JPE 標號
功能: PF=1,轉至標號處執行

說明:
1. 指令JP與JPE,它們是根據奇偶標誌位PF進行轉移的指令
2. JP,JPE均爲一條指令的兩種助記符表示方法

JPE

條件轉移指令JP/JPE
格式: JP/JPE 標號
功能: PF=1,轉至標號處執行

說明:
1. 指令JP與JPE,它們是根據奇偶標誌位PF進行轉移的指令
2. JP,JPE均爲一條指令的兩種助記符表示方法

JPO

條件轉移指令JNP/JPO
格式: JNP/JPO 標號
功能: PF=0,轉至標號處執行

說明:
1. 指令JNP與JPO,它們是根據奇偶標誌位PF進行轉移的指令
2. JNP,JPO均爲一條指令的兩種助記符表示方法

JS

條件轉移指令JS
格式: JS 標號
功能: SF=1,轉至標號處執行

說明: JS是根據符號標誌位SF進行轉移的指令

JZ

條件轉移指令JE/JZ
格式: JE/JZ標號
功能: ZF=1,轉至標號處執

說明:
1. 指令JE與JZ等價,它們是根據標誌位ZF進行轉移的指令
2. JE,JZ均爲一條指令的兩種助記符表示方法

LAHF

標誌傳送指令 LAHF
格式: LAHF
功能: 取FLAG標誌寄存器低8位至AH寄存器.(AH)<--(FLAG)7~0

說明: 該指令不影響FLAG的原來內容,AH只是複製了原FLAG的低8位內容.

LDS

從存儲器取出32位地址的指令 LDS
格式: LDS OPRD1,OPRD2
功能: 從存儲器取出32位地址的指令.

說明:
OPRD1 爲任意一個16位的寄存器.
OPRD2 爲32位的存儲器地址.
示例: LDS SI,ABCD
LDS BX,FAST[SI]
LDS DI,[BX]
注意: 上面LDS DI,[BX]指令的功能是把BX所指的32位地址指針的段地址送入DS,偏移地址送入DI.

LEA

有效地址傳送指令 LEA
格式: LEA OPRD1,OPRD2
功能: 將源操做數給出的有效地址傳送到指定的的寄存器中.

說明:
1. OPRD1 爲目的操做數,可爲任意一個16位的通用寄存器.
OPRD2 爲源操做數,可爲變量名、標號或地址表達式.
示例: LEA BX,DATA1
LEA DX,BETA[BX+SI]
LEA BX BX,[BP],[DI]
2. 本指令對標誌位無影響。

LES

從存儲器取出32位地址的指令 LES
格式: LES OPRD1,OPRD2
功能: 從存儲器取出32位地址的指令.

說明:
OPRD1 爲任意一個16位的寄存器.
OPRD2 爲32位的存儲器地址.
示例: LES SI,ABCD
LES BX,FAST[SI]
LES DI,[BX]
注意: 上面LES DI,[BX]指令的功能是把BX所指的32位地址指針的段地址送入ES,偏移地址送入DI.

LOCK

封鎖總線指令 LOCK
格式: LOCK
功能: 指令是一個前綴,可放在指令的前面,告訴CPU在執行該指令時,不容許其它設備對總線進行訪問.

無可用信息!用戶可自行添加!

LODS

取字符串元素指令 LODS
格式: LODS OPRD 其中OPRD爲源字符串符號地址.
功能: 把SI尋址的源串的數據字節送AL或數據字送AX中去, 並根據DF的值修改地址指針SI進行自動調整.

說明:
1. 本指令不影響標誌位.
2. 當不使用操做數時,可用LODS(字節串)或LODSW(字串)指令.

LOOP

循環控制指令LOOP
格式: LOOP 標號
功能: (CX)<--(CX)-1,(CX)<>0,則轉移至標號處循環執行, 直至(CX)=0,繼續執行後繼指令.

說明:
1. 本指令是用CX寄存器做爲計數器,來控制程序的循環.
2. 它屬於段內SHORT短類型轉移,目的地址必須距本指令在-128到+127個字節的範圍內.

LOOPE

循環控制指令LOOPZ/LOOPE
格式: LOOPZ/LOOPE 標號
功能: (CX)<--(CX)-1,(CX)<>0 且ZF=1時,轉至標號處循環

說明:
1. 本指令是用CX寄存器做爲計數器,來控制程序的循環.
2. 它屬於段內SHORT短類型轉移,目的地址必須距本指令在-128到+127個字節的範圍內.
3. 以上兩種助記符等價.

LOOPNE

循環控制指令LOOPNZ/LOOPNE
格式: LOOPNZ/LOOPNE 標號
功能: (CX)<--(CX)-1,(CX)<>0 且ZF=0時,轉至標號處循環

說明:
1. 本指令是用CX寄存器做爲計數器,來控制程序的循環.
2. 它屬於段內SHORT短類型轉移,目的地址必須距本指令在-128到+127個字節的範圍內.
3. 以上兩種助記符等價.

LOOPNZ

循環控制指令LOOPNZ/LOOPNE
格式: LOOPNZ/LOOPNE 標號
功能: (CX)<--(CX)-1,(CX)<>0 且ZF=0時,轉至標號處循環

說明:
1. 本指令是用CX寄存器做爲計數器,來控制程序的循環.
2. 它屬於段內SHORT短類型轉移,目的地址必須距本指令在-128到+127個字節的範圍內.
3. 以上兩種助記符等價.

LOOPZ

循環控制指令LOOPZ/LOOPE
格式: LOOPZ/LOOPE 標號
功能: (CX)<--(CX)-1,(CX)<>0 且ZF=1時,轉至標號處循環

說明:
1. 本指令是用CX寄存器做爲計數器,來控制程序的循環.
2. 它屬於段內SHORT短類型轉移,目的地址必須距本指令在-128到+127個字節的範圍內.
3. 以上兩種助記符等價.

MOVE

數據傳送指令 MOV
格式: MOV OPRD1,OPRD2
功能: 本指令將一個源操做數送到目的操做數中,即OPRD1<--OPRD2.

說明:
1. OPRD1 爲目的操做數,能夠是寄存器、存儲器、累加器.
OPRD2 爲源操做數,能夠是寄存器、存儲器、累加器和當即數.
2. MOV 指令以分爲如下四種狀況:
<1> 寄存器與寄存器之間的數據傳送指令
<2> 當即數到通用寄存器數據傳送指令
<3> 寄存器與存儲器之間的數據傳送指令
<4> 當即數到存儲器的數據傳送
3. 本指令不影響狀態標誌位

MOVS

字符串傳送指令 MOVS
格式: MOVS OPRD1,OPRD2
MOVSB
MOVSW
功能: OPRD1<--OPRD2.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 字節串操做: 若DF=0,則做加, 若DF=1,則做減.
3. 對字串操做時: 若DF=0,則做加,若DF=1,則做減,.
4. 在指令中不出現操做數時,字節串傳送格式爲MOVSB、字串傳送格式爲MOVSW.
5. 本指令不影響標誌位.

MOVSB

字符串傳送指令 MOVS
格式: MOVS OPRD1,OPRD2
MOVSB
MOVSW
功能: OPRD1<--OPRD2.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 字節串操做: 若DF=0,則做加, 若DF=1,則做減.
3. 對字串操做時: 若DF=0,則做加,若DF=1,則做減,.
4. 在指令中不出現操做數時,字節串傳送格式爲MOVSB、字串傳送格式爲MOVSW.
5. 本指令不影響標誌位.

MOVSW

字符串傳送指令 MOVS
格式: MOVS OPRD1,OPRD2
MOVSB
MOVSW
功能: OPRD1<--OPRD2.

說明:
1. 其中OPRD2爲源串符號地址,OPRD1爲目的串符號地址.
2. 字節串操做: 若DF=0,則做加, 若DF=1,則做減.
3. 對字串操做時: 若DF=0,則做加,若DF=1,則做減,.
4. 在指令中不出現操做數時,字節串傳送格式爲MOVSB、字串傳送格式爲MOVSW.
5. 本指令不影響標誌位.

MUL

無符號數乘法指令 MUL(MULtiply)
格式: MUL OPRD
功能: 乘法操做.

說明:
1. OPRD爲通用寄存器或存儲器操做數.
2. OPRD爲源操做數,即做乘數.目的操做數是隱含的,即被乘數老是指定爲累加器AX或AL的內容.
3. 16位乘法時,AX中爲被乘數.8位乘法時,AL爲被乘數.當16位乘法時,32位的乘積存於DX及AX中;8位乘法的16位乘積存於AX中.
4. 操做過程: 字節相乘:(AX)<--(AL)*OPRD,當結果的高位字節(AH)不等於0時,則CF=一、OF=1.

NEG

取補指令 NEG(NEGate)
格式: NEG OPRD
功能: 對操做數OPRD進行取補操做,而後將結果送回OPRD.取補操做也叫做求補操做,就是求一個數的相反數的補碼.

說明:
1. OPRD爲任意通用寄存器或存儲器操做數.
2. 示例: (AL)=44H,取補後,(AL)=0BCH(-44H).
3. 本指令影響標誌位CF、OF、SF、PF、ZF及AF.

NOP

空操做指令 NOP
格式: NOP
功能: 本指令不產生任何結果,僅消耗幾個時鐘週期的時間,接着執行後續指令,經常使用於程序的延時等.

說明: 本指令不影響標誌位.

NOT

邏輯非運算指令 NOT
格式: NOT OPRD
功能: 完成對操做數按位求反運算(即0變1,1變0),結果關回原操做數.

說明:
1. 其中OPRD可爲任一通用寄存器或存儲器操做數.
2. 本指梳令能夠進行字或字節‘非’運算.
3. 本指令不影響標誌位.

OR

邏輯或指令 OR
格式: OR OPRD1,OPRD2
功能: OR指令完成對兩個操做數按位的‘或’運算,結果送至目的操做數中,本指令能夠進行字節或字的‘或’運算.
OPRD1<--OPRD1 OR OPRD2.

說明:
1. 其中OPRD1,OPRD2含義與AND指令相同,對標誌位的影響也與AND指令相同.
2. 兩數相或,有一個數爲真則值爲真.

OUT

輸出指令 OUT
格式: OUT n,AL ;(n)<--(AL)
功能: 輸出指令

說明:
1. OUT n,AX ;(n+1),(n)<--(AX)
OUT DX,AL ;[(DX)]<--(AL)
OUT DX,AX ;[(DX)+1],[(DX)]<--(AX)
2. 輸入指令及輸出指令對標誌位都不影響.

POP

堆棧操做指令 PUSH和POP
格式: PUSH OPRD
POP OPRD
功能: 實現壓入操做的指令是PUSH指令;實現彈出操做的指令是POP指令.

說明:
1. OPRD爲16位(字)操做數,能夠是寄存器或存儲器操做數.
2. POP指令的操做過程是: POP OPRD:OPRD<--((SP)),(SP)<--(SP)+2
它與壓入操做相反,是先彈出棧頂的數頂,而後再修改指針SP的內容.
3. 示例: POP AX
POP DS
POP DATA1 POP ALFA[BX][DI]
4. PUSH和POP指令對狀態標誌位沒有影響.

POPF

標誌傳送指令 POPF
格式: POPF
功能: 本指令的功能與PUSHF相反,在子程序調用和中斷服務程序中,每每用PUSHF指令保護FLAG的內容,用POPF指令將保護的FLAG內容恢復.

說明: 若是對堆棧中的原FLAG內容進行修改,如對TF等標誌位進行修改,而後再彈回標誌位寄存器FLAG.這是經過指令修改TF標誌的惟一方法.

PUSH

堆棧操做指令 PUSH和POP
格式: PUSH OPRD
POP OPRD
功能: 實現壓入操做的指令是PUSH指令;實現彈出操做的指令是POP指令.

說明:
1. OPRD爲16位(字)操做數,能夠是寄存器或存儲器操做數.
2. PUSH的操做過程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆棧指針SP(壓入時爲自動減2),而後,將指定的操做數送入新的棧頂位置.
此處的((SP))<--OPRD,也能夠理解爲: [(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD

PUSHF

標誌傳送指令 PUSHF
格式: PUSHF
功能: 本指令能夠把標誌寄存器的內容保存到堆棧中去

 

RCL

循環移位指令
格式: ROL OPRD1,COUNT ;不含進位標誌位CF在循環中的左循環移位指令.
ROR OPRD1,COUNT ;不含進位示志位CF在循環中的右循環移位指令.
RCL OPRD1,COUNT ;帶進位的左循環移位指令.
RCR OPRD1,COUNT ;帶進位的右循環移位指令.

說明:
1. 本指令組隻影響標誌CF、OF.OF由移入CF的內容決定,OF取決於移位一次後符號位是否改變,如改變,則OF=1.
2. 因爲是循環移位,因此對字節移位8次; 對字移位16次,就可恢復爲原操做數.因爲帶CF的循環移位,能夠將CF的內容移入,
因此能夠利用它實現多字節的循環.

RCR

循環移位指令
格式: ROL OPRD1,COUNT ;不含進位標誌位CF在循環中的左循環移位指令.
ROR OPRD1,COUNT ;不含進位示志位CF在循環中的右循環移位指令.
RCL OPRD1,COUNT ;帶進位的左循環移位指令.
RCR OPRD1,COUNT ;帶進位的右循環移位指令.

說明:
1. 本指令組隻影響標誌CF、OF.OF由移入CF的內容決定,OF取決於移位一次後符號位是否改變,如改變,則OF=1.
2. 因爲是循環移位,因此對字節移位8次; 對字移位16次,就可恢復爲原操做數.因爲帶CF的循環移位,能夠將CF的內容移入,因此能夠利用它實現多字節的循環.
注意: 以上程序中的指令SHR AL,CL如改成SAR AL,CL,雖然最高4位可移入低4位,但最高位不爲0,故應加入一條指令AND AL,0FH.不然,若最高位不爲0時,將獲得錯誤結果.

REP

重複前綴的說明
格式: REP ;CX<>0 重複執行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重複執行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重複執行字符串指令
功能: 在串操做指令前加上重複前綴,能夠對字符串進重複處理.因爲加上重複前綴後,對應的指令代碼是不一樣的,因此指令的功能便具備重複處理的功能,重複的次數存放在CX寄存器中.

說明:
1. REP與MOVS或STOS串操做指令相結合使用,完成一組字符的傳送或創建一組相同數據的字符串.
2. REPZ/REPE經常使用與CMPS串操做指令結合使用, 能夠完成兩組字符串的比較.
3. REPZ/REPE常與SCAS指令結合使用,能夠完成在一個字符串中搜索一個關鍵字.
4. REPNZ/REPNE與CMPS指令結合使用,表示當串未結束(CX=1)且當對應串元素不相同(ZF=0)時,繼續重複執行串比較指令.

REPE

重複前綴的說明
格式: REP ;CX<>0 重複執行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重複執行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重複執行字符串指令
功能: 在串操做指令前加上重複前綴,能夠對字符串進重複處理.因爲加上重複前綴後,對應的指令代碼是不一樣的,因此指令的功能便具備重複處理的功能,重複的次數存放在CX寄存器中.

說明:
1. REPZ/REPE經常使用與CMPS串操做指令結合使用, 能夠完成兩組字符串的比較.
2. REPZ/REPE常與SCAS指令結合使用,能夠完成在一個字符串中搜索一個關鍵字.
3. REPNZ/REPNE與CMPS指令結合使用,表示當串未結束(CX=1)且當對應串元素不相同(ZF=0)時,繼續重複執行串比較指令.
4. REPNZ/REPNE與SCAS指令結合使用,表示串未結束(CX=1)且當關鍵字與串元素不相同(ZF=0)時,繼續重複執行串搜索指令.

REPNE

重複前綴的說明
格式: REP ;CX<>0 重複執行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重複執行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重複執行字符串指令

說明:
1. REPZ/REPE經常使用與CMPS串操做指令結合使用, 能夠完成兩組字符串的比較.
2. REPZ/REPE常與SCAS指令結合使用,能夠完成在一個字符串中搜索一個關鍵字.
3. REPNZ/REPNE與CMPS指令結合使用,表示當串未結束(CX=1)且當對應串元素不相同(ZF=0)時,繼續重複執行串比較指令.
4. REPNZ/REPNE與SCAS指令結合使用,表示串未結束(CX=1)且當關鍵字與串元素不相同(ZF=0)時,繼續重複執行串搜索指令.

REPNZ

重複前綴的說明
格式: REP ;CX<>0 重複執行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重複執行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重複執行字符串指令

說明:
1. REPZ/REPE經常使用與CMPS串操做指令結合使用, 能夠完成兩組字符串的比較.
2. REPZ/REPE常與SCAS指令結合使用,能夠完成在一個字符串中搜索一個關鍵字.
3. REPNZ/REPNE與CMPS指令結合使用,表示當串未結束(CX=1)且當對應串元素不相同(ZF=0)時,繼續重複執行串比較指令.
4. REPNZ/REPNE與SCAS指令結合使用,表示串未結束(CX=1)且當關鍵字與串元素不相同(ZF=0)時,繼續重複執行串搜索指令.

REPZ

重複前綴的說明
格式: REP ;CX<>0 重複執行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重複執行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重複執行字符串指令
功能: 在串操做指令前加上重複前綴,能夠對字符串進重複處理.因爲加上重複前綴後,對應的指令代碼是不一樣的,因此指令的功能便具備重複處理的功能,重複的次數存放在CX寄存器中.

說明:
1. REPZ/REPE經常使用與CMPS串操做指令結合使用, 能夠完成兩組字符串的比較.
2. REPZ/REPE常與SCAS指令結合使用,能夠完成在一個字符串中搜索一個關鍵字.
3. REPNZ/REPNE與CMPS指令結合使用,表示當串未結束(CX=1)且當對應串元素不相同(ZF=0)時,繼續重複執行串比較指令.
4. REPNZ/REPNE與SCAS指令結合使用,表示串未結束(CX=1)且當關鍵字與串元素不相同(ZF=0)時,繼續重複執行串搜索指令.

RET

返回指令 RET
格式: RET
功能: 當調用的過程結束後實現從過程返回至原調用程序的下一條指令,本指令不影響標誌位.

說明:
因爲在過程定義時,已指明其近(NEAR)或遠(FAR)的屬性,因此RET指令根據段內調用與段間調用,執行不一樣的操做
對段內調用: 返回時,由堆棧彈出一個字的返回地址的段內偏移量至IP.
對段外調用: 返回時,由堆棧彈出的第一個字爲返回地址的段內偏移量,將其送入IP中,由堆棧彈出第二個字爲返回地址的段基址,將其送入CS中.

ROL

循環移位指令
格式: ROL OPRD1,COUNT ;不含進位標誌位CF在循環中的左循環移位指令.
ROR OPRD1,COUNT ;不含進位示志位CF在循環中的右循環移位指令.
RCL OPRD1,COUNT ;帶進位的左循環移位指令.
RCR OPRD1,COUNT ;帶進位的右循環移位指令.

說明:
1. 本指令組隻影響標誌CF、OF.OF由移入CF的內容決定,OF取決於移位一次後符號位是否改變,如改變,則OF=1.
2. 因爲是循環移位,因此對字節移位8次; 對字移位16次,就可恢復爲原操做數.因爲帶CF的循環移位,能夠將CF的內容移入,
因此能夠利用它實現多字節的循環.

ROR

循環移位指令
格式:
ROL OPRD1,COUNT ;不含進位標誌位CF在循環中的左循環移位指令.
ROR OPRD1,COUNT ;不含進位示志位CF在循環中的右循環移位指令.
RCL OPRD1,COUNT ;帶進位的左循環移位指令.
RCR OPRD1,COUNT ;帶進位的右循環移位指令.

說明:
1. 本指令組隻影響標誌CF、OF.OF由移入CF的內容決定,OF取決於移位一次後符號位是否改變,如改變,則OF=1.
2. 因爲循環移位,因此對字節移位8次; 對字移位16次,可恢復爲原操做數.

SAHF

標誌傳送指令 SAHF
格式: SAHF
功能: 將AH存至FLAG低8位

說明: 本指令將用AH的內容改寫FLAG標誌寄存器中的SF、ZF、AF、PF、和CF標誌,從而改變原來的標誌位.

SAL

算術左移指令 SAL(Shift Arithmetic Left)
格式: SAL OPRD1,COUNT
功能: 其中OPRD1,COUNT與指令SHL相同.本指令與SHL的功能也徹底相同,這是由於邏輯左移指令與算術左移指令所要完成的操做是同樣的.

說明:
1. 其中OPRD1爲目的操做數,能夠是通用寄存器或存儲器操做數.
2. COUNT表明移位的次數(或位數).移位一次,COUNT=1;移位多於1次時,COUNT=(CL),(CL)中爲移位的次數.

SAR

算術右移指令 SAR
格式: SAR OPRD1,COUNT
功能: 本指令一般用於對帶符號數減半的運算中,於是在每次右移時,保持最高位(符號位)不變,最低位右移至CF中.

說明:
1. 其中OPRD1爲目的操做數,能夠是通用寄存器或存儲器操做數.
2. COUNT表明移位的次數(或位數).移位一次,COUNT=1;移位多於1次時,COUNT=(CL),(CL)中爲移位的次數.

SBB

帶借位減去指令 SBB(SuBtraction with Borrow)
格式: SBB OPRD1,OPRD2
功能: 是進行兩個操做數的相減再減去CF進位標誌位,即從OPRD1<--OPRD1-OPRD2-CF,其結果放在OPDR1中.

說明:
示例 SBB DX,CX
SBB AX,DATA1
SBB BX,2000H
SBB ALFA[BX+SI],SI
SBB BETAP[DI,030AH

SCAS

字符串搜索指令 SCAS
格式: SCAS OPRD
SCASB
SCASW
功能: 把AL(字節串)或AX(字串)的內容與由DI寄存器尋址的目的串中的數據相減,結果置標誌位,但不改變任一操做數自己.
地址指針DI自動調整.

說明:
1. 其中OPRD爲目的串符號地址.
2. 本指令影響標誌AF、CF、OF、PF、SF、ZF.該指令可查找字符串中的一個關鍵字,只需在本指令執行前,
把關鍵字放在AL(字節)或AX(字串 )中,用重複前綴可在整串中查找.
指令中不使用操做數時,可用指令格式SCASB,SCASW,分別表示字節串或字串搜索指令.

SCASB

字符串搜索指令 SCAS
格式: SCAS OPRD
SCASB
SCASW
功能: 把AL(字節串)或AX(字串)的內容與由DI寄存器尋址的目的串中的數據相減,結果置標誌位,但不改變任一操做數自己.
地址指針DI自動調整.

說明:
1. 其中OPRD爲目的串符號地址.
2. 本指令影響標誌AF、CF、OF、PF、SF、ZF.該指令可查找字符串中的一個關鍵字,只需在本指令執行前,
把關鍵字放在AL(字節)或AX(字串 )中,用重複前綴可在整串中查找.
指令中不使用操做數時,可用指令格式SCASB,SCASW,分別表示字節串或字串搜索指令.

SCASW

字符串搜索指令 SCAS
格式: SCAS OPRD
SCASB
SCASW
功能: 把AL(字節串)或AX(字串)的內容與由DI寄存器尋址的目的串中的數據相減,結果置標誌位,但不改變任一操做數自己.
地址指針DI自動調整.

說明:
1. 其中OPRD爲目的串符號地址.
2. 本指令影響標誌AF、CF、OF、PF、SF、ZF.該指令可查找字符串中的一個關鍵字,只需在本指令執行前,
把關鍵字放在AL(字節)或AX(字串 )中,用重複前綴可在整串中查找.
指令中不使用操做數時,可用指令格式SCASB,SCASW,分別表示字節串或字串搜索指令.

SHL

邏輯左移指令 SHL(Shift logical left)
格式: SHL OPRD1,COUNT
功能: 對給定的目的操做數左移COUNT次,每次移位時最高位移入標誌位CF中,最低位補零.

說明:
1. 其中OPRD1爲目的操做數,能夠是通用寄存器或存儲器操做數.
2. COUNT表明移位的次數(或位數).移位一次,COUNT=1;移位多於1次時,COUNT=(CL),(CL)中爲移位的次數.
3. 例如: SHL AL,1
SHL CX,1
SHL ALFA[DI] 或者:
MOV CL,3
SHL DX,CL
SHL ALFA[DI],CL

SHR

邏輯右移指令 SHR
格式: SHR OPRD1,COUNT
功能: 本指令實現由COUNT決定次數的邏輯右移操做,每次移位時,最高位補0,最低位移至標誌位CF中.

說明:
1. 其中OPRD1爲目的操做數,能夠是通用寄存器或存儲器操做數.
2. COUNT表明移位的次數(或位數).移位一次,COUNT=1;移位多於1次時,COUNT=(CL),(CL)中爲移位的次數.
3. 影響標誌位OF,PF,SF,ZF,CF.

STC

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

STD

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

STI

處理器控制指令-標誌位操做指令
格式:
CLC ;置CF=0
STC ;置CF=1
CMC ;置CF=(Not CF)進位標誌求反
CLD ;置DF=0
STD ;置DF=1
CLI ;置IF=0,CPU禁止響應外部中斷
STI ;置IF=1,使CPU容許嚮應外部中斷
功能: 完成對標誌位的置位、復位等操做.

說明: 例如串操做中的程序,常常用CLD指令清方向標誌使DF=0,在串操做指令執行時,按增量的方式修改呂指針.

STOS

字符串存儲指令 STOS
格式: STOS OPRD
功能: 把AL(字節)或AX(字)中的數據存儲到DI爲目的串地址指針所尋址的存儲器單元中去.指針DI將根據DF的值進行自動調整.

說明:
1. 其中OPRD爲目的串符號地址.
2. 本指令不影響標誌位.當不使用操做數時,可用STOSB或STOSW分別表示字節串或字串的操做.

SUB

減法指令SUB(SUBtract)
格式: SUB OPRD1,OPRD2
功能: 兩個操做數的相減,即從OPRD1中減去OPRD2,其結果放在OPDR1中.

說明:
示例 SUB DX,CX
SUB [BX+25],AX
SUB DI,ALFA[SI]
SUB CL,20
SUB DATA1[DI][BX],20A5H

TEST

測試指令 TEST
格式: TEST OPRD1,OPRD2
功能: 其中OPRD一、OPRD2的含義同AND指令同樣,也是對兩個操做數進行按位的'與'運算,惟一不一樣之處是不將'與'的結
果送目的操做數,即本指令對兩個操做數 的內容均不進行修改,僅是在邏輯與操做後,對標誌位從新置位.

說明: TEST與AND指令的關係,有點相似於CMP與SUB指令之間的關係.

WAIT

處理器等待指令 WAIT
格式: WAIT
功能: 本指令將使處理器檢測TEST端腳,當TEST有效時,則退出等待狀態執行下條指令,不然處理器處於等待狀態,直到TEST有效.

說明: 本指令不影響標誌位.

XCHG

數據交換指令 XCHG
格式: XCHG OPRD1,OPRD2 其中的OPRD1爲目的操做數,OPRD2爲源操做數
功能: 將兩個操做數相互交換位置,該指令把源操做數OPRD2與目的操數OPRD1交換.

說明:
1. OPRD1及OPRD2可爲通用寄存器或存儲器,可是兩個存儲器之間是不能用XCHG指令實現的.
2. 段寄存器內容不能用XCHG指令來交換.
3. 若要實現兩個存儲器操做數DATA1及DATA2的交換,可用如下指令實現:
示例: PUSH DATA1
PUSH DATA2
POP DATA1
POP DATA2
4. 本指令不影響狀態標誌位.

XLAT

查表指令 XLAT
格式: XLAT TABLE其中TABLE爲一待查表格的首地址.
功能: 把待查表格的一個字節內容送到AL累加器中.

說明:
1. 在執行該指令前,應將TABLE先送至BX寄存器中,而後將待查字節與在表格中距表首地址位移量送AL,即 (AL)<--((BX)+(AL)).
2. 本指令不影響狀態標位,表格長度不超過256字節.

XOR

邏輯異或運算指令 XOR
格式: XOR OPRD1,OPRD2
功能: 實現兩個操做數按位‘異或’運算,結果送至目的操做數中.
OPRD1<--OPRD1 XOR OPRD2

說明:
1. 其在OPRD一、OPRD2的含義與AND指令相同,對標誌位的影響與與AND指令相同.
2. 相異爲真,相同爲假.

 

彙編程序從寫出到執行的過程編程(Edit)——1.asm——編譯(編譯)——1.obj—— 鏈接(link)——1.exe——加載(command)——內存中的程序——運行(CPU)

相關文章
相關標籤/搜索