MCS-51系列单片机指令详解

 

本手册适用于C8051Fxxxx

(按类型列表)

目录

指令按类型分类

算术操作类指令

一、 加法指令

1、不带进位Cy加法指令

ADD ARn(寄存器加到累加器)

ADD Adirect(直接寻址字节加到累加器)

ADD A,@Ri(间址RAM 加到累加器)

ADD A#data(立即数加到累加器)

2、带进位Cy加法指令

ADDC ARn(寄存器加到累加器(带进位))

ADDC Adirect(直接寻址字节加到累加器(带进位))

ADDC A,@Ri(间址RAM 加到累加器(带进位))

ADDC A#data(立即数加到累加器(带进位))

3、加1指令(又称增量指令)

INC A(累加器加1

INC Rn(寄存器加1

INC direct(直接寻址字节加1指令)

INC Ri(间接寻址RAM字节加1指令)

INC DPTR16位数据指针加1指令)

二、 减法指令

1、带进位Cy减法指令

SUBB ARn(累加器减去寄存器(带借位))

SUBB Adirect(累加器减去间接寻址RAM(带借位))

SUBB A,@Ri(累加器减去间址RAM(带借位))

SUBB A#data(累加器减去立即数(带借位))

2、减1指令

DEC A(累加器减1指令)

DEC Rn(寄存器减1指令)

DEC direct(直接寻址字节减1指令)

DEC Ri(间接寻址RAM字节减1指令)

三、乘/除法指令

MUL AB(累加器和寄存器B乘法指令)

DIV AB(累加器除以寄存器B除法指令)

四、十进制调整指令

DA A(累加器十进制调整指令)

逻辑操作类指令

一、逻辑与运算指令

ANL ARn(寄存器逻辑与到累加器指令)

ANL Adirect(直接寻址逻辑与到累加器指令)

ANL A,@Ri(间接寻址RAM逻辑与到累加器指令)

ANL A#data(立即数逻辑与到累加器指令)

ANL directA(累加器逻辑与到直接寻址指令)

ANL direct #data(立即数逻辑与到直接寻址指令)

二、逻辑或运算指令

ORL ARn(寄存器逻辑或累加器操作指令)

ORL Adirect(直接寻址逻辑或到累加器操作指令)

ORL A,@Ri(间接寻址RAM逻辑或到累加器操作指令)

ORL A#data(立即数逻辑逻辑或到累加器操作指令)

ORL directA(累加器逻辑或到直接寻址字节操作指令)

ORL direct#data(立即数逻辑或到直接寻址字节操作指令)

三、逻辑异或运算指令

XRL ARn(寄存器逻辑异或到累加器操作指令)

XRL Adirect(直接寻址逻辑异或到累加器操作指令)

XRL A,@Ri(间接寻址RAM逻辑异或到累加器指令)

XRL A#data(立即数逻辑异或到累加器指令)

XRL directA(累加器逻辑异或直接寻址字节操作指令)

XRL direct#data(立即数逻辑异或到直接寻址字节操作指令)

四、累加器清零取反指令

CLR A(累加器清0指令)

CPL A(累加器取反指令)

五、移位指令

RL A(循环左移指令)

RLC A(带进位循环左移指令)

RR A(循环右移指令)

RRC A(带进位循环右移指令)

SWAP A(累加器高低半字节交换指令)

数据传输类指令

一、内部数据传送指令

1、立即寻址传送指令

MOV A#data(立即数据传送到累加器A指令)

MOV Rn#data(立即数据传送到寄存器指令)

MOV direct#data(立即数传送到直接寻址字节指令)

MOV Ri#data(立即数传送到间接寻址RAM指令)

2、直接寻址传送指令

MOV Adirect(直接寻址数据传送到累加器A指令)

MOV directA(累加器数据传送到直接寻址字节指令)

MOV Rndirect(直接寻址数据传送到寄存器指令)

MOV Ridirect(直接寻址数据传送到间接寻址RAM指令)

MOV direct1direct2(直接寻址数据传送指令)

3、寄存器寻址传送指令

MOV ARn(寄存器数据传送到累加器A指令)

MOV Rn,  A(累加器数据传送到寄存器指令)

MOV directRn(寄存器数据传送到直接寻址字节指令)

4、寄存器间址传送指令

MOV A,@Ri(间接寻址RAM数据传送到累加器A指令)

MOV RiA(累加器数据传送到间接寻址RAM指令)

MOV direct, @Ri(间接寻址RAM数据传送到直接寻址字节指令)

二、外部数据传送指令

116位数据指针传送指令

MOV DPTR#datal616位数据指针传送指令)

2、外部ROM字节传送指令

MOVC A,@A+DPTR(程序存储器读指令)

MOVC A,@A+PC(程序存储器读指令)

3、外部RAM字节传送指令

MOVX A,@Ri(寄存器间接寻址外部RAM读指令)

MOVX RiA(寄存器间接寻址外部RAM写指令)

MOVX A,@DPTR(数据指针间接寻址外部RAM读指令)

MOVX DPTRA(数据指针间接寻址外部RAM写指令)

4、堆栈操作指令

PUSH direct(进栈指令)

POP direct(出栈指令)

5、数据交换指令

XCH ARn(寄存器寻址字节交换指令)

XCH Adirect(直接寻址字节交换指令)

XCH A,@Ri(间接寻址字节交换指令)

XCHD A,@Ri(半字节交换指令)

位操作类指令

一、位的传送指令

MOV Cbit(位数据传送指令)

MOV bitC(累加位数据传送指令)

二、位置位和位清零指令

CLR C(进位标志清0指令)

CLR bit(直接寻址位清0指令)

SETB C(进位标志置位指令)

SETB bit(直接寻址位置位指令)

三、位逻辑运算指令

CPL C(进位标志取反指令)

CPL bit(直接寻址位取反指令)

ANL Cbit(位逻辑与指令)

ANL C,/bit(位取反逻辑与指令)

ORL Cbit(位逻辑或操作指令)

ORL C,/bit(位反逻辑或操作指令)

四、位的控制转移指令

1Cy为条件转移指令

JC rel(累加位条件转移指令)

JNC rel(累加位条件转移指令)

2、位地址内容条件转移指令

JB bit,rel(位条件转移指令)

JNB bitrel(位条件转移指令)

JBC bitrel(位条件转移清0指令)

控制转移类指令

一、无条件转移指令

LJMP addrl6(长转移指令)


AJMP addr11(绝对转移指令)

SJMP rel(短转移指令)

JMP A+DPTR(无条件间接转移指令)

二、条件转移指令

1、累加器A判零指令

JZ rel(判0转移指令 =0

JNZ rel(判0转移指令 ≠0

2、比较条件转移指令

CJNE A#datarel(数值比较转移指令)

CJNE Adircetrel(数值比较转移指令)

CJNE Rn#datarel(数值比较转移指令)

CJNE Ri#datarel(数值比较转移指令)

3、减1条件转移指令

DJNZ Rnrel(寄存器减1条件转移指令)

DJNZ directrel(直接寻址单元减1条件转移指令)

三、子程序调用和反回指令

1、短调用指令

ACALL addr11(绝对调用指令)

2、长调用指令

LCALL addr16(长调用指令)

3、反回指令

RET(子程序返回指令)

RETI(中断返回指令)

4、空操作指令

NOP(空操作指令)

 

伪指令

ORG伪指令(起始汇编)

END伪指令(结束汇编)

EQU伪指令(赋值)

DATA伪指令(数据地址赋值)

DB伪指令(定义字节)

DW伪指令(定义字)

DS伪指令(定义存储空间)

BIT伪指令(位地址赋值)

逻辑运算

NOT  ——非运算

AND  ——与运算

OR   ——或运算

XOR  ——异或运算

 

 

附件C8051F020

1PSW寄存器位详解

2特殊功能寄存器存储器映象

3特殊功能寄存器

 

 

寄存器、操作数和寻址方式说明:

Rn ——  工作寄存器,可以是R0-R7中的一个。


@Ri —— 表示寄存器间接寻址,Ri只能是R0R1,在Ri中存放的是RAM地址数据。

rel —— 相对于下一条指令第一个字节的8 位有符号(2 的补码)偏移量。SJMP 和所有条件转移指令使用。

direct —— 8 位内部数据存储器地址。可以是直接访问数据RAM 地址(0x00-0x7F)或一个SFR 地址(0x80-0xFF)。

#data —— 8 位立即数

#data16 —— 16 位立即数

bit —— 数据RAM SFR 中的直接寻址位

addr11 ——  ACALL AJMP 使用的11 位目的地址。目的地址必须与下一条指令第一个字节处于同一个2K 字节的程序存储器页。

addr16 ——  LCALL LJMP 使用的16 位目的地址。目的地址可以是64K 程序存储器空间内的任何位置。

@DPTR —— 表示以DPTR为数据指针的间接寻址,用于对外部64KRAM/ROM寻址。

$ —— 当前指令的地址。

有一个未使用的操作码(0xA5),它执行与NOP 指令相同的功能。

你可能感兴趣的:(电子技术)