基本指令的汇编格式

指令符号说明 

符号说明
r8

任意一个8位通用寄存器AH、AL、BH、BL、CH、CL、DH、DL

r16

任意一个16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP

reg

代表r8、r16

seg

段寄存器CS、DS、ES、SS

m8

一个8位存储器操作数单元

m16

一个16位存储器操作数单元

mem

代表m8、m16

i8

一个8位立即数

i16

一个16位立即数

imm

代表i8、i16

dest

目的操作数

src

源操作数

label

标号



8086指令对状态标志的影响

 

 

状态符号说明

 

符号

说明

标志位不受影响(没有改变)

0

标志位复位(置0)

1

标志位置位(置1)

x

标志位按定义功能改变

#

标志位按指令的特定说明改变

u

标志位不确定(可能为0,也可能为1)

 

 

指令对状态标志的影响(未列出的指令不影响标志)

 

指令

OF

SF

ZF

AF

PF

CF

SAHF

#

#

#

#

#

POPF/ IRET

#

#

#

#

#

#

ADD/ADC/SUB/SBB/CMP/NEG/CMPS/SCAS

x

x

x

x

x

x

INC/DEC

x

x

x

x

x

MUL/IMUL

#

u

u

u

u

#

DIV/IDIV

u

u

u

u

u

u

DAA/DAS

u

x

x

x

x

x

AAA/AAS

u

u

u

x

u

x

AAM/AAD

u

x

x

u

x

u

AND/OR/XOR/TEST

0

x

x

u

x

0

SAL/SAR/SHL/SHR

#

x

x

u

x

#

ROL/ROR/RCL/RCR

#

#

CLC/STC/CMC

#



16/32位基本指令的汇编格式

指令类型指令汇编格式指令功能简介

 

MOV reg/mem,imm

dest←src

传送指令

MOV reg/mem/seg,reg

 

 

 

MOV reg/seg,mem

 

 

 

MOV reg/mem,seg

 

 

交换指令

XCHG reg,reg/mem

reg←→reg/mem

 

CHG reg/mem,reg

 

 

转换指令

XLAT label

al←ds:[(e)bx+al]

 

XLAT

 

 

 

PUSH  reg/mem/seg

寄存器/存储器入栈

 

PUSH imm

立即数入栈

 

POP reg/seg/mem

出栈

堆栈指令

PUSHA

保护所有r16

 

POPA

恢复所有r16

 

PUSHAD

保护所有r32

 

POPAD

恢复所有r32

 

LAHF

AH←FLAG低字节

 

SAHF

FLAG低字节←AH

标志传送

PUSHF

FLAGS入栈

 

POPF

FLAGS出栈

 

PUSHFD

EFLAGS入栈

 

POPFD

EFLAGS出栈

 

LEA r16/r32,mem

r16/r32←16/32位有效地址

 

LDS r16/r32,mem

DS: r16/r32←32/48位远指针

地址传送

LES r16/r32,mem

ES: r16/r32←32/48位远指针

 

LFS r16/r32,mem

FS: r16/r32←32/48位远指针

 

LGS r16/r32,mem

GS: r16/r32←32/48位远指针

 

LSS r16/r32,mem

SS: r16/r32←32/48位远指针

输入输出

IN AL/AX/EAX,i8/DX

AL/AX/EAX←I/O端口i8/[DX]

 

OUT i8/DX,AL/AX/EAX        

I/O端口i8/[DX]←AL/AX/EAX

 

ADD reg,imm/reg/mem

dest←dest+src

 

ADD mem,imm/reg

 

 

加法运算

ADC reg,imm/reg/mem

dest←dest+src+CF

 

ADC mem,imm/reg

 

 

 

INC reg/mem

reg/mem←reg/mem+1

 

SUB reg,imm/reg/mem

dest←dest-src

 

SUB mem,imm/reg

 

 

 

SBB reg,imm/reg/mem

dest←dest-src-CF

减法运算

SBB mem,imm/reg

 

 

 

DEC reg/mem

reg/mem←reg/mem-1

 

NEG reg/mem

reg/mem←0-reg/mem

 

CMP reg,imm/reg/mem

dest-src

 

CMP mem,imm/reg

 

 

 

MUL reg/mem

无符号数值乘法

 

IMUL reg/mem

有符号数值乘法

乘法运算

IMUL r16,r16/m16/i8/i16

r16←r16×r16/m16/i8/i16

 

IMUL r16,r/m16,i8/i16

r16←r/m16×i8/i16

 

IMUL r32,r32/m32/i8/i32

r32←r32×r32/m32/i8/i32

 

IMUL r32,r32/m32,i8/i32

r32←r32/m32×i8/i32

除法运算

DIV reg/mem

无符号数值除法

 

IDIV reg/mem

有符号数值除法

 

CBW

把AL符号扩展为AX

 

CWD

把AX符号扩展为DX.AX

 

CWDE

把AX符号扩展为EAX

符号扩展

CDQ

把EAX符号扩展为EDX.EAX

 

MOVSX r16,r8/m8

把r8/m8符号扩展并传送至r16

 

MOVSX r32,r8/m8/r16/m16

把r8/m8/r16/m16符号扩展并传送至r32

 

MOVZX r16,r8/m8

把r8/m8零位扩展并传送至r16

 

MOVZX r32,r8/m8/r16/m16    

把r8/m8/r16/m16零位扩展并传送至r32

 

DAA

将AL中的加和调整为压缩BCD码

 

DAS

将AL中的减差调整为压缩BCD码

十进制调整

AAA

将AL中的加和调整为非压缩BCD码

 

AAS

将AL中的减差调整为非压缩BCD码

 

AAM

将AX中的乘积调整为非压缩BCD码

 

AAD

将AX中的非压缩BCD码扩展成二进制数

 

AND reg,imm/reg/mem

dest←dest AND src

 

AND mem,imm/reg

 

 

 

OR reg,imm/reg/mem

dest←dest OR src

逻辑运算

OR mem,imm/reg

 

 

 

XOR reg,imm/reg/mem

dest←dest XOR src

 

XOR mem,imm/reg

 

 

 

TEST reg,imm/reg/mem

dest AND src

 

TEST mem,imm/reg

 

 

 

NOT reg/mem

reg/mem←NOT reg/mem

 

SAL reg/mem,1/CL/i8

算术左移1/CL/i8指定的次数

移位

SAR reg/mem,1/CL/i8

算术右移1/CL/i8指定的次数

 

SHL reg/mem,1/CL/i8

与SAL相同

 

SHR reg/mem,1/CL/i8

逻辑右移1/CL/i8指定的次数

 

ROL reg/mem,1/CL/i8

循环左移1/CL/i8指定的次数

循环移位

ROR reg/mem,1/CL/i8

循环右移1/CL/i8指定的次数

 

RCL reg/mem,1/CL/i8

带进位循环左移1/CL/i8指定的次数

 

RCR reg/mem,1/CL/i8

带进位循环右移1/CL/i8指定的次数

 

MOVS[B/W/D]

串传送

 

LODS[B/W/D]

串读取

 

STOS[B/W/D]

串存储

 

CMPS[B/W/D]

串比较

串操作

SCAS[B/W/D]

串扫描

 

INS[B/W/D]

I/O串输入

 

OUTS[B/W/D]

I/O串输出

 

REP

重复前缀

 

REPZ / REPE

相等重复前缀

 

REPNZ / REPNE

不等重复前缀

 

JMP label

无条件直接转移

 

JMP r16/r32/m16

无条件间接转移

转移

Jcc label

条件转移

 

JCXZ label

CX等于0转移

 

JECXZ label

ECX等于0转移

 

LOOP label

cx←cx-1;若cx≠0,循环

循环

LOOPZ / LOOPE label

cx←cx-1;若cx≠0且ZF=1,循环

 

LOOPNZ / LOOPNE label

cx←cx-1;若cx≠0且ZF=0,循环

 

CALL label

直接调用

子程序

CALL r16/m16

间接调用

 

RET

无参数返回

 

RET i16

有参数返回

 

INT i8

中断调用

中断

IRET

中断返回

 

INTO

溢出中断调用

 

ENTER i16,i8

建立堆栈帧

高级语言支持

LEAVE

释放堆栈帧

 

BOUND r16/r32,mem

边界检测

 

CLC        

CF←0

 

STC

CF←1

 

CMC

CF←~CF

处理器控制

CLD

DF←0

 

STD

DF←1

 

CLI

IF←0

 

STI

IF←1

 

NOP

空操作指令

 

WAIT

等待指令

 

HLT

停机指令

 

LOCK

封锁前缀

 

SEG:

段超越前缀

 

ESC i8,reg/mem

交给浮点处理器的浮点指令

保护方式类指令



 

 call [eax] 虚函数 寄存器间接寻址


mov ax,[di+06] 用于结构体


基址变址寻址


栈为函数服务



 

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值