51单片机汇编指令详解.docx

上传人:b****7 文档编号:10417981 上传时间:2023-02-11 格式:DOCX 页数:38 大小:20.69KB
下载 相关 举报
51单片机汇编指令详解.docx_第1页
第1页 / 共38页
51单片机汇编指令详解.docx_第2页
第2页 / 共38页
51单片机汇编指令详解.docx_第3页
第3页 / 共38页
51单片机汇编指令详解.docx_第4页
第4页 / 共38页
51单片机汇编指令详解.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

51单片机汇编指令详解.docx

《51单片机汇编指令详解.docx》由会员分享,可在线阅读,更多相关《51单片机汇编指令详解.docx(38页珍藏版)》请在冰豆网上搜索。

51单片机汇编指令详解.docx

51单片机汇编指令详解

  

1、XCHA,Rn

指令名称:

寄存器寻址字节交换指令

指令代码:

C8H~CFH

指令功能:

寄存器寻址字节

操作内容:

(A)交换(Rn);n=0~7

字节数:

1

机器周期:

1

2、XCHA,direct

指令名称:

直接寻址字节交换指令

指令代码:

C5H

指令功能:

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

操作内容:

(A)交换(direct)

字节数:

2

机器周期:

1

3、XCHA,@Ri

指令名称:

间接寻址字节交换指令

指令代码:

C6H~C7H

指令功能:

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

操作内容:

(A)交换((Ri));i=0,1

字节数:

1

机器周期:

1

4、XCHDA,@Ri

指令名称:

半字节交换指令

指令代码:

D6H~D7H

指令功能:

累加器内容低4位与内部RAM低128单元低4位交换

操作内容:

(A)3~0交换((Ri))3~0;i=0,1

字节数:

1

机器周期:

1

5、XRLA,Rn

指令名称;逻辑异或操作指令

指令代码:

68H~6FH

指令功能:

累加器内容与寄存器内容进行逻辑异或操作

操作内容:

A<-(A)异或(Rn);n=0~7

字节数:

1

机器周期:

1

6、XRLA,direct

指令名称:

逻辑异或操作指令

指令代码:

65H

指令功能:

累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作

操作内容:

A<-(A)异或(direct)

字节数:

2

机器周期:

1

7、XRLA,@Ri

指令名称:

逻辑异或指令

指令代码:

66H~67H

指令功能:

累加器与内部RAM低128单元内容进行逻辑异或操作

操作内容:

A<-(A)异或((Ri));i=0,1

字节数:

1

机器周期:

1

8、XRLA,#data

指令名称:

逻辑异或指令

指令代码:

64H

指令功能:

累加器内容与立即数进行逻辑异或操作

操作内容:

A1?

/FONT>(A)异或data

字节数:

2

机器周期:

1

9、XRLdirect,A

指令名称:

逻辑异或操作指令

指令代码:

62H

指令功能:

累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作

操作内容:

direct一(direct)异或(A)

字节数:

2

机器周期:

1

10、XRLdirect,#data

指令名称:

逻辑异或操作指令

指令代码:

63H

指令功能:

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

操作内容:

direct<-(direct)异或data

字节数:

3

机器周期:

2

以R开头的指令有6条,分别为:

RET

RETI

RLA

RLCA

RRA

RRCA

 

1、RET

指令名称:

子程序返回指令

指令代码:

22H

指令功能:

子程序返回

操作内容:

PC15~8<-((SP))

SP<-(SP)-1

PC7~0<-((SP))

SP<-(SP)-1

字节数:

1

机器周期:

2

2、RETI

指令名称:

中断返回指令

指令代码:

32H

指令功能:

中断服务程序返回

操作内容’:

PC15?

/FONT>8<-((SP))

SP<-(SP)-l

PC7~0<-((SP))

SP<-(SP)-1

字节数:

1

机器周期:

2

3、RLA

指令名称:

循环左移指令

指令代码:

23H

指令功能:

累加器内容循环左移一位

操作内容:

An+1<-(An);n=0~6

A0<-(A7)

字节数:

1

机器周期:

1

4、RLCA

指令名称:

带进位循环左移指令

指令代码:

33H

指令功能:

累加器内容连同进位标志位循环左移一位

操作内容:

An-1<-(An);n=0~6

A0<-(C)

C<-(A7)

字节数:

1

机器周期:

1

5、RRA

指令名称:

循环右移指令

指令代码:

03H

指令功能:

累加器内容循环右移一位

操作内容:

An<-(An+1);n=0~6

A7<-(A0)

字节数:

1

机器周期:

1

6、RRCA

指令名称:

带进位循环右移指令

指令代码:

13H

指令功能:

累加器内容连同进位标志位循环右移一位

操作内容:

An<-(An+1);n=0~6

A7<-(C)

C<-(A0)

字节数:

1

机器周期:

1

 

1、SETBc

指令名称:

进位标志置位指令

指令代码:

D.H

指令功能:

进位标志位置位

操作内容:

C<-1

字节数:

1

机器周期:

1

2、SETBbit

指令名称:

直接寻址位置位指令

指令代码:

D2H

指令功能:

内部RAM可寻址位或专用寄存器指定位置位

操作内容:

bit<-1

字节数:

2

机器周期:

1

3、SJMPrel

指令名称:

短转移指令

指令代码:

80H

指令功能:

按指令提供的偏移量计算转移的目的地址,实现程序的无条件相对转移;

操作内容:

PC<-(PC)+2

PC<-(PC)+rel

字节数:

2

机器周期:

2

使用说明:

偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC一126)一(PC+129)。

其中PC值为本指令的地址。

4、SUBBA,Rn

指令名称:

寄存器寻址带进位减法指令

指令代码:

98H~9FH

指令功能:

累加器内容减寄存器内容和进位标志位内容

操作内容:

A<-(A)-(Rn)-(C);n=0~7

字节数:

1

机器周期:

1

影响标志位:

当够减时,进位标志位复位;不够减时,进位标志置位。

当位3发生借位时,AC置位;否则AC复位。

当位6及位7不同时发生借位时,OV置位;否则OV复位。

5、SUBBA,direct

指令名称:

直接寻址带进位减法指令

指令代码:

95H

指令功能:

累加器内容减内部RAM低128单元或专用寄存器和进位标志位内容

操作内容:

A<-(A)-(diret)-(C)

字节数:

2

机器周期:

1

影响标志位:

同SUBBA,Rn指令(序号97)

6、SUBBA,@Ri

指令名称:

间接寻址带进位减法指令

指令代码:

96H~97H

指令功能:

累加器内容减内部RAM低128单元内容及进位标志位内容

操作内容:

A<-(A)-((Ri))-(C);i=0,1

字节数:

1

机器周期:

1

影响标志位:

同SUBBA,Rn指令(序号97)

7、SUBBA,#data

指令名称:

立即数带进位减法指令

指令代码:

94H

指令功能:

累加器内容减立即数及进位标志内容

操作内容:

A<-(A)-data-(C)

字节数:

2

机器周期:

1

影响标志位:

同SUBBA,Rn指令(序号97)

8、SWAPA

指令名称:

累加器高低半字节交换指令

指令代码:

C4H

指令功能:

累加器内容的高4位与低4位交换

操作内容:

(A)7?

/FONT>4交换(A)3?

/FONT>0

字节数:

1

机器周期:

1

1、NOP

指令名称:

空操作指令

指令代码;00H

指令功能:

不执行任何操作,常用于产生一个机器周期的时间延迟。

操作内容:

PC<-(PC)+l

字节数:

1

机器周期:

1

 

1、ORLA,Rn

指令名称:

逻辑或操作指令

指令代码:

48H~4FH

指令功能:

累加器内容与寄存器内容进行逻辑或操作

操作内容:

A1<-(A)|(Rn),n=0~7

字节数:

1

机器周期:

1

2、ORLA,direct

指令名称:

逻辑或操作指令

指令代码:

45H

操作内容:

A<-(A)|(direct)

字节数:

2

机器周期:

1

3、ORLA,@Ri

指令名称:

逻辑或操作指令

指令代码:

46H~47H

指令功能:

累加器内容与内部RAM低128单元内容进行逻辑或操作

操作内容:

A<-(A)|((Ri));i=0,1

字节数:

1

机器周期:

1

4、ORLA,#data

指令名称:

逻辑或操作指令

指令代码:

44H

指令功能:

累加器内容与立即数进行逻辑或操作

操作内容:

A<-(A)|data

字节数:

2

机器周期:

1

5、ORLdirect,A

指令名称:

逻辑或操作指令

指令代码:

42H

指令功能:

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

操作内容:

direct<-(direct)|(A)

字节数:

2

机器周期:

1

6、ORLdirect,#data

指令名称:

逻辑或操作指令

指令代码:

43H

指令功能:

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

操作内容:

direct<-(direct)|data

字节数:

3

机器周期:

2

7、ORLC,bit

指令名称:

位逻辑或操作指令

指令代码:

72H

指令功能:

累加位C状态与内部RAM可寻址位或专用寄存器指定位进行逻辑或操作

操作内容:

C<-(C)|(bit)

字节数:

2

机器周期:

2

8、ORLC,/bit

指令名称:

位反逻辑或操作指令

指令代码:

A0H

指令功能:

累加位C状态与内部RAM可寻址位或专用寄存器指定位的反进行逻辑或操作

操作内容:

C<-(C)|(bit非)

字节数:

2

机器周期:

2

使用说明:

指定位的状态取反后进行逻辑或操作,但并不改变指定位的原来状态。

 

1、POPdirect

指令名称:

出栈指令

指令代码:

D0H

指令功能:

堆栈栈顶单元的内容送内部RAM低128单元或专用寄存器

操作内容:

direct<-(SP)

SP<-(SP)-1

字节数:

2

机器周期:

2

2、PUSHdirect

指令名称:

进栈指令

指令代码:

C0

指令功能:

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

操作内容:

SP<-(SP)+1

(SP)<-(direct)

字节数:

2

机器周期:

2

    

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、MOVXA,@Ri

指令名称:

寄存器间接寻址外部RAM读指令

指令代码:

E2H~E3H

指令功能:

读外部RAM低256单元数据送累加器

字节数:

1

机器周期:

2

22、MOVXA,@DPTR

指令名称:

数据指针间接寻址外部RAM读指令

指令代码:

E0H

指令功能:

读外部RAM单元数据送累加器

操作内容:

A1<-((DPTR))

字节数:

1

机器周期:

2

23、MOVX@Ri,A

指令名称:

寄存器间接寻址外部RAM写指令

指令代码:

F2H~F3H

指令功能:

把累加器内容写入外部RAM低256单元

操作内容:

(Ri)<-(A),i=1,0

字节数:

1

机器周期:

2

24、MOVX@DPTR,A

指令名称:

数据指针间接寻址外部RAM写指令

指令代码:

F0H

指令功能:

把累加器内容写入外部RAM单元

操作内容:

(DPTR)<-(A)

字节数:

1

机器周期:

2

25、MULAB

指令名称:

乘法指令

指令代码:

A4H

指令功能:

实现8位无符号数乘法运算。

两个乘数分别放在累加器A和寄存器B中。

乘积

为16位,低8位在B中,高8位在A中。

操作内容:

AB<-(A)×(B)

字节数:

1

机器周期:

4

影响标志位:

进位标志复位。

若乘积大于255,则OV标志置位;否则复位。

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

JBbit,rel

JBCbit,rel

JCrel

JMP@A+DPTR

JNBbit,rel

JNCrel

JNZrelJZrel

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

 

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

 

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

 

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

指令功能:

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

当前位置:首页 > 解决方案 > 解决方案

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

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