指令类型

助记符

(带*为特权指令)

对标志寄存器的影响

备注

说明

举例

ZF

CF

PF

SF

OF

AF

DF

IF

TF

数据传送类

数据传送

MOV

不影响标志位

Move

MOV r/m32,imm32

MOV*

Move to/from Control Registers

MOV CR0,r32

MOV*

Move to/from Debug Registers

MOV r32, DR0-DR7

符号位扩展传送

MOVZX

Move with Zero-Extend

MOVZX r32,r/m16

MOVSX

Move with Sign-Extension

MOVSX r32,r/m16

数据交换

XCHG

Exchange Register/Memory with Register

XCHG r32,r/m32

CMPXCHG

√

√

√

√

√

Compare and Exchange

CMPXCHG r/m32,r32

CMPXCHG8B

√

Compare and Exchange 8 Bytes

CMPXCHG8B m64

堆栈传送

PUSH

不影响标志位

Push Word or Doubleword Onto the Stack

Push r/m32

POP

Pop a Value from the Stack

POP r.m32

PUSHA

Push All General-Purpose Registers

PUSHA

POPA

Pop All General-Purpose Registers

POPA

PUSHAD

Push All General-Purpose Registers

PUSHAD

POPAD

Pop All General-Purpose Registers

POPAD

地址传送

LEA

Load Effective Address

LEA r32,m

LDS

Load Far Pointer

LDS r32,m16:32

LES

Load Far Pointer

LES r32,m16:32

LFS

Load Far Pointer

LFS r32,m16:32

LGS

Load Far Pointer

LGS r32,m16:32

LSS

Load Far Pointer

LSS r32,m16:32

标志寄存器传送

LAHF

不影响标志位

Load Status Flags into AH Register

LAHF

SAHF

标志寄存器低八位的内容由AH的值决定

Store AH into Flags

SAHF

PUSHF

不影响标志位

Push EFLAGS Register onto the Stack

PUSHF

POPF

标志寄存器的内容由装入的具体值决定

Pop Stack into EFLAGS Register

POPF

PUSHFD

不影响标志位

Push EFLAGS Register onto the Stack

PUSHFD

POPFD

标志寄存器的内容由装入的具体值决定

Pop Stack into EFLAGS Register

POPFD

查表

XLAT

不影响标志位

Table Look-up Translation

XLAT m8

XLATB

Table Look-up Translation

XLATB

输入输出

IN*

不影响标志位

Input from Port

IN EAX,imm8

OUT*

Output to Port

OUT imm8, EAX

输入

INS*

不影响标志位

Input from Port to String

INS m32, DX

INSB*

Input from Port to String

INSB

INSW*

Input from Port to String

INSW

INSD*

Input from Port to String

INSD

输出

OUTS*

Output String to Port

OUTS DX, m32

OUTSB*

Output String to Port

OUTSB

OUTSW*

Output String to Port

OUTSW

OUTSD*

Output String to Port

OUTSD

串

操

作

传送

MOVS

Move Data from String to String

MOVS m32, m32

MOVSB

Move Data from String to String

MOVSB

MOVSW

Move Data from String to String

MOVSW

MOVSD

Move Data from String to String

MOVSW

比较

CMPS

由计算结果确定标志位的值

不会影响DF,IF,TF

Compare String Operands

CMPS m32, m32

CMPSB

Compare String Operands

CMPSB

CMPSW

Compare String Operands

CMPSW

CMPSD

Compare String Operands

CMPSD

搜索

SCAS

不会影响DF,IF,TF

Scan String

SCAS m32

SCASB

Scan String

SCASB

SCASW

Scan String

SCASW

SCASD

Scan String

SCASD

装入

LODS

不影响标志位

Load String

LODS m32

LODSB

Load String

LODSB

LODSW

Load String

LODSW

LODSD

Load String

LODSD

填充

STOS

Store String

STOS m32

STOSB

Store String

STOSB

STOSW

Store String

STOSW

STOSD

Store String

STOSD

循环前缀

REP

Repeat String Operation Prefix

REP MOVS m32,m32

REPZ

Repeat String Operation Prefix

REPZ LODS EAX

REPNZ

Repeat String Operation Prefix

REPNZ STOS m32

REPE

Repeat String Operation Prefix

REPE CMPS m32,m32

REPNE

Repeat String Operation Prefix

REPNE SCAS m32

条件传送

标志位测试

CMOVZ/CMOVNZ

1/0

指出测试的标志位,下同

Move if zero

CMOVE/CMOVNE

1/0

Move if equal

CMOVC/CMOVNC

1/0

Move if carry

CMOVS/CMOVNS

1/0

Move if sign

CMOVO/CMOVNO

1/0

Move if overflow

CMOVP/CMOVNP

1/0

Move if parity

CMOVPE/CMOVPO

1/0

Move if parity even/odd

无符号数比较

CMOVA/CMOVNBE

0&

&0

ZF=0 AND CF=0

Move if above

CMOVNA/CMOVBE

1|

|1

ZF=1 OR CF=1

Move if below or equal

CMOVB/CMOVNAE

0&

&1

ZF=0 AND CF=1

Move if below

CMOVNB/CMOVAE

1|

|0

ZF=1 OR CF=0

Move if above or equal

有符号数比较

CMOVG/CMOVNLE

0&

&=

=

ZF=0 AND SF=OF

Move if greater

CMOVNG/CMOVLE

1|

|<

>

ZF=1 OR SF<>OF

Move if less or equal

CMOVL/CMOVNGE

<

>

SF<>OF

Move if less

CMOVNL/CMOVGE

=

=

SF=OF

Move if greater or equal

条件设置

标志位测试

SETZ/SETNZ

1/0

指出测试的标志位,下同

Set byte if zero

SETE/SETNE

1/0

Set byte if equal

SETC/SETNC

1/0

Set byte if carry

SETS/SETNS

1/0

Set byte if sign

SETO/SETNO

1/0

Set byte if overflow

SETP/SETNP

1/0

Set byte if parity

SETPE/SETPO

1/0

Set byte if parity even/odd

无符号数比较

SETA/SETNBE

0&

&0

ZF=0 AND CF=0

Set byte if above

SETNA/SETBE

1|

|1

ZF=1 OR CF=1

Set byte if below or equal

SETB/SETNAE

0&

&1

ZF=0 AND CF=1

Set byte if below

SETNB/SETAE

1|

|0

ZF=1 OR CF=0

Set byte if above or equal

有符号数比较

SETG/SETNLE

0&

&=

=

ZF=0 AND SF=OF

Set byte if greater

SETNG/SETLE

1|

|<

>

ZF=1 OR SF<>OF

Set byte if less or equal

SETL/SETNGE

<

>

SF<>OF

Set byte if less

SETNL/SETGE

=

=

SF=OF

Set byte if greater or equal

特

权

数

据

传

送

读取

SGDT

不影响标志位

Store Global Descriptor Table Register

SGDT m

SIDT

Store Interrupt Descriptor Table Register

SIDT m

SLDT

Store Local Descriptor Table Register

SLDT r/m32

SMSW

Store Machine Status Word

SMSW r32/m16

STR

Store Task Register

STR r/m16

RDMSR*

Read from Model Specific Register

RDMSR

RDPMC*

Read Performance-Monitoring Counters

RDPMC

写入

LGDT*

Load Global Descriptor Table Register

LGDT m16&32

LIDT*

Load Interrupt Descriptor Table Register

LIDT m16&32

LLDT*

Load Local Descriptor Table Register

LLDT r/m16

LMSW*

Load Machine Status Word

LMSW r/m16

LTR*

Load Task Register

LTR r/m16

WRMSR*

Write to Model Specific Register

WRMSR

LAR(*)

√

 

 

 

 

 

 

 

 

Load Access Rights Byte

LAR r32,r/m32

LSL(*)

√

 

 

 

 

 

 

 

 

Load Segment Limit

LSL r32,r/m32

算术运算类

加法

ADD

√

√

√

√

√

√

Add

ADD r/m32,imm32

ADC

√

√

√

√

√

√

Add with Carry

ADC r/m32,imm32

INC

√

√

√

√

√

Increment by 1

INC r/m32

AAA

?

√

?

?

?

√

?表示不确定或者未定义

ASCII Adjust After Addition

AAA

DAA

√

√

√

√

?

√

Decimal Adjust AL after Addition

DAA

XADD

√

√

√

√

√

√

Exchange and Add

XADD r/m32,r32

减法

SUB

√

√

√

√

√

√

Subtract

SUB r/m32,imm32

SBB

√

√

√

√

√

√

Integer Subtraction with Borrow

SBB r/m32,imm32

DEC

√

√

√

√

√

Decrement by 1

DEC r/m32

AAS

?

√

?

?

?

√

ASCII Adjust AL After Subtraction

AAS

DAS

√

√

√

√

?

√

Decimal Adjust AL after Subtraction

DAS

乘法

MUL

?

√

?

?

√

?

Unsigned Multiply

MUL r/m32

IMUL

?

√

?

?

√

?

Signed Multiply

IMUL r32,r/m32,imm32

AAM

√

?

√

√

?

?

ASCII Adjust AX After Multiply

AAM

除法

DIV

?

?

?

?

?

?

√

√

此指令可能会产生中断,故影响IF,TF

Unsigned Divide

DIV r/m32

IDIV

?

?

?

?

?

?

√

√

同上

Signed Divide

IDIV r/m32

AAD

√

?

√

√

?

?

ASCII Adjust AX Before Division

AAD

求负

NEG

√

√

√

√

√

√

CF同源操作数的真或假

Two's Complement Negation

NEG r/m32

符号位扩展

CBW

不影响标志位

Convert Byte to Word

CBW

CWDE

Convert Word to Doubleword

CWDE

CWD

Convert Word to Doubleword

CWD

CDQ

Convert Double to Quadword

CDQ

比较

CMP

由计算结果确定标志位的值

不会影响到DF,IF,TF

Compare Two Operands

CMP r/m32,imm32

逻辑运算类

单

操

作

数

移位

SHL

√

√

√

√

见

备

注

?

OF标志位只在移位次数是1时有效

Shift left imm8/CL times

SHL r/m32,imm8

SHR

√

√

√

√

?

Shift right imm8/CL times

SHR r/m32,imm8

SAL

√

√

√

√

?

Shift left without sign bit imm8/CL times

SAL r/m32,imm8

SAR

√

√

√

√

?

Shift right without sign bit mm8/CL times

SAR r/m32,imm8

SHLD

√

√

√

√

?

Double Precision Shift Left

SHLD r/m32,r32,imm8

SHRD

√

√

√

√

?

Double Precision Shift Right

SHRD r/m32,r32,imm8

循环

移位

ROL

√

√

Rotate left imm8/CL times

ROL r/m32,imm8

ROR

√

√

Rotate right imm8/CL times

ROR r/m32,imm8

RCL

√

√

Rotate left with CF imm8/CL times

RCL r/m32,imm8

RCR

√

√

Rotate right with CF imm8/CL times

RCR r/m32,imm8

调整字节序

BSWAP

不影响标志位

Byte Swap

BSWAP r32

求反

NOT

One's Complement Negation

NOT r/m32

双

操

作

数

与

AND

√

0

√

√

0

?

Logical AND

AND r/m32,r/m32

或

OR

√

0

√

√

0

?

Logical Inclusive OR

OR r/m32,r/m32

异或

XOR

√

0

√

√

0

?

Logical Exclusive OR

XOR r/m32,r/m32

检测

TSET

√

0

√

√

0

?

Logical Compare

TEST r/m32,r/m32

位操作类

标志位操作

CLC

√

置CF=0

Clear Carry Flag

CLC

CMC

√

使CF取反

Complement Carry Flag

CMC

STC

√

置CF=1

Set Carry Flag

STC

CLD

√

置DF=0

Clear Direction Flag

CLD

STD

√

置DF=1

Set Direction Flag

STD

CLI*

√

置IF=0

Clear Interrupt Flag

CLI

STI*

√

置IF=1

Set Interrupt Flag

STI

CLTS*

清空CR0中的TS标志

Clear Task-Switched Flag in CR0

CLTS

位测试

BT

?

√

?

?

?

?

Bit Test

BT r/m32,imm8

BTC

?

√

?

?

?

?

Bit Test and Complement

BTC r/m32,imm8

BTR

?

√

?

?

?

?

Bit Test and Reset

BTR r/m32,imm8

BTS

?

√

?

?

?

?

Bit Test and Set

BTS r/m32,imm8

位扫描

BSF

√

?

?

?

?

?

Bit Scan Forward

BSF r32,r/m32

BSR

√

?

?

?

?

?

Bit Scan Reverse

BSR r32,r/m32

程序控制类

无条件转移

JMP

不影响标志位

Jump

条

件

转

移

寄存器测试

JCXZ

Jump short if CX=0

JECXZ

Jump short if ECX=0

标志位测试

JZ/JNZ

1/0

指出测试的标志位,下同

Jump short if zero

JE/JNE

1/0

Jump short if equal

JC/JNC

1/0

Jump short if carry

JS/JNS

1/0

Jump short if sign

JO/JNO

1/0

Jump short if overflow

JP/JNP

1/0

Jump short if parity

JPE/JPO

1/0

Jump short if parity even/odd

无符号数比较

JA/JNBE

0&

&0

ZF=0 AND CF=0

Jump short if above

JNA/JBE

1|

|1

ZF=1 OR CF=1

Jump short if below or equal

JB/JNAE

0&

&1

ZF=0 AND CF=1

Jump short if below

JNB/JAE

1|

|0

ZF=1 OR CF=0

Jump short if above or equal

有符号数比较

JG/JNLE

0&

&=

=

ZF=0 AND SF=OF

Jump short if greater

JNG/JLE

1|

|<

>

ZF=1 OR SF<>OF

Jump short if less or equal

JL/JNGE

<

>

SF<>OF

Jump short if less

JNL/JGE

=

=

SF=OF

Jump short if greater or equal

循环控制

LOOP

不影响标志位

Jump short if ECX=0

LOOP rel8

LOOPZ

Jump short if ECX=0 and ZF=1

LOOPZ rel8

LOOPNZ

Jump short if ECX=0 and ZF=0

LOOPNZ rel8

LOOPE

Jump short if ECX=0 and ZF=1

LOOPE rel8

LOOPNE

Jump short if ECX=0 and ZF=0

LOOPNE rel8

中断与返回

INT

根据不同情况影响标志位

Call to Interrupt Procedure

INT imm8

INT1

Call to Interrupt Procedure

INT1

INT3

Call to Interrupt Procedure

INT3

INTO

Call to Interrupt Procedure

INTO

IRET

影响所有标志位

标志位到恢复中断以前的状态

Interrupt Return

IRET

IRETW

Interrupt Return Word

IRETW

IRETD

Interrupt Return Doubleword

IRETD

系统调用与返回

SYSENTER

不影响标志位

System Enter

SYSENTER

SYSLEAVE

System Leave

SYSLEAVE

函数调用与返回

CALL

如果发生任务切换则影响所有

Call Procedure

CALL m16:32

RET

Return from Procedure

RET imm16

RETN

Return from Procedure to Near

RETN imm16

RETF

Return from Procedure to Far

RETF imm16

CPU控制类

空操作

NOP

不影响标志位

No Operation

NOP

暂停

HLT*

Stop instruction execution and Halt

HLT

等待协处理器

WAIT

Check pending unmasked floating-point exceptions

WAIT

交权给协处理器

ESC

Escape

ESC EXTOPRD,OPRD

总线锁定前缀

LOCK

Assert LOCK# Signal Prefix

LOCK

清除内部缓存

INVD*

Invalidate Internal Caches

INVD

刷新内部缓存

WBINVD*

Write Back and Invalidate Cache

WBINVD

清除旁路翻译缓存

INVLPG*

Invalidate TLB Entry

INVLPG m

脱离系统管理模式

RSM

√

√

√

√

√

√

√

√

√

Resume from System Management Mode

RSM

杂项

段寄存器读检测

VERR

√

Verify a Segment for Reading

VERR r/m16

段寄存器写检测

VERW

√

Verify a Segment for Writing

VERW r/m16

高级语言辅助

ENTER

不影响标志位

Make Stack Frame for Procedure Parameters

ENTER imm16,imm8

LEAVE

High Level Procedure Exit

LEAVE

检验并调整RPL

ARPL

Adjust RPL Field of Segment Selector

ARPL r/m16,r16

数组边界检查

BOUND

Check Array Index Against Bounds

BOUND r32,m32&32

识别CPU

CPUID

CPU Identification

CPUID

读取时间戳

RDTSC(*)

Read Time-Stamp Counter

RDTSC

未定义

UD2

Undefined Instruction

UD2

协处理器类

传送

加法

减法

乘法

除法

等待

FWAIT

 

浮点

F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCOM FCOMP FCOMPP

FCOS FDECSTP FDISI FDIV FDIVP FDIVR FDIVRP FENI FFREE FIADD

FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINCSTP FINIT FIST FISTP

FISUB FISUBR FLD FLD1 FLDL2E FLDL2T FLDCW FLDENV FLDLG2 FLDLN2

FLDPI 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 FUCOMP FUCOMPP FWAIT

FXAM FXCH FXTRACT FYL2X FYL2XP1

 

 

 

 

 

CF(Carry Flag):进位标志。当指令执行的结果(8位或16位)在最高位上产生了一个进位或借位时,CF =1。

AF(Auxiliary Carry Flag):辅助进位标志。当一个8位数(或16位数)的低四位向高四位(即b3向b4)有进位或借位时,AF=1。常用于十进制算术运算指令。

OF(Overflow Flag): 溢出标志。在算术运算中,带符号数的运算结果超出了8位或16位符号数所能表示的范围时,OF=1。

ZF(Zero Flag): 零标志。当运算结果为全零时,ZF=1。

SF(Sign Flag): 符号标志。当运算结果为正数,即结果的最高位为0时,SF=1。

PF(Parity Flag):奇偶标志。当算术逻辑运算的结果中1的个数为偶数时,PF=1,为奇数时,PF=0。

DF(Direction Flag):方向标志。用于控制数据串操作指令的步进方向,当DF=1时,表示从高地址向低地址以递减的顺序对数据串中的数据进行处理。

IF(Interrupt-enable Flag):中断允许标志。当IF=1时,CPU可以响应外部可屏蔽中断请求。该标志可以用指令设置为1或0。

TF(Trap Flag):陷阱标志。当TF=1时,CPU进入单步工作方式,每执行完一条指令就自动产生一个内部中断,以便进行程序调试。当TF=0时,正常执行程序。

win32 指令大全的更多相关文章

  1. Linux日常使用指令大全

    Linux日常使用指令大全 Java代码 www.ahlinux.com 001.日常维护常用查询命令 #top    显示系统进程 #clear  清理屏幕信息 #cat /etc/redhat-r ...

  2. linux指令大全(完整篇)(转)

       http://blog.chinaunix.net/uid-9681606-id-1998590.html  linux指令大全(完整篇)(转) 2009-03-17 01:21:46 分类:  ...

  3. Linux学习笔记之vim操作指令大全

    0x00 关于Vim Vim是款强大的文本编辑器,但是众多指令需要学习,这次记录了指令大全方便以后翻阅. Vim的几种模式 正常模式:可以使用快捷键命令,或按:输入命令行. 插入模式:可以输入文本,在 ...

  4. Linux超全实用指令大全

    参考 Linux超全实用指令大全

  5. Linux 指令大全

    作为一个小前端,以前有我们的运维大神在的时候,要给服务器做什么配置的时候就找他(那时幸福到哭),如今他走了,公司也没招人(想把这个钱省下来,让我发现了,毕竟我能当小运维用,虽然很这方面很渣渣,哈哈,偷 ...

  6. IL指令大全(转)

    名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...

  7. angular指令大全

    这篇文章的案例都是来自官方,引用的cdn来自bootcss, 因为angular的官方网站被屏了, 所以要翻, 不过我把整个文档下回来了,方便大家下载可以点击: 打开下载英文版 angular的指令 ...

  8. IL指令大全

    IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执 ...

  9. Angualar:指令大全

    指令: 内置渲染指令 内置事件指令 内置节点指令 自定义指令 restrict template replace属性 templateUrl属性 trnsclude priorty terminal属 ...

随机推荐

  1. Arcgis Engine(ae)接口详解(2):featureClass查询

    //属性查询~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //IQueryFilter代表查询条件,QueryFilterClass代表只限于属性查询(就是没有空间查询) ...

  2. Android GUI系统学习1:Gralloc

    Gralloc模块是从Android Eclair(android 2.1)開始增加的一个HAL模块,Gralloc的含义为是Graphics Alloc(图形分配).他对上为libui提供服务,为其 ...

  3. Hadoop spark mongo复制集

    启动hadoop cd /usr/local/hadoop/hadoop $hadoop namenode -format # 启动前格式化namenode $./sbin/start-all.sh ...

  4. Deep Learning 36:python中的一些函数

    1.map(function, sequence[, sequence, ...])函数:返回一个list作用:map的作用是以参数序列中的每一个元素调用function函数,返回包含每次functi ...

  5. throw 、throws 简介

    抛出异常抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常.下面它们之间的异同.系统自动抛异常当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常.如: ...

  6. javascript中的_return_false和return_true

    1. [代码][JavaScript特效]代码     关于javascript中的 return false和return true 2008年12月22日 星期一 下午 09:31return 是 ...

  7. poj 2531 Network Saboteur 解题报告

    题目链接:http://poj.org/problem?id=2531 题目意思:将 n 个点分成两个部分A和B(也就是两个子集啦), 使得子集和最大(一定很难理解吧,呵呵).举个例子吧,对于样例,最 ...

  8. hdu(1007) 最近点对 分治法

    最近点对一般想到枚举  ,一一枚举时间复杂度为n^2:枚举时候一些操作是多余的,有了分治算法的思想 ,把一些问题分个击破,再回到整体. 题目链接 以这道题为例,我们可以把他按照x轴的升序分成多个子区域 ...

  9. BZOJ_1441_Min_数学+裴蜀定理

    BZOJ_1441_Min_数学+裴蜀定理 Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Inpu ...

  10. noip数学

    一.取模运算 (1)定义 给定一个正整数p和一个整数n 一定存在此等式 n=k*p+r;其中k,r是整数,r大于等于0小于p 称k是n除以p的商,r为n除以p的余数 说明:同余式 正整数a,b对p取模 ...