单片机指令表最全.docx

上传人:b****6 文档编号:4725244 上传时间:2022-12-08 格式:DOCX 页数:33 大小:22.37KB
下载 相关 举报
单片机指令表最全.docx_第1页
第1页 / 共33页
单片机指令表最全.docx_第2页
第2页 / 共33页
单片机指令表最全.docx_第3页
第3页 / 共33页
单片机指令表最全.docx_第4页
第4页 / 共33页
单片机指令表最全.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

单片机指令表最全.docx

《单片机指令表最全.docx》由会员分享,可在线阅读,更多相关《单片机指令表最全.docx(33页珍藏版)》请在冰豆网上搜索。

单片机指令表最全.docx

单片机指令表最全

MCS-51共有111条指令,可分为5类:

[1].数据传送类指令(共29条)

[2].算数运算类指令(共24条)

[3].逻辑运算及移位类指令(共24条)

[4].控制转移类指令(共17条)

[5].布尔变量操作类指令(共17条)

一些特殊符号的意义

在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。

Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。

Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)

direct—内部数据存储单元的8位地址。

包含0—127(255)内部存储单元地址和特殊功能寄存地址。

#data—指令中的8位常数。

#data16—指令中的16位常数。

addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。

#addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。

rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128——+127范围内。

@—间接寄存器寻址或基址寄存器的前缀。

/—为操作的前缀,声明对该位操作书取反。

DPTR—数据指针。

bit—内部RAM和特殊功能寄存器的直接寻址位。

A—累加器。

B—累加器B。

用于乘法和除法指令中。

C—进位标志位。

(x)—某地址单元中的内容。

((x))—由X寻址单元中的内容。

(一)MCS-51的寻址方式

寻址的“地址”即为操作数所在单元的地址,绝大部分指令执行时都需要用到操作数,那么到哪里去取得操作数呢?

最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得响应的操作数,这便是“寻址”之意。

MCS-51的寻址方式很多,使用起来也相当方便,功能也很强大,灵活性强。

这便是MCS-51指令系统“好用”的原因之一。

下面我们分别讨论几种寻址方式的原理。

[1].直接寻址

指令中操作数直接以单元地址形式出现,例如:

MOVA,68H

这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。

值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM进行寻址。

低128位单元在指令中直接以单元地址的形式给出。

对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问,而无其它方法。

单片机指令以A开头的指令有18条,分别为:

1、ACALLaddr11

指令名称:

绝对调用指令

指令代码:

A10A9A810001A7A6A5A4A3A2A1A0

指令功能:

构造目的地址,进行子程序调用。

其方法是以指令提供的11位地址(al0~a0),

取代PC的低11位,PC的高5位不变。

操作内容:

PC←(PC)+2

SP←(SP)+1

(SP)←(PC)7~0

SP←(SP)+1

(SP)←(PC)15~8

PC10~0←addrl0~0

字节数:

2

机器周期:

2

使用说明:

由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。

2、ADDA,Rn

指令名称:

寄存器加法指令

指令代码:

28H~2FH

指令功能:

累加器内容与寄存器内容相加

操作内容:

A←(A)+(Rn),n=0~7

字节数:

1

机器周期;1

影响标志位:

C,AC,OV

3、ADDA,direct

指令名称:

直接寻址加法指令

指令代码:

25H

指令功能:

累加器内容与内部RAM单元或专用寄存器内容相加

操作内容:

A←(A)+(direct)

字节数:

2

机器周期:

1

影响标志位:

C,AC,OV

4、ADDA,@Ri’

指令名称:

间接寻址加法指令

指令代码:

26H~27H

指令功能:

累加器内容与内部RAM低128单元内容相加

操作内容:

A←(A)+((Ri)),i=0,1

字节数:

1

机器周期:

1

影响标志位:

C,AC,OV

5、ADDA,#data

指令名称:

立即数加法指令

指令代码:

24H

指令功能:

累加器内容与立即数相加

操作内容:

A←(A)+data

字节数:

2

机器周期:

1

影响标志位:

C,AC,OV

6、ADDCA,Rn

指令名称:

寄存器带进位加法指令

指令代码:

38H~3FH

指令功能:

累加器内容、寄存器内容和进位位相加

操作内容:

A←(A)+(Rn)+(C),n=0~7

字节数:

1

机器周期:

1

影响标志位:

C,AC,OV

7、ADDCA,direct

指令名称:

直接寻址带进位加法指令

指令代码:

35H

指令功能:

累加器内容、内部RAM低128单元或专用寄存器内容与进位位加

操作内容:

A←(A)+(direct)+(C)

字节数:

2

机器周期:

1

影响标志位:

C,AC,OV

8、ADDCA,@Ri

指令名称:

间接寻址带进位加法指令

指令代码:

36H~37H

指令功能:

累加器内容、内部RAM低128单元内容及进位位相加

操作内容:

A←(A)+((Ri))+(C),i=0,1

字节数:

1

机器周期:

1

影响标志位:

C,AC,OV

9、ADDCA,#data

指令名称:

立即数带进位加法指令

指令代码:

34H

指令功能:

累加器内容、立即数及进位位相加

操作内容:

A←(A)+data+(C)

字节数:

2

机器周期:

1

影响标志位:

C,AC,OV

10、AJMPaddr11

指令名称:

绝对转移指令

指令代码:

A10A9A810001A7A6A5A4A3A2A1A0

指令功能:

构造目的地址,实现程序转移。

其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。

操作内容:

PC←(PC)+2

PCl0~0←addrll

字节数:

2

机器周期:

2

使用说明:

由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。

11、ANLA,Rn

指令名称:

寄存器逻辑与指令

指令代码:

58H~5FH

指令功能:

累加器内容逻辑与寄存器内容

操作内容:

A←(A)∧(Rn),n=0~7

字节数:

1

机器周期:

1

12、ANLA,direct

指令名称:

直接寻址逻辑与指令

指令代码:

55H

指令功能:

累加器内容逻辑与内部RAM低128单元或专用寄存器内容

操作内容:

A←(A)∧(diret)

字节数:

2

机器周期:

1

13、ANLA,@Ri

指令名称:

间接寻址逻辑与指令

指令代码:

56H~57H

指令功能:

累加器内容逻辑与内部RAM低128单元内容

操作内容:

A←(A)∧((Ri))i=0,1

字节数:

1

机器周期:

1

14、ANLA,#data

指令名称:

立即数逻辑与指令

指令代码:

54H

指令功能:

累加器内容逻辑与立即数

操作内容:

A←(A)∧data

字节数:

2

机器周期:

1

15、ANLdirect,A

指令名称:

累加器逻辑与指令

指令代码:

52H

指令功能:

内部RAM低128单元或专用寄存器内容逻辑与累加器内容

操作内容:

direct←(A)∧(direct)

字节数:

2

机器周期:

1

16、ANLdirect,#data

指令名称:

逻辑与指令

指令代码:

53H

指令功能:

内部RAM低128单元或专用寄存器内容逻辑与立即数

操作内容:

direct←(direct)∧data

字节数:

3

机器周期:

2

17、ANLC,bit

指令名称:

位逻辑与指令

指令代码:

82H

指令功能:

进位标志逻辑与直接寻址位

操作内容:

C←(C)∧(bit)

字节数:

2

机器周期:

2

18、ANLC,/bit

指令名称:

位逻辑与指令

指令代码:

B0H

指令功能:

进位标志逻辑与直接寻址位的反

操作内容:

C←(C)∧(bit)

字节数:

2

机器周期:

2

单片机指令以C开头的指令有10条,分别为:

1、CJNEA,dircet,rel

指令名称:

数值比较转移指令

指令代码:

B5H

指令功能:

累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。

操作内容:

若(A)=(direct),则PC←(PC)+3,C←0

若(A)>(direct),则PC←(PC)+3+rel,C←0

若(A)<(direct),则PC←(PC)+3+rel,C←1

字节数:

3

机器周期:

2

2、CJNEA,#data,rel

指令名称:

数值比较转移指令

指令代码:

B4H

指令功能:

累加器内容与立即数比较,不等则转移。

操作内容:

若(A)=data,则PC←(PC)+3,C←0

若(A)>data,则PC←(PC)+3+rel,C←0

若(A)<data,则PC←(PC)+3+rel,C←1

字节数:

3

机器周期:

2

3、CJNERn,#data,rel

指令名称:

数值比较转移指令

指令代码:

B8H~BFH

指令功能:

寄存器内容与立即数比较,不等则转移。

操作内容:

若(Rn)=data,则PC←(PC)+3,C←0

若(Rn)>data,则PC←(PC)+3+rel,C←0

若(Rn)<data,则PC←(PC)+3+rel,C←1

字节数:

3

机器周期:

2

4、CJNE@Ri,#data,rel

指令名称:

数值比较转移指令

指令代码:

B6H~B7H

指令功能:

内部RAM低128单元内容与立即数比较,不等则转移。

操作内容:

若((Ri))=data,则PC←(PC)+3,C←0

若((Ri))>data,则PC←(PC)+3+rel,C←0

若((Ri))<data,则PC←(PC)+3+rel,C←1

字节数:

3

机器周期:

2

5、CLRA

指令名称:

累加器清0指令

指令代码:

E4H

指令功能:

累加器清0

操作内容:

A←0

字节数:

1

机器周期:

1

6、CLRC

指令名称:

进位标志清0指令

指令代码:

C3H

指令功能:

进位位清0

操作内容:

C←0

字节数:

1

机器周期:

1

7、CLRbit

指令名称:

直接寻址位清0指令

指令代码:

C2H

指令功能:

直接寻址位清0

操作内容:

bit←0

字节数:

2

机器周期:

1

8、CPLA

指令名称:

累加器取反指令

指令代码:

F4H

指令功能:

累加器取反

操作内容:

A←(A)

字节数:

1

机器周期:

1

9、CPLC

指令名称:

进位标志取反指令

指令代码:

B3H

指令功能:

进位标志位状态取反

操作内容:

C←(c取反)

字节数:

1

机器周期:

1

10、CPLbit

指令名称:

直接寻址位取反指令

指令代码:

B2H

指令功能:

直接寻址位取反

操作内容:

bit←(bit取反)

字节数:

2

机器周期:

1

单片机指令以D开头的指令有8条,分别为:

1、DAA

指令名称:

十进制调整指令

指令代码:

D4H

指令功能:

对BCD码加法运算的结果进行有条件的修正

操作内容:

若(A)3~0>9∨(AC)=1,则A3~0←(A)3~0+6

若(A)7~4>9∨(C)=1,则A7~4←(A)7~4+6

若(A)7~4=9∧(A)3~0>9,则A7~4←(A)7~4+6

字节数:

1

机器周期:

1

使用说明:

DA指令不影响溢出标志

2、DECA

指令名称:

累加器减1指令

指令代码:

14H

指令功能:

累加器内容减1

操作内容:

A←(A)-1

字节数:

1

机器周期:

1

3、DECRn

指令名称:

寄存器减1指令

指令代码:

18H~1FH

指令功能:

寄存器内容减1

操作内容:

Rn←(Rn)-1,n=0~7

字节数:

1

机器周期:

1

4、DECdirect

指令名称:

直接寻址减1指令

指令代码:

15H

指令功能:

内部RAM低128单元及专用寄存器内容减1

操作内容:

direct←(direct)-1

字节数:

2

机器周期:

1

5、DEC@Ri

指令名称:

间接寻址减1指令

指令代码:

16H~17H

指令功能:

内部RAM低128单元内容减1

操作内容:

(Ri)←((Ri))-1,i=0,1

字节数:

1

机器周期:

1

6、DIVAB

指令名称:

无符号数除法指令;

指令代码:

84H

指令功能:

A的内容被B的内容除。

指令执行后,商存于A中,余数存于B中。

操作内容:

A←(A)/(B)的商

B←(A)/(B)的余数

字节数:

1

机器周期:

4

影响标志位:

C被清0;若B=00H,除法无法进行,并使OV=1;否则OV=0。

7、DJNZRn,rel

指令名称:

寄存器减1条件转移指令

指令代码:

D8H~DFH

指令功能:

寄存器内容减1。

不为0转移;为0顺序执行。

操作内容:

Rn←(Rn)-l,n=0~7

若(Rn)≠0,则PC←(PC)+2+rel

若(Rn)=0,则PC←(PC)+2

字节数:

2

机器周期:

2

8、DJNZdirect,rel

指令名称:

直接寻址单元减1条件转移指令

指令代码:

D5H

指令功能:

内部RAM低128单元内容减1。

不为0转移;为0顺序执行。

操作内容:

direct←(direct)-1

若(direct)≠0,则PC←(PC)+3+rel

若(direct)=0,则PC←(PC)+3

字节数:

3

机器周期:

2

单片机指令以I开头的指令有5条,分别为:

1、INCA

指令名称:

累加器加1指令

指令代码:

04H

指令功能:

累加器内容加1

操作内容:

A←(A)+1

字节数:

1

机器周期:

1

2、INCRn

指令名称:

寄存器加1指令

指令代码:

08H~0FH

指令功能:

寄存器内容加1

操作内容:

Rn←(Rn)+1,n=0~7

字节数:

1

机器周期:

1

3、INCdirect

指令名称:

直接寻址单元加1指令

指令代码:

05H

指令功能:

内部BAM低128单元或专用寄存器内容加1

操作内容:

direct←(direct)+1

字节数:

2

机器周期:

1

4、INC@Ri

指令名称:

间接寻址单元加1指令

指令代码:

06H~07H

指令功能:

内部RAM低128单元内容加1

操作内容:

(Ri)←((Ri))+1;i=0,l

字节数:

1

机器周期:

1

5、INCDPTR

指令名称:

16位数据指针加1指令

指令代码:

A3H

指令功能:

数据指针寄存器DPTR内容加1

操作内容:

DPTR←(DPTR)+1

字节数:

1

机器周期:

2

单片机指令以J开头的指令有8条,分别为:

1、JBbit,rel

指令名称:

位条件转移指令。

指令代码:

20H

指令功能:

根据指定位的状态,决定程序是否转移。

若为1则转移;否则顺序执行。

操作内容:

若(bit)=1,则PC←(PC)+3+rel

若(bit)≠1,则PC←(PC)+3

字节数:

3

机器周期:

2

2、JBCbit,rel

指令名称:

位条件转移清0指令

指令代码:

10H

指令功能:

对指定位的状态进行测试。

若为1,则把该位清0并进行转移;否则程序顺序执行。

操作内容:

若(bit)=1,则PC←(PC)+3+rel,bit←0

若(bit)≠1,则PC←(PC)+3

字节数:

3

机器周期:

2

3、JCrel

指令名称:

累加位条件转移指令

指令代码:

40H

指令功能:

根据累加位(C)的状态决定程序是否转移,若为1则转移,否则顺序执行。

操作内容:

若(C)=1,则PC←(PC)+2+rel

若(C)≠1,则PC←(PC)+2

字节数:

2

机器周期:

2

4、JMP@A+DPTR

指令名称:

无条件间接转移指令

指令代码:

72H

指令功能:

A内容与DPTR内容相加作为转移目的地址,进行程序转移。

操作内容:

PC←(A)+(DPTR)

字节数:

1

机器周期;2

5、JNBbit,rel

指令名称:

位条件转移指令

指令代码:

30H

指令功能:

根据指定位的状态,决定程序是否转移。

若为0则转移;否则顺序执行。

操作内容:

若(bit)=0,则PC←(PC)+3+rel

若(bit)≠0,则PC←(PC)+3

字节数:

3

机器周期:

2

6、JNCrel

指令名称:

累加位条件转移指令

指令代码:

50H

指令功能:

根据累加位(C)的状态决定程序是否转移。

若为o则转移;否则顺序执行。

操作内容:

若(C)=0,则PC←(PC)+2+rel

若(C)≠0,则PC←(PC)+2

字节数:

2

机器周期:

2

7、JNZrel

指令名称:

判0转移指令

指令代码:

70H

指令功能:

累加位(A)的内容不为0,则程序转移;否则程序顺序执行。

操作内容:

若(A)≠0,则PC←(PC)+2+rel

若(A)=0,则PC←(PC)+2

字节数:

2

机器周期:

2

8、JZrel

指令名称:

判0转移指令

指令代码:

60H

指令功能:

累加位(A)的内容为o,则程序转移;否则程序顺序执行。

操作内容:

若(A)=0,则PC←(PC)+2+rel

若(A)≠0,则PC←(PC)+2

字节数:

2

机器周期:

2

单片机指令以L开头的指令就2条,分别为:

1、LCALLaddr16

指令名称:

长调用指令

指令代码:

12H

指令功能:

按指令给定地址进行子程序调用

操作内容:

PC←(PC)+3

SP←(SP)+1

(SP)←(PC)7~0

SP←(SP)+1

(SP)←(PC)15~8

PC←addrl6

字节数:

3

机器周期:

2

使用说明:

在64KB的范围内调用子程序

2、LJMPaddrl6

指令名称:

长转移指令

指令代码:

02H

指令功能:

使程序按指定地址进行无条件转移

操作内容:

PC←addrl6

字节数:

3

机器周期:

2

单片机指令以M开头的指令有24条,分别为:

     

1、MOVA,Rn

指令名称:

寄存器数据传送指令

指令代码:

E8H~EFH

指令功能:

寄存器内容送累加器

操作内容:

A←(Rn),n=0~7

字节数:

1

机器周期:

1

2、MOVA,direct

指令名称:

直接寻址数据传送指令

指令代码:

E5H

指令功能:

内部RAM低126单元或专用寄存器内容送累加器

操作内容:

A←(direct)

字节数:

2

机器周期:

1

3、MOVA,@Ri

指令名称:

间接寻址数据传送指令

指令代码:

E6H~E7H

指令功能:

内部RAM低128单元内容送累加器

操作内容:

A←((Ri)),i=0,1

字节数:

1

机器周期:

1

4、MOVA,#data

指令名称:

立即数据传送指令

指令代码:

74H

指令功能:

立即数送累加器

操作内容:

A←data

字节数:

2

机器周期:

1

5、MOVRn,A

指令名称:

累加器数据传送指令

指令代码:

F8H~FFH

指令功能:

累加器内容送寄存器

操作内容:

Rn←(A)

字节数:

1

机器周期:

1

6、MOVRn,direct

指令名称:

直接寻址数据传送指令

指令代码:

A8H~AFH

指令功能:

内部RAM低128单元或专用寄存器内容送累加器

操作内容:

Rn←(direct),n=0~7

字节数:

2

机器周期:

2

7、MOVRn,#data

指令名称:

立即数据传送指令

指令代码:

78H~7FH

指令功能:

立即数送寄存器

操作内容:

Rn←data,n=0~7

字节数:

2

机器周期:

1

8、MOVdirect,A

指令名称:

累加器数据传送指令

指令代码:

F5H

指令功能:

累加器内容送内部RAM低128单元或专用寄存器

操作内容:

direct←(A)

字节数:

2

机器周期:

1

9、MOVdirect,Rn

指令名称:

寄存器数据传送指令

指令代码:

88H~8FH

指令功能:

寄存器内容送内部RAM低128单元或专用寄存器

操作内容:

direct←(Rn),n=0~7

字节数:

2

机器周期:

2

10、MOVdirect2,direct1

指令名称:

直接寻址数据传送指令

指令代码:

85H

指令功能:

内部RAM低123单元或专用寄存器之间的相互传送

操作内容:

direct2←(direct1)

字节数:

3

机器周期:

2

11、MOVdirect,@Ri

指令名称:

间接寻址数据传送指令

指令代码:

86H~87H

指令功能:

内部RAM低128单元内容送内部RAM低128单元或专用寄存器

操作内容:

direct←((Ri)),i=0,1

字节数:

2

机器周期:

2

12、MOVdirect,#data

指令名称:

立即数传送指令

指令代码:

75H

指令功能:

立即数送内部RAM低128单元或专用寄存器

操作内容:

direct←data

字节数:

3

机器周期:

2

13、MOV@Ri,A

指令名称:

累加器数据传送指令

指令代码:

F6H~F7H

指令功能:

累加器内容送内部RAM低128单元

操作内容:

(Ri)←(A),i=0,1

字节数:

1

机器周期:

1

14、MOV@Ri,direct

指令名称:

直接寻址数据传送指令

指令代码:

A6H~A7H

指令功能:

内部RAM低128单元或专用寄存器内容送内部RAM低128单元

操作内容:

(Ri)←(direct),i=0,1

字节数:

2

机器周期:

2

15、MOV@Ri,data

指令名称:

立即数传送指令

指令代码:

76H~77H

指令功能:

立即数送内部RAM低128单元

操作内容:

(Ri)←data,i=0,1

字节数:

2

机器周期:

1

16、MOVC,bit

指令名称:

位数据传送指令

指令代码:

A2H

指令功能:

内部RAM可寻址位或专用寄存器的位状态送累加位C

操作内容:

C←(bit)

字节数:

2

机器周期:

1

17、MOVbit,C

指令名称:

累加位数据传送指令

指令代码:

92H

指令功能:

累加器状态送内部RAM可寻址位或专用寄存器的指定位

操作内容:

bit←(C)

字节数:

2

机器周期:

2

18、MOVDPTR,#datal6

指令名称:

+六位数据传送指令

指令代码:

90H

指令功能:

十六位立即数送数据指针

操作内容:

DPH←datal5~8

DPL←data7~0

字节数:

3

机器周期:

2

19、MOVCA,@A+DPTR

指令名称:

程序存储器读指令

指令代码:

93H

指令功能:

读程序存储器单元内容送累加器

操作内容:

A←((A)+(DPTR))

字节数:

1

机器周期:

2

使用说明:

变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志。

20、MOVCA,@A+PC

指令名称:

程序存储器读指令

指令代码:

83H

指令功能:

读程序存储器单元内容送累加器

操作内容:

A←((A)+(PC))

字节数:

1

机器周期:

2

使用说明:

同MOVCA,@A+DPTR指令(序号70)

21、MOVX

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

当前位置:首页 > 高中教育 > 其它课程

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

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