天天看点

MCS-51单片机指令系统总结(自学笔记)

MCS-51单片机指令系统共111条指令,按功能分为五类:

(1)数据传送类 28

(2)算术操作类 24

(3)逻辑运算类 25

(4)控制转移类 17

(5)位操作类 17

(1)数据传送类 28

MOV A,Rn ;寄存器传送到累加器

MOV A,direct ;直接地址传送到累加器

MOV A,@Ri ;累加器传送到外部RAM(8 地址)

MOV A,#data ;立即数传送到累加器

MOV Rn,A ;累加器传送到寄存器

MOV Rn,direct ;直接地址传送到寄存器

MOV Rn,#data ;累加器传送到直接地址

MOV direct,Rn ;寄存器传送到直接地址

MOV direct,direct ;直接地址传送到直接地址

MOV direct,A ;累加器传送到直接地址

MOV direct,@Ri ;间接RAM 传送到直接地址

MOV direct,#data ;立即数传送到直接地址

MOV @Ri,A ;直接地址传送到直接地址

MOV @Ri,direct ;直接地址传送到间接RAM

MOV @Ri,#data ;立即数传送到间接RAM

MOV DPTR,#data16 ;16 位常数加载到数据指针

MOVC A,@A+DPTR ;代码字节传送到累加器

MOVC A,@A+PC ;代码字节传送到累加器

MOVX A,@Ri ;外部RAM(8 地址)传送到累加器

MOVX A,@DPTR ;外部RAM(16 地址)传送到累加器

MOVX @Ri,A ;累加器传送到外部RAM(8 地址)

MOVX @DPTR,A ;累加器传送到外部RAM(16 地址)

PUSH direct ;直接地址压入堆栈

POP direct ;直接地址弹出堆栈

XCH A,Rn ;寄存器和累加器交换

XCH A, direct ;直接地址和累加器交换

XCH A, @Ri ;间接RAM 和累加器交换

XCHD A, @Ri ;间接RAM 和累加器交换低4 位字节

(2)算术操作类 24

INC A ;累加器加1

INC Rn ;寄存器加1

INC direct ;直接地址加1

INC @Ri ;间接RAM 加1

INC DPTR ;数据指针加1

DEC A ;累加器减1

DEC Rn ;寄存器减1

DEC direct ;直接地址减1

DEC @Ri ;间接RAM 减1

MUL AB ;累加器和B 寄存器相乘结果放在B(H),A(D)

DIV AB ;累加器除以B 寄存器,商->A,余数->B

DA A ;累加器十进制调整

ADD A,Rn ;寄存器与累加器求和

ADD A,direct ;直接地址与累加器求和

ADD A,@Ri ;间接RAM 与累加器求和

ADD A,#data ;立即数与累加器求和

ADDC A,Rn ;寄存器与累加器求和(带进位)

ADDC A,direct ;直接地址与累加器求和(带进位)

ADDC A,@Ri ;间接RAM 与累加器求和(带进位)

ADDC A,#data ;立即数与累加器求和(带进位)

SUBB A,Rn ;累加器减去寄存器(带借位)

SUBB A,direct ;累加器减去直接地址(带借位)

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

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

(3)逻辑运算类 25

ANL A,Rn ;寄存器“与”到累加器

ANL A,direct ;直接地址“与”到累加器

ANL A,@Ri ;间接RAM“与”到累加器

ANL A,#data ;立即数“与”到累加器

ANL direct,A ;累加器“与”到直接地址

ANL direct, #data ;立即数“与”到直接地址

ORL A,Rn ;寄存器“或”到累加器

ORL A,direct ;直接地址“或”到累加器

ORL A,@Ri ;间接RAM“或”到累加器

ORL A,#data ;立即数“或”到累加器

ORL direct,A ;累加器“或”到直接地址

ORL direct, #data ;立即数“或”到直接地址

XRL A,Rn ;寄存器“异或”到累加器

XRL A,direct ;直接地址“异或”到累加器

XRL A,@Ri ;间接RAM“异或”到累加器

XRL A,#data ;立即数“异或”到累加器

XRL direct,A ;累加器“异或”到直接地址

XRL direct, #data ;立即数“异或”到直接地址

CLR A ;累加器清零

CPL A ;累加器求反

RL A ;累加器循环左移

RLC A ;带进位累加器循环左移

RR A ;累加器循环右移

RRC A ;带进位累加器循环右移

SWAP A ;累加器高、低4 位交换

(4)控制转移类 17

JMP @A+DPTR ;相对DPTR 的无条件间接转移

JZ rel ;累加器为0 则转移

JNZ rel ;累加器为1 则转移

CJNE A,direct,rel ;比较直接地址和累加器,不相等转移

CJNE A,#data,rel ;比较立即数和累加器,不相等转移

CJNE Rn,#data,rel ;比较寄存器和立即数,不相等转移

CJNE @Ri,#data,rel ;比较立即数和间接RAM,不相等转移

DJNZ Rn,rel ;寄存器减1,不为0 则转移

DJNZ direct,rel ;直接地址减1,不为0 则转移

NOP ;空操作,用于短暂延时

ACALL add11 ;绝对调用子程序

LCALL add16 ;长调用子程序

RET ;从子程序返回

RETI ;从中断服务子程序返回

AJMP add11 ;无条件绝对转移

LJMP add16 ;无条件长转移

SJMP rel ;无条件相对转移

(5)位操作类 17

CLR ;清进位位

CLR bit ;清直接寻址位

SETB C ;置位进位位

SETB bit ;置位直接寻址位

CPL C ;取反进位位

CPL bit ;取反直接寻址位

ANL C,bit ;直接寻址位“与”到进位位

ANL C,/bit ;直接寻址位的反码“与”到进位位

ORL C,bit ;直接寻址位“或”到进位位

ORL C,/bit ;直接寻址位的反码“或”到进位位

MOV C,bit ;直接寻址位传送到进位位

MOV bit, C ;进位位位传送到直接寻址

JC rel ;如果进位位为1 则转移

JNC rel ;如果进位位为0 则转移

JB bit,rel ;如果直接寻址位为1 则转移

JNB bit,rel ;如果直接寻址位为0 则转移

JBC bit,rel ;直接寻址位为1 则转移并清除该位

继续阅读