总汇编语言指令速查表.docx

上传人:b****6 文档编号:5590231 上传时间:2022-12-28 格式:DOCX 页数:30 大小:41.02KB
下载 相关 举报
总汇编语言指令速查表.docx_第1页
第1页 / 共30页
总汇编语言指令速查表.docx_第2页
第2页 / 共30页
总汇编语言指令速查表.docx_第3页
第3页 / 共30页
总汇编语言指令速查表.docx_第4页
第4页 / 共30页
总汇编语言指令速查表.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

总汇编语言指令速查表.docx

《总汇编语言指令速查表.docx》由会员分享,可在线阅读,更多相关《总汇编语言指令速查表.docx(30页珍藏版)》请在冰豆网上搜索。

总汇编语言指令速查表.docx

总汇编语言指令速查表

附录

附录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+支持

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1