汇编语言指令速查表汇总.docx
- 文档编号:3546288
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:29
- 大小:40.37KB
汇编语言指令速查表汇总.docx
《汇编语言指令速查表汇总.docx》由会员分享,可在线阅读,更多相关《汇编语言指令速查表汇总.docx(29页珍藏版)》请在冰豆网上搜索。
汇编语言指令速查表汇总
附录
附录A常用80x86指令速查表
指令按助记符字母顺序排列,缩写、符号约定如下:
(1)指令中,dst,src表示目的操作数和源操作数。
仅一个操作数时,个别处也表示为opr。
(2) imm表示立即数,8/16/32位立即数记作:
imm8/imm16/imm32。
(3) reg表示通用寄存器,8/16/32位通用寄存器记作:
reg8/reg16/reg32。
(4) mem表示内存操作数,8/16/32等内存操作数记作:
mem8/mem16/mem32等。
(5) seg表示段寄存器,CS,DS,SS,ES,FS,GS。
(6) acc表示累加器,8/16/32累加器对应AL/AX/EAX。
(7) OF,SF,ZF,AF,PF,CF分别表示为O,S,Z,A,P,C,相应位置为:
字母,根据结果状态设置;?
,状态不确定;-,状态不变;1,置1;0,清0;例如:
0SZ?
P-表示:
OF清0,AF不确定,CF不变,其它根据结果设置。
若该栏空白,则表示无关。
(8) 寄存器符号诸如(E)CX,(E)SI,(E)DI,(E)SP,(E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。
(9) 周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:
周期数/主频(秒)。
(10) 诸如(386+)是表示该指令只能用于80386及以后微处理器上。
指令
功能
指令形式
周期数
影响标志位
AAA
非压缩BCD加法调整,AH+进位
AAA
3
?
SZ?
PC
AAD
AH×10+ALAL,之后AH清0
AAD
10
OSZAPC
AAM
AL÷10的商AH,余数AL
AAM
18
OSZAPC
AAS
非压缩BCD减法调整,AH-借位
AAS
3
?
SZ?
PC
ADCdst,src
带进位加法:
dst+src+CFdst
ADCreg,reg
1
OSZAPC
ADCreg,mem
2
ADCreg,imm
1
ADCacc,imm
1
ADCmem,reg
3
ADCmem,imm
3
ADDdst,src
加法:
dst+srcdst
ADDreg,reg
1
OSZAPC
ADDreg,mem
2
ADDreg,imm
1
ADDacc,imm
1
ADDmem,reg
3
ADDmem,imm
3
续表
指令
功能
指令形式
周期数
影响标志位
ANDdst,src
逻辑与:
dstsrcdst
ANDreg,reg
1
0SZ?
P0
ANDreg,mem
2
ANDreg,imm
1
ANDacc,imm
1
ANDmem,reg
3
ANDmem,imm
3
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+)
若src=0,ZF清0,否则置1,位置reg
BSRreg,reg
6~35
?
?
Z?
?
?
BSRreg,mem
6~43
BSWAPreg32
反转reg32字节顺序(486+)
BSWAPreg32
1
BTdst,src
位测试(386+)
由dst指定的位CF(16/32位)
BTreg,reg
4
?
?
?
?
?
C
BTreg,imm
4
BTmem,reg
9
BTmem,imm
4
BTCdst,src
位测试并变反(386+)
dst的指定位CF,然后该位变反,
(16/32位)
BTCreg,reg
7
?
?
?
?
?
C
BTCreg,imm
7
BTCmem,reg
13
BTCmem,imm
8
BTRdst,src
位测试并清0(386+)
dst的指定位CF,然后该位清0,
(16/32位)
BTRreg,reg
7
?
?
?
?
?
C
BTRreg,imm
7
BTRmem,reg
13
BTRmem,imm
8
BTSdst,src
位测试并置1(386+)
dst的指定位CF,然后该位置1,
(16/32位)
BTSreg,reg
7
?
?
?
?
?
C
BTSreg,imm
7
BTSmem,reg
13
BTSmem,imm
8
CALLdst
子程序调用
近调用:
返回的偏移地址进栈,
然后转至dst处执行;
远调用:
返回的段和偏移地址进栈,
然后转至dst处执行
CALLlabel(near)
1
CALLreg(near)
2
CALLmem(near)
2
CALLlabel(far)
4
CALLmem(far)
5
CBW
AL符号扩展成AX
CBW
3
CDQ
EAX符号扩展成EDX:
EAX
CDQ
2
CLC
CF清0
CLC
2
-----0
CLD
DF清0
CLD
2
CLI
IF清0,即关中断
CLI
7
CLTS
清除CR0中任务切换标志(386+)
CLTS
10
CMC
CF取反,即CFCF
CMC
2
-----C
CMOVccreg,src
条件成立srcreg,16/32位(586+)
cc:
参见Jcc指令。
CMOVccreg,reg
4~9
CMOVccreg,mem
续表
指令
功能
指令形式
周期数
影响标志位
CMPdst,src
比较:
dst-src,据此设置标志位
CMPreg,reg
1
OSZAPC
CMPreg,mem
2
CMPreg,imm
1
CMPacc,imm
1
CMPmem,reg
2
CMPmem,imm
2
CMPSx
串比较:
[(E)SI]-ES:
[(E)DI],
然后(E)SI,(E)DI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4)。
DF=0增,否则减
CMPSB
5
OSZAPC
CMPSW
CMPSD
CMPXCHGdst,reg
acc-dst,等regdst,否则
dstacc(486+)
CMPXCHGreg/mem,reg
5,6
OSZAPC
CMPXCHG8Bdst
EDX:
EAX-dst,等ECX:
EBXdst,否则EDX:
EAXdst(486+)
CMPXCHG8Bmem64
10
--Z---
CPUID
CPU标识EAX,EBX,ECX,EDX
CPUID
14
CWD
AX符号扩展成DX:
AX
CWD
2
CWDE
AX符号扩展成EAX
CWDE
3
DAA
加法后的十进制调整AL
DAA
3
?
SZAPC
DAS
减法后的十进制调整AL
DAS
3
?
SZAPC
DECopr
opr自减1,即opr-1opr
DECreg
1
OSZAP-
DECmem
3
DIVsrc
无符号除法
8位:
AX÷src,商AL,余数AH
16位:
DX:
AX÷src,商AX,余数DX
32位:
EDX:
EAX÷src,商EAX,余数EDX
DIVreg
17~41
?
?
?
?
?
?
DIVmem
ENTERm,n
建m字节局部空间,n级的栈帧(286+)
ENTERimm16,imm8
11+
HLT
暂停CPU,直到I/O中断发生
HLT
IDIVsrc
有符号除
8位:
AX÷src,商AL,余数AH
16位:
DX:
AX÷src,商AX,余数DX
32位:
EDX:
EAX÷src,商EAX,余数EDX
IDIVreg
22~46
?
?
?
?
?
?
IDIVmem
IMULsrc
有符号乘法
8位:
AL×srcAX
16位:
AX×srcDX:
AX
32位:
EAX×srcEDX:
EAX
IMULreg
10~11
O?
?
?
?
C
IMULmem
IMULreg,src
有符号乘法reg×srcreg(286+)
IMULreg,reg/mem
10
O?
?
?
?
C
IMULreg,src,imm
有符号乘法src×immreg(286+)
IMULreg,reg/mem,imm
10
O?
?
?
?
C
INacc,src
端口数据acc
INacc,imm8
7
INacc,DX
7
INCopr
opr自加1,即opr+1opr
INCreg
1
OSZAP-
INCmem
3
续表
指令
功能
指令形式
周期数
影响标志位
INSx
端口DX数据ES:
[(E)DI],
然后(E)DI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4);若DF=0增,否则减
INSB
9
INSW
INSD
INTn
FLAGS进栈,IF,TF置0,从[4n]双字单元取
段和偏移地址,并转去执行(实地址模式)
INT3
INT+5
INTimm8
INT+6
INTO
若OF=1,则执行INT4
INTO
4,INT+5
INVD
使Cache无效
INVD
15
INVLPG
使TLB入口无效
INVLPG
29
IRET
中断返回:
从堆栈弹出返回的偏移
和段地址,再弹出标志寄存器内容
IRET
7
Jccopr
条件满足,则转移至opr
Jcclabel
1
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
6/5
JMPopr
转移至opr
近:
转移后仅可改变(E)IP
远:
转移后可改变(E)IP和CS
JMPlabel(near)
1
JMPreg(near)
2
JMPmem(near)
2
JMPlabel(far)
3
JMPmem(far)
4
LAHF
标志寄存器低字节AH
LAHF
2
------
LARreg,dst
将dst指定的选择器访问权reg
LARreg,reg/mem
8
--Z---
LDSreg,mem
将mem内容DS:
reg
LDSreg,mem
4
LEAreg,mem
将mem的偏移地址reg
LEAreg,mem
1
LEAVE
释放栈帧,即:
(E)BP(E)SP,POP(E)BP
LEAVE
3
LESreg,mem
将mem内容ES:
reg
LESreg,mem
4
LFSreg,mem
将mem内容FS:
reg(386+)
LFSreg,mem
4
续表
指令
功能
指令形式
周期数
影响标志位
LGDTmem
将mem内容GDTR(286+)
LGDTmem
6
LGSreg,mem
将mem内容GS:
reg(386+)
LGSreg,mem
4
LIDTmem
将mem内容IDTR(286+)
LIDTmem
6
LLDTsrc
srcLDTR(286+)
LLDTreg/mem
8
LMSWsrc
src机器状态字(CR0低16位)(286+)
LMSWreg/mem
8
LOCK
总线锁(以便其他处理器处理指令)
LOCK
1
LODSx
从串取:
[(E)SI]acc,
然后(E)SI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4);若DF=0增,否则减
LODSB
2
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
7/8
LSLreg,src
src选择器确定的段界reg(286+)
LSLreg,reg/mem
8
--Z---
LSSreg,mem
将mem内容SS:
reg(386+)
LSSreg,mem
4
LTRsrc
src任务寄存器TR(286+)
LTRreg16/mem16
10
MOVdst,src
数据传送:
srcdst
MOVreg,reg
1
MOVreg,mem
1
MOVreg,imm
1
MOVmem,reg
1
MOVmem,imm
1
MOVacc,mem
1
MOVmem,acc
1
MOVdst,src
控制寄存器内容传送(386+)
CRireg32,reg32CRi(i=0,2,3,4)
MOVreg32,CRi
4
MOVCRi,reg32
12~22
MOVdst,src
调试寄存器内容传送(386+)
DRireg32,reg32DRi(i=0~7)
MOVreg32,DRi
2~12
MOVDRi,reg32
11~12
MOVdst,src
段寄存器内容传送
segdst,srcseg(CS除外)
MOVreg/mem,seg
1
MOVseg,reg/mem
2~12
MOVSx
串传送:
[(E)SI]ES:
[(E)DI],然
后(E)SI、(E)DI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4);若DF=0增,否则减
MOVSB
4
MOVSW
MOVSD
MOVSXreg,src
src经符号扩展后reg(386+)
MOVSXreg,reg/mem
3
MOVZXreg,src
src经0扩展后reg(386+)
MOVZXreg,reg/mem
3
MULsrc
无符号乘法
8位:
AL×srcAX
16位:
AX×srcDX:
AX
32位:
EAX×srcEDX:
EAX
MULreg
10~11
O?
?
?
?
C
MULmem
NEGopr
opr求补(负),即-opropr
NEGreg
1
OSZAPC
NEGmem
3
NOP
空操作
NOP
1
续表
指令
功能
指令形式
周期数
影响标志位
NOTopr
opr按位取反,即:
opropr
NOTreg
1
OSZAPC
NOTmem
3
ORdst,src
逻辑或,dstsrcdst
ORreg,reg
1
0SZ?
P0
ORreg,mem
2
ORreg,imm
1
ORmem,reg
3
ORmem,imm
3
ORacc,imm
1
OUTdst,acc
acc内容端口dst
OUTimm8,acc
12
OUTDX,acc
12
OUTSx
[(E)SI]内容DX端口,(386+)
然后(E)SI增或减Δ(1/2/4)
x:
B,W,D对应字节
(1)、字
(2)、双字(4);若DF=0增,否则减
OUTSB
13
OUTSW
OUTSD
POPdst
从堆栈弹出数据dst
((E)SP增2或4,seg不能为CS)
POPreg
1
POPmem
3
POPseg
3~12
POPA
数据出栈DI,SI,BP,BX,DX,CX,AX
(SP增2×8)(286+)
POPA
5
POPAD
堆栈弹出数据EDI,ESI,EBP,EBX,EDX,
ECX,EAX((E)SP增4×8)(386+)
POPAD
5
POPF
数据出栈FLAGS((E)SP增2)(286+)
POPF
4
OSZAPC
POPFD
数据出栈EFLAGS((E)SP增4)(386+)
POPFD
4
OSZAPC
PUSHsrc
src数据进栈((E)SP减2/4)
(reg32,mem32,imm,386+)
PUSHreg
1
PUSHmem
2
PUSHimm
1
PUSHseg
1
PUSHA
AX,CX,DX,BX,SP,BP,SI,DI进栈,
(SP减2×8)(286+)
PUSHA
5
PUSHAD
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI进栈,((E)SP减4×8)(386+)
PUSHAD
5
PUSHF
FLAGS进栈((E)SP减2)(286+)
PUSHF
3
PUSHFD
EFLAGS进栈((E)SP减4)(386+)
PUSHFD
3
RCLdst,n
dst带进位循环左移n位
注:
n为imm8是386+支持
RCLreg,1
1
O----C
RCLmem,1
3
RCLreg,CL
7~24
RCLmem,CL
9~26
RCLreg,imm8
8~25
RCLmem,imm8
10~27
RCRdst,n
dst带进位循环右移n位
注:
n为imm8是386+支持
RCRreg,1
1
O----C
RCRmem,1
3
RCRreg,CL
7~24
RCRmem,CL
9~26
RCRreg,imm8
8~25
RCRmem,imm8
10~27
续表
指令
功能
指令形式
周期数
影响标志位
RDMSR
MSR[ECX]EDX:
EAX(586+)
RDMSR
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
OSZAPC
REPE/REPZSCASx
7,8+4n
REPNE/REPNZ串指令
当(E)CX≠0ZF=0重复{(E)CX自
减1,再执行其后的串指令}
REPNE/REPNZCMPSx
7,8+4n
OSZAPC
REPNE/REPNZSCASx
7,8+4n
RET[n]
子程序返回:
从堆栈弹出返回地
址,若有n则返回后(E)SP再增n。
近返回RETN:
只弹出偏移地址;
远返回RETF:
弹出偏移和段地址;
RETN
2
RETF
4
RETNimm16
3
RETFimm16
4
ROLdst,n
dst循环左移n位
注:
n为imm8是386+支持
ROLreg,1
1
O----C
ROLmem,1
3
ROLreg,CL
4
ROLmem,CL
4
ROLreg,imm8
1
ROLmem,imm8
3
RORdst,n
dst循环右移n位
注:
n为imm8是386+支
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 指令 速查表 汇总