汇编语言指令速查表汇总Word下载.docx
《汇编语言指令速查表汇总Word下载.docx》由会员分享,可在线阅读,更多相关《汇编语言指令速查表汇总Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
带进位加法:
dst+src+CFdst
ADCreg,reg
1
ADCreg,mem
2
ADCreg,imm
ADCacc,imm
ADCmem,reg
ADCmem,imm
ADDdst,src
加法:
dst+srcdst
ADDreg,reg
ADDreg,mem
ADDreg,imm
ADDacc,imm
ADDmem,reg
ADDmem,imm
续表
ANDdst,src
逻辑与:
dstsrcdst
ANDreg,reg
P0
ANDreg,mem
ANDreg,imm
ANDacc,imm
ANDmem,reg
ANDmem,imm
ARPLdst,src
调整选择器的RPL域
ARPLreg/mem16,reg16
7
--Z---
BOUNDreg,mem
越界检查:
(80188+)
若reg值超出mem,则产生INT5
BOUNDreg16,mem32
INT+32
BOUNDreg32,mem64
BSFreg,src
从低到高扫描src,16/32位(386+)
若src=0,ZF清0,否则置1,位置reg
BSFreg,reg
6~35
?
Z?
BSFreg,mem
6~43
BSRreg,src
从高到低扫描src,16/32位(386+)
BSRreg,reg
BSRreg,mem
BSWAPreg32
反转reg32字节顺序(486+)
BTdst,src
位测试(386+)
由dst指定的位CF(16/32位)
BTreg,reg
4
C
BTreg,imm
BTmem,reg
9
BTmem,imm
BTCdst,src
位测试并变反(386+)
dst的指定位CF,然后该位变反,
(16/32位)
BTCreg,reg
BTCreg,imm
BTCmem,reg
13
BTCmem,imm
8
BTRdst,src
位测试并清0(386+)
dst的指定位CF,然后该位清0,
BTRreg,reg
BTRreg,imm
BTRmem,reg
BTRmem,imm
BTSdst,src
位测试并置1(386+)
dst的指定位CF,然后该位置1,
BTSreg,reg
BTSreg,imm
BTSmem,reg
BTSmem,imm
CALLdst
子程序调用
近调用:
返回的偏移地址进栈,
然后转至dst处执行;
远调用:
返回的段和偏移地址进栈,
然后转至dst处执行
CALLlabel(near)
CALLreg(near)
CALLmem(near)
CALLlabel(far)
CALLmem(far)
5
CBW
AL符号扩展成AX
CDQ
EAX符号扩展成EDX:
EAX
CLC
CF清0
-----0
CLD
DF清0
CLI
IF清0,即关中断
CLTS
清除CR0中任务切换标志(386+)
CMC
CF取反,即CFCF
-----C
CMOVccreg,src
条件成立srcreg,16/32位(586+)
cc:
参见Jcc指令。
CMOVccreg,reg
4~9
CMOVccreg,mem
CMPdst,src
比较:
dst-src,据此设置标志位
CMPreg,reg
CMPreg,mem
CMPreg,imm
CMPacc,imm
CMPmem,reg
CMPmem,imm
CMPSx
串比较:
[(E)SI]-ES:
[(E)DI],
然后(E)SI,(E)DI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4)。
DF=0增,否则减
CMPSB
CMPSW
CMPSD
CMPXCHGdst,reg
acc-dst,等regdst,否则
dstacc(486+)
CMPXCHGreg/mem,reg
5,6
CMPXCHG8Bdst
EDX:
EAX-dst,等ECX:
EBXdst,否则EDX:
EAXdst(486+)
CMPXCHG8Bmem64
CPUID
CPU标识EAX,EBX,ECX,EDX
14
CWD
AX符号扩展成DX:
AX
CWDE
AX符号扩展成EAX
DAA
加法后的十进制调整AL
SZAPC
DAS
减法后的十进制调整AL
DECopr
opr自减1,即opr-1opr
DECreg
OSZAP-
DECmem
DIVsrc
无符号除法
8位:
AX÷
src,商AL,余数AH
16位:
DX:
src,商AX,余数DX
32位:
EAX÷
src,商EAX,余数EDX
DIVreg
17~41
DIVmem
ENTERm,n
建m字节局部空间,n级的栈帧(286+)
ENTERimm16,imm8
11+
HLT
暂停CPU,直到I/O中断发生
IDIVsrc
有符号除
IDIVreg
22~46
IDIVmem
IMULsrc
有符号乘法
AL×
srcAX
AX×
srcDX:
32位:
EAX×
srcEDX:
IMULreg
10~11
O?
IMULmem
IMULreg,src
有符号乘法reg×
srcreg(286+)
IMULreg,reg/mem
IMULreg,src,imm
有符号乘法src×
immreg(286+)
IMULreg,reg/mem,imm
INacc,src
端口数据acc
INacc,imm8
INacc,DX
INCopr
opr自加1,即opr+1opr
INCreg
INCmem
INSx
端口DX数据ES:
然后(E)DI增或减Δ(1/2/4)
B,W,D对应字节
(1)、字
(2)、双字(4);
若DF=0增,否则减
INSB
INSW
INSD
INTn
FLAGS进栈,IF,TF置0,从[4n]双字单元取
段和偏移地址,并转去执行(实地址模式)
INT3
INT+5
INTimm8
INT+6
INTO
若OF=1,则执行INT4
4,INT+5
INVD
使Cache无效
15
INVLPG
使TLB入口无效
29
IRET
中断返回:
从堆栈弹出返回的偏移
和段地址,再弹出标志寄存器内容
Jccopr
条件满足,则转移至opr
Jcclabel
JA/JNBEopr
高于(CF=0ZF=0)
JA/JNBElabel
JAE/JNB/JNCopr
高于等于(CF=0)
JAE/JNB/JNClabel
JB/JC/JNAEopr
低于(CF=1)
JB/JC/JNAElabel
JBE/JNAopr
低于等于(CF=1ZF=1)
JBE/JNAlabel
JE/JZopr
等于(ZF=1)
JE/JZlabel
JG/JNLEopr
大于(ZF=0SF=OF)
JG/JNLElabel
JGE/JNLopr
大于等于(SF=OF)
JGE/JNLlabel
JL/JNGEopr
小于(SF≠OF)
JL/JNGElabel
JLE/JNGopr
小于等于(ZF=1SF≠OF)
JLE/JNGlabel
JNE/JNZopr
不等于(ZF=0)
JNE/JNZlabel
JNOopr
无溢出(OF=0)
JNOlabel
JNSopr
非负数(SF=0)
JNSlabel
JOopr
溢出(OF=1)
JOlabel
JP/JPEopr
有偶数个1(PF=1)
JP/JPElabel
JPO/JNPopr
有奇数个1(PF=0)
JPO/JNPlabel
JSopr
负数(SF=1)
JSlabel
JCXZopr
若CX=0,则转移至opr
JCXZlabel
6/5
JECXZopr
若ECX=0,则转移至opr
JECXZlabel
JMPopr
转移至opr
近:
转移后仅可改变(E)IP
远:
转移后可改变(E)IP和CS
JMPlabel(near)
JMPreg(near)
JMPmem(near)
JMPlabel(far)
JMPmem(far)
LAHF
标志寄存器低字节AH
------
LARreg,dst
将dst指定的选择器访问权reg
LARreg,reg/mem
LDSreg,mem
将mem内容DS:
reg
LEAreg,mem
将mem的偏移地址reg
LEAVE
释放栈帧,即:
(E)BP(E)SP,POP(E)BP
LESreg,mem
将mem内容ES:
LFSreg,mem
将mem内容FS:
reg(386+)
LGDTmem
将mem内容GDTR(286+)
6
LGSreg,mem
将mem内容GS:
LIDTmem
将mem内容IDTR(286+)
LLDTsrc
srcLDTR(286+)
LLDTreg/mem
LMSWsrc
src机器状态字(CR0低16位)(286+)
LMSWreg/mem
LOCK
总线锁(以便其他处理器处理指令)
LOCK
LODSx
从串取:
[(E)SI]acc,
然后(E)SI增或减Δ(1/2/4)
B,W,D对应字节
(1)、字
(2)、双字(4);
LODSB
LODSW
LODSD
LOOPopr
(E)CX自减1,若(E)CX≠0则转移
LOOPlabel
5/6
LOOPE/LOOPZopr
(E)CX自减1,若ZF=1(E)CX≠0则转移
LOOPE/LOOPZlabel
7/8
LOOPNE/LOOPNZopr
(E)CX自减1,若ZF=0(E)CX≠0则转移
LOOPNE/LOOPNZlabel
LSLreg,src
src选择器确定的段界reg(286+)
LSLreg,reg/mem
LSSreg,mem
将mem内容SS:
LTRsrc
src任务寄存器TR(286+)
LTRreg16/mem16
MOVdst,src
数据传送:
srcdst
MOVreg,reg
MOVreg,mem
MOVreg,imm
MOVmem,reg
MOVmem,imm
MOVacc,mem
MOVmem,acc
控制寄存器内容传送(386+)
CRireg32,reg32CRi(i=0,2,3,4)
MOVreg32,CRi
MOVCRi,reg32
12~22
调试寄存器内容传送(386+)
DRireg32,reg32DRi(i=0~7)
MOVreg32,DRi
2~12
MOVDRi,reg32
11~12
段寄存器内容传送
segdst,srcseg(CS除外)
MOVreg/mem,seg
MOVseg,reg/mem
MOVSx
串传送:
[(E)SI]ES:
[(E)DI],然
后(E)SI、(E)DI增或减Δ(1/2/4)
MOVSB
MOVSW
MOVSD
MOVSXreg,src
src经符号扩展后reg(386+)
MOVSXreg,reg/mem
MOVZXreg,src
src经0扩展后reg(386+)
MOVZXreg,reg/mem
MULsrc
无符号乘法
MULreg
MULmem
NEGopr
opr求补(负),即-opropr
NEGreg
NEGmem
NOP
空操作
NOTopr
opr按位取反,即:
opropr
NOTreg
NOTmem
ORdst,src
逻辑或,dstsrcdst
ORreg,reg
ORreg,mem
ORreg,imm
ORmem,reg
ORmem,imm
ORacc,imm
OUTdst,acc
acc内容端口dst
OUTimm8,acc
12
OUTDX,acc
OUTSx
[(E)SI]内容DX端口,(386+)
OUTSB
OUTSW
OUTSD
POPdst
从堆栈弹出数据dst
((E)SP增2或4,seg不能为CS)
POPreg
POPmem
POPseg
3~12
POPA
数据出栈DI,SI,BP,BX,DX,CX,AX
(SP增2×
8)(286+)
POPAD
堆栈弹出数据EDI,ESI,EBP,EBX,EDX,
ECX,EAX((E)SP增4×
8)(386+)
POPF
数据出栈FLAGS((E)SP增2)(286+)
POPFD
数据出栈EFLAGS((E)SP增4)(386+)
PUSHsrc
src数据进栈((E)SP减2/4)
(reg32,mem32,imm,386+)
PUSHreg
PUSHmem
PUSHimm
PUSHseg
PUSHA
AX,CX,DX,BX,SP,BP,SI,DI进栈,
(SP减2×
PUSHAD
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI进栈,((E)SP减4×
PUSHF
FLAGS进栈((E)SP减2)(286+)
PUSHFD
EFLAGS进栈((E)SP减4)(386+)
RCLdst,n
dst带进位循环左移n位
注:
n为imm8是386+支持
RCLreg,1
O----C
RCLmem,1
RCLreg,CL
7~24
RCLmem,CL
9~26
RCLreg,imm8
8~25
RCLmem,imm8
10~27
RCRdst,n
dst带进位循环右移n位
RCRreg,1
RCRmem,1
RCRreg,CL
RCRmem,CL
RCRreg,imm8
RCRmem,imm8
RDMSR
MSR[ECX]EDX:
EAX(586+)
20~24
RDTSC
自启动以来CPU执行的时钟周期数EDX:
EAX(586+)
28
REP串指令
当(E)CX≠0重复{(E)CX自减1,
再执行其后的串指令}
REPINSx
11+3n
REPLODSx
7+3n
REPMOVSx
6,13n
REPOUTSx
13+4n
REPSTOSx
6,9+3n
REPE/REPZ
串指令
当(E)CX≠0ZF=1重复{(E)CX自
减1,再执行其后的串指令}
REPE/REPZCMPSx
7,8+4n
REPE/REPZSCASx
REPNE/REPNZ串指令
当(E)CX≠0ZF=0重复{(E)CX自
REPNE/REPNZCMPSx
REPNE/REPNZSCASx
RET[n]
子程序返回:
从堆栈弹出返回地
址,若有n则返回后(E)SP再增n。
近返回RETN:
只弹出偏移地址;
远返回RETF:
弹出偏移和段地址;
RETN
RETF
RETNimm16
RETFimm16
ROLdst,n
dst循环左移n位
n为imm8是386+支持
ROLreg,1
ROLmem,1
ROLreg,CL
ROLmem,CL
ROLreg,imm8
ROLmem,imm8
RORdst,n
dst循环右移n位
n为imm8是386+支