1、单片机指令功能一览表 指令 机器码 功能说明 数据传送类指令 MOV A,Rn E8~EF 寄存器送累加器 MOV A,dir E5 dir 直接字节送累加器 MOV A,@Ri ER~E7 间接RAM送累加器 MOV A,#data 74 data 立即数送累加器 MOV Rn,A F8~FF 累加器送寄存器 MOV Rn,dir A8~AF dir 直接字节送寄存器 MOV Rn,#data 78~7F data 立即数送寄存器 MOV dir,A F5 dir
2、 累加器送直接字节 MOV dir,Rn 88~8F dir 寄存器送直接字节 MOV dir1,dir2 85 dir2 dir1 直接字节送直接字节 MOV dir,@Ri 86~87 dir 间接RAM送直接字节 MOV dir,#data 75 dir data 立即数送直接字节 MOV @Ri,A F6~F7 累加器送间接RAM MOV @Ri,#dir A6~A7 直接字节送间接RAM MOV @Ri,#data 76~77 data 立即数送间接RAM MOV DPTR,#d
3、ata16 90 data15~8 data7~0 16位立即数送数据指针 MOVC A,@A+DPTR 93 以DPTR为变址寻址的程序存储器读操作 MOVC A,@A+PC 83 以PC为变址寻址的程序存储器读操作 MOVX A,@Ri E2~E3 外部RAM(8位地址)读操作 MOVX A,@DPTR E0 外部RAM(16位地址)读操作 MOVX @Ri,A F2~F3 外部RAM(8位地址)写操作 MOVX @DPTR,A F0 外部RAM(16位地址)写操作 PUSH dir C0 dir 直
4、接字节进栈,SP加1 POP dir D0 dir 直接字节退栈,SP减1 XCH A,Rn C8~CF 交换累加器和寄存器 XCH A,dir C5 dir 交换累加器和直接字节 XCH A,@Ri C6~C7 交换累加器和间接RAM XCH A,@Ri D6~D7 交换累加器和间接RAM的低位 算术运算指令 ADD A,Rn 28~2F 寄存器加到累加器 ADD A,dircet 25 dircet 直接字节加到A ADD A,@Ri
5、 26~27 间接RAM加到A ADD A,#data 24data 立即数加到A ADD A,Rn 38~3F 寄存器和进位位加到A ADD A,dircet 35dircet 直接字节和进位位加到A ADD A,@Ri 36~37 间接字节和进位位加到A ADD A,data 34 data 立即数和进位位加到A ADD A,Rn
6、 98~9F A减去寄存器和进位位 ADD A,dircet 95 dircet A减去直接字节和进位位 ADD A,@Ri 36~37 间接RAM和进位位加到A ADD A,data 34 data 立即数和进位位加到A SUBB A,Rn 98~9F A减去寄存器和进位位 SUBB A,dircet 95 dircet A减去直接字节和进位
7、位 SUBB A,@Ri 96~97 A减去间接RAM和进位位 SUBB A,#data 94 data A减去立即数和进位位 INC A 04 A加1 INC Rn 08~0F 寄存器加1 INC dircet 05 dircet 直接字节加1 INC @Ri 06~07 间接RAM加1 DEC A
8、 14 A减1 DEC Rn 18~1F 寄存器减1 DEC dircet 15 dircet 直接字节减1 DEC @Ri 16~17 间接RAM减1 INC DPTR A3 数据指针加1 MUL AB A4 A乘以B DIV AB , 84 A除以B DA A
9、 D4 A的十进制加法调整 逻辑操作 ANL A,Rn 58~5F 寄存器“与”到A ANL A,dircet 55 dircet 直接字节“与”到A ANL A,@Ri 56~57 间接RAm“与”到A ANL A,#data 54 data 立即数“与”到A ANL dircet A 52 dircet A“与”到直接字节 ANL
10、 dircet,#data , 53 dircet data 立即数“与”到直接字节 ORL A,Rn 48~4F 寄存器“或”到A ORL A,dircet , 45 dircet 直接字节“或”到A ORL A,@Ri 46~47 间接RAM“或”到A ORL A,#data 44 data 立即数“或”到A ORL dircet,A 42 dircet
11、 A“或”到直接字节 ORL dircet,#data , 43 dircet data 立即数“或”到直接字节 XRL A,Rn 68~6F 寄存器“异或”到A XRL A,dircet 65 dircet 直接字节“异或”到A XRL A,@Ri 66~67 间接RAM“异或”到A XRL A,#data 64 data 立即数“异或”到A XRL dirc
12、et A 62 dircet A“异或”到直接字节 XRL dircet,#data , 63 dircet data 立即数“异或”到直接 字节 CLR A E4 清零 CPL A F4 A取反 RL A 23 A左环移 RLC A 33 A通过进位左环移 RR A 03 A右环移 RRC A 13 A通过进位右环移 SWAP A
13、C4 A半字节交换 控制程序转移 ACALL addr 11 addr(a10~a8)10001 addr(a7~a0) 绝对子程序调用 LCALL addr 16 12 addr(15~8) addr(7~0) 长子程序调用 RET 22 子程序调用返回 RETI addr 11 32 中断调用返回 AJMP addr 11 addr(a10~a8)00001 addr(a7~a0)
14、 绝对转移 LJMP addr 16 02 addr(15~8) addr(7~0) 长转移 SJMP rel 80 rel 短转移,相对转移 JMP @A+DPTR, 73 相对于DPTR间接转移 JZ rel 60 rel A为零转移 JNZ rel 70 rel A为零转移 CJNE A,dircet,rel B5 d
15、ircet rel 直接字节与A比较,不等则转移 CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移 CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移 CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移 DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移 DJNZ dirce
16、t,rel B5 dircet rel 直接字节减1,不为零则转移 NOP 00 空操作 布尔变量操作 CLR C C3 清零进位 CLR bit C2 清零直接位 SETB C D3 置位进位 SETB bit D2 置位直接位 CPL C B3
17、 进位取反 CPL bit B2 直接位取反 ANL C,bit 82 dit 直接数“与”到进位 ANL C,/bit B0 直接位的反“与”到进位 ORL C,bit 72 bit 直接位“或”到进位 ORL C,/bit A0 bit 直接位的反“或”到进位 MOV C,bit
18、 A2 bit 直接位送进位 MOV bit,C 92 bit 进位送直接位 JC rel 40 rel 进位位为1转移 JNC rel 50 rel 进位位为0转移 JB bit,rel 20 bit rel 直接位为1相对转移 JNB bit,rel 30 bit rel 直接位为0相对转移 JBC bit,rel 10 bit rel 直接位为1相对转移,然 dir-直接地址 data-立即数 rel-偏移量






