51单片机指令集

51单片机指令集.txt我这辈子只有两件事不会:这也不会,那也不会。人家有的是背景,而我有的是背影。 肉的理想,白菜的命。肉的理想,白菜的命。白马啊 你死去哪了!是不是你把王子弄丢了不敢来见我了。 MCS-51单片机的指令集

1、数据传送类指令 助记符 MOV A,Rn

功能说明 寄存器内容送入累加器

字节数 1

振荡周期 12 2 12 MOV A,direct 直接地址单元中的数据送入累加器 MOV A,@Ri MOV A,#data8 MOV Rn,A

MOV Rn,direct MOV Rn,#data8 MOV direct,A

MOV direct,Rn

MOV direct,direct MOV direct,@Ri MOV direct,#data8 MOV @Ri,A MOV @Ri,direct MOV @Ri,#data8 MOV DPTR,#data16 MOV A,@A+DPTR MOV A,@A+PC MOV A,@Ri MOV A,@DPTR MOV @Ri,A

MOV @DPTR,A PUSH direct POP DIRECT XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri

2、算术操作类指令 助记符 ADD A,Rn

ADD A,direct ADD A,@Ri ADD A,#data8 ADDC A,Rn

间接RAM中的数据送入累加器 1 12

8位立即数送入累加器 2 12 累加器内容送入寄存器

1 12 直接地址单元中的数据送入寄存器 2

24 8位立即数送入寄存器 2

12 累加器内容送入直接地址单元

2

12

寄存器内容送入直接地址单元 2 24

直接地址单元中的数据送入直接地址单元 3

间接RAM中的数据送入直接地址单元

2 8位立即数送入直接地址单元 3 24 累加器内容送入间接RAM单元

1

12 直接地址单元中的数据送入间接RAM单元 2 8位立即数送入间接RAM单元 2

12

16位立即数地址送入地址寄存器 3 以DPTR为基地址变址寻址单元中的数据送入累加器 1 以PC为基地址变址寻址单元中的数据送入累加器 1 外部RAM(8位地址)送入累加器 1 24 外部RAM(16位地址)送入累加器 1 24 累加器送入外部RAM(8位地址)

1 24 累加器送入外部RAM(16位地址) 1 24 直接地址单元中的数据压入堆栈 2 堆栈中的数据弹出到直接地址单元 2

24

寄存器与累加器交换 1 12 直接地址单元与累加器交换

2

12 间接RAM与累加器交换 1

12 间接RAM与累加器进行低半字节交换

1

功能说明 字节数 振荡周期 寄存器内容加到累加器

1 12 直接地址单元加到累加器

2

12

间接RAM内容加到累加器 1 12

8位立即数加到累加器 2 12 寄存器内容带进位加到累加器

1 12

24

24 24 24 24 24

24

12

ADDC ADDC ADDC SUBB SUBB SUBB A,dirct A,@Ri A,#data8 A,Rn A,dirct A,@Ri 直接地址单元带进位加到累加器 间接RAM内容带进位加到累加器 8位立即数带进位加到累加器 累加器带借位减寄存器内容 累加器带借位减直接地址单元 累加器带借位减间接RAM内容 2 1 2 1 2 1 12

12 12 12 12 12 SUBB

A,#data8

累加器带借位减8位立即数

INC A

累加器加1

1 12 INC Rn 寄存器加1

1 12 INC direct 直接地址单元内容加1 2 INC @Ri 间接RAM内容加1 1 12 INC DPTR

DPTR加1

1

DEC A 累加器减1

1 12 DEC Rn

寄存器减1

1 12 DEC direct 直接地址单元内容减1 2 DEC @Ri 间接RAM内容减1 1

12

MUL AB A乘以B 1 48 DIV AB A除以B 1 48 DA A

累加器进行十进制转换

1

3、逻辑操作类指令 助记符 功能说明 字节数 ANL A,Rn 累加器与寄存器相“与” 1

ANL A,direct 累加器与直接地址单元相“与”

ANL A,@Ri

累加器与间接RAM内容相“与”

ANL A,#data8 累加器与8位立即数相“与” 2 ANL direct,A 直接地址单元与累加器相“与” ANL direct,#data8 直接地址单元与8位立即数相“与” ORL A,Rn 累加器与寄存器相“或” 1 ORL A,direct 累加器与直接地址单元相“或” ORL A,@Ri 累加器与间接RAM内容相“或” ORL A,#data8

累加器与8位立即数相“或”

2

ORL direct,A 直接地址单元与累加器相“或” ORL direct,#data8 直接地址单元与8位立即数相“或” XRL A,Rn

累加器与寄存器相“异或”

1 XRL A,direct 累加器与直接地址单元相“异或”

XRL A,@Ri 累加器与间接RAM内容相“异或” XRL A,#data8 累加器与8位立即数相“异或” XRL direct,A

直接地址单元与累加器相“异或”

XRL direct,#data8 直接地址单元与8位立即数相“异或”CLR A 累加器清0 1 12 CPL A 累加器求反 1 12

2

12 24

12 12

振荡周期 12 2 12 1

12

12 2 12 3 12 2 12 1 12 12 2 12 3 12 2 12 1 12 2 12 2

12 3

12

24

24

24 RL A RLC A RR A RRC A SWAP

A

累加器循环左移

1 1

1 1 1

12 12 12 12 12

累加器带进位循环左移

累加器循环右移 累加器带进位循环右移 累加器半字节交换

4、控制转移类指令 助记符 ACALL LACLL RET RETI AJMP LJMP

功能说明

1

字节数 1 2 2

2 3

振荡周期

24 24

addr11 addr16

绝对短调用子程序 长调用子程序

子程序返回 中断返回

24 24 2 3

24 24

24

addr11 addr16 绝对短转移 长转移

SJMP rel

JMP @A+DPTR JZ rel 相对转移

相对于DPTR的间接转移 累加器为零转移 24

1 24

JNZ rel 累加器非零转移 2 24 CJNE A,direct,rel 累加器与直接地址单元比较,不等则转移 24 CJNE A,#data8,rel 累加器与8位立即数比较,不等则转移 CJNE Rn,#data8,rel 寄存器与8位立即数比较,不等则转移 (相等则执行本指令的下一条)

CJNE

@Ri,#data8,rel

间接RAM单元,不等则转移

3 3

3

24 24

3 24

(但有时还想得知两数比较之后哪个大,哪个小, 本条指令也具有这样的功能,如果两数不相等, 则CPU还会反映出哪个数大,哪个数小, 这是用CY(进位位)来实现的。

如果前面的数(A中的)大,则CY=0,否则CY=1)

寄存器减1,非零转移

3

3

24

24

DJNZ DJNZ NOP

Rn,rel

direct,rel 直接地址单元减1,非零转移 空操作 1 12

控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指

令” 及 “返回指令”。

5、布尔变量操作类指令 助记符 功能说明

字节数 振荡周期

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4