win32 指令大全

指令类型

助记符

(带*为特权指令)

对标志寄存器的影响

备注

说明

举例

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时,正常执行程序。

posted @ 2018-12-24 20:11 史D芬周 阅读(...) 评论(...) 编辑 收藏

win32 指令大全相关推荐

  1. 手机linux系统指令大全,Linux系统指令大全

    送给初学的穷人:Linux系统指令大全 cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到 ...

  2. python替换缺失值_详解Pandas 处理缺失值指令大全

    前言 运用pandas 库对所得到的数据进行数据清洗,复习一下相关的知识. 1 数据清洗 1.1 处理缺失数据 对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中 ...

  3. Linux 指令大全(3)

    2019独角兽企业重金招聘Python工程师标准>>> Linux 指令大全(3) 名称:/etc/aliases 使用权限:系统管理者 使用方式: 请用 newaliases 更新 ...

  4. 我的世界服务器修改数据,我的世界常用指令大全,轻松调整服务器数值状态

    在我的世界服务器中能够经过输送指令来微调服务器的一些数值状态,此次就为各位提供我的世界常用指令大全,毕竟我的世界作为一款出色的沙盒游戏,不止是因为原版内容和mod的增光填色,也离不开指令的辅助. /s ...

  5. 我的世界服务器ess配置信息,我的世界ess指令大全及用法详解

    我的世界ess指令大全及用法详解告诉你<我的世界>是一款风靡全球的沙盒游戏,其中哟很多的指令可以帮助玩家更好的游戏.ess指令在ess插件运行中十分重要的一部分,但是很多新手玩家在刚开始接 ...

  6. 我的世界ess服务器信息,我的世界ess指令怎么用 ess指令大全及用法详解

    我的世界ess指令都有哪些?作为风靡全球的沙盒游戏,我的世界带给玩家太多的乐趣.为了能更方便的游戏,ess指令能帮助我们更好的游戏.很多新手玩家刚接触就被搞晕了,这么多的指令看起来有些复杂.下面就由小 ...

  7. 我的世界服务器ess汉化文件,《我的世界》ess插件指令大全

    您可能感兴趣的话题: 我的世界 核心提示:我的世界ess插件指令大全,这对于刚刚接触命令方块以及辅助的同学来说,是个难点. 我的世界ess插件指令大全,这对于刚刚接触命令方块以及辅助的同学来说,是个难 ...

  8. 我的世界 服务器文件ess,我的世界指令大全 ess指令用法介绍

    我的世界ess指令是什么?我的世界ess指令有什么用?我的世界ess指令有些什么?我的世界指令大全,下面小编给大家带来我的世界指令介绍,以供大家参考,祝大家游戏愉快~ 我的世界ess指令--Essen ...

  9. 我的世界服务器ess配置文件,《我的世界》ess指令大全及用法详解

    我的世界是一款风靡全球的沙盒游戏,其中哟很多的指令可以帮助玩家更好的游戏.ess指令在ess插件运行中十分重要的一部分,但是很多新手玩家在刚开始接触的时候都不是太了解,下面安卓游戏小编就为大家带来我的 ...

  10. 我的世界 服务器文件ess,《我的世界》ess指令大全 ess指令作用

    我的世界ess指令在ess插件运行中十分重要的一部分,但是很多新手玩家在刚开始接触的时候都不是太了解,下面蚕豆网小编就为大家带来我的世界ess指令大全及ess指令作用. 我的世界ess指令--Esse ...

最新文章

  1. 2022-2028年中国安防视频行业市场前景分析预测报告
  2. [POI2007]ZAP-Queries
  3. python学习-综合练习(平方根、海伦公式、随机数、转换函数、数值交换)
  4. linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...
  5. 转行AI成功的秘诀只有一个,那就是……
  6. wap_list.php,织梦DEDECMS生成静态手机页面
  7. selenium windows 下面环境搭建(Eclipse)
  8. [转载]如何学习ANSYS?
  9. 如何配置和使用Tomcat访问日志
  10. ENC5 H264/5 4K高清编码器使用说明书
  11. bzoj 4453: cys就是要拿英魂!(后缀数组+二分)
  12. 数据显示 IT 工人结婚率并不低
  13. java.sql.SQLException: 要执行的 SQL 语句不得为空白或空值
  14. Azure BareMetal 裸金属
  15. python快速搭建本地服务器
  16. unity挂机游戏技术指南 安卓版
  17. 22岁对于人生的感悟
  18. 用mysql触发器做数据统计
  19. 一些选好虚拟主机控制面板的秘诀
  20. 淘宝API接入说明(按关键词搜索数据示例)

热门文章

  1. 如何高效学习,斯科特·扬(全文)
  2. mysql gtidpurged_MySQL设置gtid_purged破坏AUTO_POSITION复制协议
  3. 均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
  4. 使用PHP实现网易云音乐数据的获取
  5. 【Scratch】青少年蓝桥杯_每日一题_12.01_角色装扮
  6. 科学家做一个实验,我就得胖三斤?
  7. html5怎么让表格居中,HTML怎么让表格居中
  8. Ubuntu 18.04 中Chrome浏览器安装与使用
  9. 固体发动机内弹道matlab,固体火箭发动机内弹道性能的仿真研究
  10. Oracle XDB 组件 重建 说明