8086汇编语言速成秘籍.docx

上传人:b****8 文档编号:10338423 上传时间:2023-02-10 格式:DOCX 页数:59 大小:27.17KB
下载 相关 举报
8086汇编语言速成秘籍.docx_第1页
第1页 / 共59页
8086汇编语言速成秘籍.docx_第2页
第2页 / 共59页
8086汇编语言速成秘籍.docx_第3页
第3页 / 共59页
8086汇编语言速成秘籍.docx_第4页
第4页 / 共59页
8086汇编语言速成秘籍.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

8086汇编语言速成秘籍.docx

《8086汇编语言速成秘籍.docx》由会员分享,可在线阅读,更多相关《8086汇编语言速成秘籍.docx(59页珍藏版)》请在冰豆网上搜索。

8086汇编语言速成秘籍.docx

8086汇编语言速成秘籍

8086汇编总结

一、8086编程结构

EU

通用寄存器

AX

累加器

 

数据寄存器

BX

基数寄存器

CX

计数器

DX

数据寄存器

专用寄存器

BP

基数指针

指针寄存器

堆栈段偏移地址

SP

堆栈指针

给出栈顶偏移地址

SI

源变址寄存器

变址寄存器

数据段偏移地址

DI

目的变址寄存器

标志

F

标志寄存器

标志寄存器

总线

接口

部件

BIU

CS

代码段

不能被赋值复位后为FFFFH

 

存储器

DS

数据段

复位后为0000H

ES

附加段

SS

堆栈段

存放堆栈基地址

IP

IP

指令指针寄存器器

指令指针寄存器

二、状态标志寄存器F

标志位名

功能

为1对应符

为0对应符

CF

进位标志

1最高位产生进位

CY

NC

AF

辅助进位标志

1低四位产生进位

AC

NA

ZF

零标志

1结果为0,0结果不为0

ZR

NZ

SF

符号标志

1结果为负,0结果为正

NG

PL

PF

奇偶标志

1底八位有偶数个1,0结果有奇数个1

PE

PO

OF

溢出标志

1最高位有进位,0最高位没进位

OV

NV

DF

方向标志

控制标志位

DN

UP

IF

中断允许标志

EI

DI

TF

跟踪标志

三、寻址方式{(PA物理地址=实际地址=绝对地址=cpu以实际地址访问存储器)=段基址*10H+(逻辑地址=偏移地址=有效地址EA=程序以逻辑地址编址)}

寻址方式

操作数物理地址(PA)

指令格式举例

立即寻址

操作数在指令中直接给出

源操作数为地址

MOVDX,100H;(DX)←100H

寄存器寻址

操作数在寄存器中

操作数需要寻址

ADDAX,BX;(AX)←(AX)+(BX)

直接寻址

操作数的有效地址由指令直接给出

操作数需要计算

MOVAX,[100];(AX)←(100)

寄存器间接寻址

PA=(DS)|(SS)×16+

(BX)|(SI)|(DI)|(BP)

给出的均为操作数的逻辑地址,而且将逻辑地址分成几段,经计算才能得到操作数

MOVAX,[BX];

(AX)←((DS)×16+(BX))

寄存器相对寻址

PA=(DS|SS)×16+

(BX|BP|SI|DI)+偏移量

MOVAL,OFFSET[SI];

(AL)←((DS)×16+(SI)+OFFSET)

基址变址寻址

PA=(DS|SS)×16+

(BP|BX)+(SI|DI)

MOVAX,[BX+DI];

(AX)←((DS)×16+(BX)+(DI))

相对基址变址寻址

PA=(DS|SS)×16+

(BX|BP)+(SI|DI)+偏移量

MOVAX,OFFSET(BX+DI);

(AX)←((DS)×16+(BX)+(DI)+OFFSET)

B——二进制D——十进制Q——八进制H——十六进制

四、符号约定及含义

符号

含义

i8

一个8位立即数

立即数

i16

一个16位立即数

imm

一个8位或16位立即数

r8

一个8位通用寄存器

AHALBHBLCHCLDHDL

r16

一个16位通用寄存器或专用寄存器

AXBXCXDXBPSPSIDI

reg

一个8位或16位通用寄存器或专用寄存器

seg

一个16位段寄存器

DSCSESSS

m8

一个8位的存储器操作数

m16

一个16位的存储器操作数

mem

一个8位或16位存储器操作数

m32

一个32位的存储器操作数

dest

目标操作数

src

源操作数

port

I/O端口

五、CMP指令的结果判断方法

大小关系A-B

相关标志位

 

判断依据

无符号

ZF

CF

A>B

0

0

ZF=1

A=B

CF=1

A

CF或ZF=0

A>B

A=B

1

0

CF=0

A>=B

A

0

1

CF或ZF=1

A<=B

A

B

大小关系

相关标志位

判断条件

大小关系

有符号

SF

ZF

OF

>0

>0

A>B

0

0

0

ZF=1

A=B

>0

>0

A

1

0

0

SF异或OF=1

A

>0

<0

A>B

0

0

0

(SF异或OF)或ZF=0

A>B

1

0

1

<0

>0

A

1

0

0

0

0

1

<0

<0

A

1

0

0

SF异或OF=0

A>=B

<0

<0

A>B

0

0

0

(SF异或OF)或ZF=1

A<=B

A

B

A=B

0

1

0

一、指令表(指令分六大类)

1、数据传送类(只有标志传送指令对F寄存器影响)

类型

汇编指令格式

功能

操作数说明

时钟周期数

字节数

说明

MOVdest,src

数据传送指令

(dest)←(src)

reg,seg

reg,mem

reg,imm

reg,reg

mem,reg

mem,seg

mem,imm

seg,reg

seg,mem

2

8+EA

4

2

9+EA

9+EA

10+EA

2

8+EA

2

2~4

2~3

2

2~4

2~4

3~6

2

2~4

Cs不能做目标操作数,不能被赋值。

段寄存器之间不能传输数据。

目标操作数和源操作数不能同时为内存操作数(存储器操作数)。

寄存器中的数为操作数地址时为内存操作数,如【XX】。

PUSHsrc

入栈

(SP)←(SP)-2

((SP)+1,(SP))←(src)

r16

seg

m16

11

10

16+EA

1

1

2~4

栈底为高地址

高字节先入栈

每次两个字节参与(16位)

基地址在ss中

偏移地址在sp中

调用或中断时保存返回地址

POPdst

出栈

(dst)←((SP)+1,(SP))

(SP)←(SP)+2

r16

seg

m16

8

8

17+EA

1

1

2~4

XCHGdest,src

数据交换指令

(des)←→(src)

reg,mem

reg,reg

mem,reg

17+EA

4

3

2~4

2

1

两者互换,但不能同时为存储器操作数,存储内容互换要借助通用寄存器

XLAT

换码指令

AL←DS中逻辑地址为(BX+AL)的内存单元

11

1

操作数均隐含

输入输出指令

INAL/AX,port

(acc)←(port)

AX字节,AL字,DX不是操作数而是地址

10

2

直接寻址,port地址范围

0-255(0ffh)

OUTport,AL/AX

(port)←(acc)

10

2

INAL/AX,DX

(acc)←((DX))

8

1

间接寻址,端口地址在DX中,范围0-65535(0ffffh)

OUTport,DX

((DX))←(acc)

8

1

地址传送指令(对逻辑地址操作)

LEAreg,src取

有效地址指令

r16←mem的EA

r16,mem

2+EA

2~4

L为取的意思

操作数均为16位

LDSreg,src地址指针装入DS

r16←m32的底16位

(DS)←m32的高16位

r16,m32

16+EA

2~4

LESreg,src地址指针装入ES

r16←m32的底16位

(ES)←m32的高16位

r16,m32

16+EA

2~4

标志传送指令

(唯一对F寄存器操作)

LAHF取标志

(AH)←(F低8位字节)

隐含操作数

4

1

F

15

7

SF

14

6

ZF

13

5

12

4

AF

11

OF

3

10

DF

2

PF

9

IF

1

8

TF

0

CF

SAHF置标志

(F低8位字节)←(AH)

隐含操作数

4

1

PUSHF标志入栈指令

(SP)←(SP)-2(先入栈)

((SP)+1,(SP))←F

隐含操作数,标志寄存器入栈

10

1

POPF标志弹出指令

F←((SP)+1,(SP))

(SP)←(SP)+2(出栈)

隐含操作数,数据出栈到标志寄存器

8

1

2、算术运算指令(都对F寄存器产生影响)

类型

汇编指令格式

功能

操作数说明

时钟周期数

字节数

说明

辅助运算指令

CBW

AX←AL

字节扩展到字

不影响标志位

AL<80H时AH=00H,AL>=80H时AH=FFH

AX<8000H时DX=0000H,AX>=8000H时DX=FFFFH

对于符号数:

最高位为0表示正,为1表示负

CWD

DXAX←AX

字扩展到双字

B

C

D

 

DAA

压缩BCD数加法调整

(AL)←(AX)/(src)的商

(AH)←(AX)/(src)的余数

(AX)←(DX,AX)/(src)的商

(DX)←(DX,AX)/(src)的余数

4

1

DAS

压缩BCD数减法调整

(AL)←(AX)/(src)的商

(AH)←(AX)/(src)的余数

(AX)←(DX,AX)/(src)的商

(DX)←(DX,AX)/(src)的余数

4

1

AAA加法

ASCII码调整

(AL)←AL中的和调整为组合BCD

4

1

AAS减法

ASCII码调整

(AL)←AL中的差调整为组合BCD

4

1

AAM

乘法

ASCII码调整

(AL)←AL中的和调整为非组合BCD

(AH)←(AH)+调整产生的进位值

83

2

AAD

除法

ASCII码调整

(AL)←AL中的差调整为非组合BCD

(AH)←(AH)-调整产生的进位值

60

2

(算术运算指令)

 

DIVsrc

Src字节AL←AX÷src商,AH←AX÷src余数,Src字AX←DXAX÷src商,DX←DXAX÷src余数

8位reg

8位mem

16位reg

16位mem

80~90

(86~96)+EA

144~162

(150~168)+EA

2

2~4

2

2~4

不影响标志位除非溢出

不能是压缩的BCD数

IDIVsrc

Src字节AL←AX÷src商,AH←AX÷src余数,Src字AX←DXAX÷src商,DX←DXAX÷src余数

8位reg

8位mem

16位reg

16位mem

101~112

(107~118)+EA

165~184

(171~190)+EA

2

2~4

2

2~4

(算术运算指令)

ADDdst,src

(dst)←(src)+(dst)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

16+EA

9+EA

3

4

17+EA

4

2~4

2~4

2

3~4

3~6

2~3

操作数类型:

无符号二进制数,

带符号位二进制数,

无符号压缩BCD数,

无符号非压缩BCD数。

dest与src不能同时为内存操作数。

ADCdst,src

带进位加法

(dst)←(src)+(dst)+CF(最高位进位标志符,有进位为1,否则为0)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

16+EA

9+EA

3

4

17+EA

4

2~4

2~4

2

3~4

3~6

2~3

INCdest

(dest)←(dest)+1

reg

mem

2~3

15+EA

1~2

2~4

(算术运算指令)

SUBdest,src

(dst)←(src)-(dst)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

16+EA

9+EA

3

4

17+EA

2~4

2~4

2

3~4

3~6

操作数类型:

无符号二进制数,

带符号位二进制数,

无符号压缩BCD数,

无符号非压缩BCD数。

dest与src不能同时为内存操作数。

SBBdest,src

带进位减法

(dst)←(src)-(dst)-CF

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

16+EA

9+EA

3

4

17+EA

2~4

2~4

2

3~4

3~6

DEGdest

(dest)←(dest)-1

reg

mem

2~3

15+EA

1~2

2~4

NEGdest

求补指令

(dest)←0-(dest)

reg

mem

3

16+EA

2

2~4

就是求相反数。

按位取反,末位加1.

CMPdest,src

比较指令

(dest)-(src)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

9+EA

9+EA

3

4

10+EA

2~4

2~4

2

3~4

3~6

目的操作数减去源操作数。

比较结果见附表

(算术运算指令)

MULsrc

Src为字节:

(AX)←(AL)*(src)

Src为字:

(DX,AX)←(AX)*(src)

8位reg

8位mem

16位reg

16位mem

70~77

(76~83)+EA

118~133

(124~139)+EA

2

2~4

2

2~4

不能是压缩的BCD数

不能是立即数

仅影响标志位OF\CF

 

IMULsrc

Src为字节:

(AX)←(AL)*(src)

Src为字:

(DX,AX)←(AX)*(src)

8位reg

8位mem

16位reg

16位mem

80~98

(86~104)+EA

128~154

(134~160)+EA

2

2~4

2

2~4

 

3、位操作指令

ANDdst,src

(dst)←(dst)∧(src)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

16+EA

9+EA

3

4

17+EA

4

2~4

2~4

2

3~4

3~6

2~3

 

ORdst,src

(dst)←(dst)∨(src)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

16+EA

9+EA

3

4

17+EA

4

2~4

2~4

2

3~4

3~6

2~3

 

NOTop1

(op1)←(

reg

mem

3

16+EA

2

2~4

 

XORdst,src

(dst)←(dst)⊕(src)

mem,reg

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

16+EA

9+EA

3

4

17+EA

4

2~4

2~4

2

3~4

3~6

2~3

 

TESTdst,src

(dst)∧(src)

reg,mem

reg,reg

reg,imm

mem,imm

acc,imm

9+EA

3

5

11+EA

4

2~4

2

3~4

3~6

2~3

影响标志位,不保留运算结果

 

移位指令

SHLdst,1

SHLdst,CL

逻辑左移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

可以使数变为原来的2的CL次方倍

 

SALdst,1

SALdst,CL

算术左移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

SHRdst,1

SHRdst,CL

逻辑右移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

可以使数变为原来的2的CL次方分之一

 

SARdst,1

SARdst,CL

算术右移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

循环

移位

指令

 

ROLop1,1

ROLop1,CL

不带进位循环左移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

RORop1,1

RORop1,CL

不带进位循环右移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

RCLop1,1

RCLop1,CL

带进位位的循环左移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

RCRop1,1

RCRop1,CL

带进位位的循环右移

reg

mem

reg

mem

2

15+EA

8+4/bit

20+EA+4/bit

2

2~4

2

2~4

 

4、串操作指令

串传送

 

MOVSdest,src

MOVSB

 

MOVSW

字节

((ES:

DI))←((DS:

SI))

(SI)←(SI)±1,

(DI)←(DI)±1

((ES:

DI))←((DS:

SI))

(SI)←(SI)±2,

(DI)←(DI)±2

不重复:

18

重复:

9+17/rep

不重复:

18

重复:

9+17/rep

1

 

1

原串存入数据段DS中

目标串存入附加段ES中

指令STD使DF为1

指令CLD使DF为0

 

串送存

STOSdest

STOSB

STOSW

字节

((ES:

DI))←(AL)

(DI)←(DI)±1

((((ES:

DI))))←(AX)

(DI)←(DI)±2

不重复:

11

重复:

9+10/rep

不重复:

11

重复:

9+10/rep

1

1

串装入

 

LODSsrc

LODSB

LODSW

字节

(AL)←((DS:

SI))

(SI)←(SI)±1

(AX)←((DS:

SI))

(SI)←(SI)±2

不重复:

12

重复:

9+13/rep

不重复:

12

重复:

9+13/rep

1

1

串比较

CMPSsrc,dest

CMPSB

 

CMPSW

字节

((DS:

SI))-((ES:

DI))

(SI)←(SI)±1,

(DI)←(DI)±1

((DS:

SI))-((ES:

DI))

(SI)←(SI)±2,

(DI)←(DI)±2

不重复:

22

重复:

9+22/rep

不重复:

22

重复:

9+22/rep

1

 

1

串扫描

SCASdest

SCASB

SCASW

字节

(AL)-((ES:

DI))

(DI)←(DI)±1

(AX)←((ES:

DI))

(DI)←(DI)±2

不重复:

15

重复:

9+15/rep

不重复:

15

重复:

9+15/rep

1

 

1

REP

无条件重复前缀

(CX)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令

2

1

REPE/REPZ

相等重复前缀

(CX)=0或(ZF)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令

2

1

REPNE/REPNZ

不相等重复前缀

(CX)=0或(ZF)=1退出重复,否则(CX)←(CX)-1并执行其后的串指令

2

1

5、控制转移指令(分四类)

 

1转移指令

 

无条件跳转

JMPSHORTop1

JMPNEARPTRop1

JMPFARPTRop1

JMPWORDPTRop1

JMPDWORDPTRop1

无条件转移

 

reg

mem

15

15

15

11

18+EA

24+EA

2

3

5

2

2~4

2~4

 

条件跳转

JZ/JEop1

ZF=1则转移

16/4

2

JNZ/JNEop1

ZF=0则转移

16/4

2

JSop1

SF=1则转移

16/4

2

JNSop1

SF=0则转移

16/4

2

JP/JPEop1

PF=1则转移

16/4

2

JNP/JPOop1

PF=0则转移

16/4

2

JCo

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

当前位置:首页 > 求职职场 > 简历

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

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