51单片机指令集.txt我这辈子只有两件事不会:这也不会,那也不会。
人家有的是背景,而我有的是背影。
肉的理想,白菜的命。
肉的理想,白菜的命。
白马啊你死去哪了!是不是你把王子弄丢了不敢来见我了。
MCS-51单片机的指令集1、数据传送类指令助记符功能说明字节数振荡周期MOV A,Rn 寄存器内容送入累加器 1 12MOV A,direct 直接地址单元中的数据送入累加器 2 12MOV A,@Ri 间接RAM中的数据送入累加器 1 12MOV A,#data8 8位立即数送入累加器 2 12MOV Rn,A 累加器内容送入寄存器 1 12MOV Rn,direct 直接地址单元中的数据送入寄存器 2 24MOV Rn,#data8 8位立即数送入寄存器 2 12MOV direct,A 累加器内容送入直接地址单元 2 12MOV direct,Rn 寄存器内容送入直接地址单元 2 24MOV direct,direct 直接地址单元中的数据送入直接地址单元 3 24 MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24 MOV direct,#data8 8位立即数送入直接地址单元 3 24MOV @Ri,A 累加器内容送入间接RAM单元 1 12MOV @Ri,direct 直接地址单元中的数据送入间接RAM单元 2 24 MOV @Ri,#data8 8位立即数送入间接RAM单元 2 12MOV DPTR,#data16 16位立即数地址送入地址寄存器 3 24 MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 1 24 MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器 1 24 MOV A,@Ri 外部RAM(8位地址)送入累加器 1 24MOV A,@DPTR 外部RAM(16位地址)送入累加器 1 24MOV @Ri,A 累加器送入外部RAM(8位地址) 1 24MOV @DPTR,A 累加器送入外部RAM(16位地址) 1 24PUSH direct 直接地址单元中的数据压入堆栈 2 24POP DIRECT 堆栈中的数据弹出到直接地址单元 2 24XCH A,Rn 寄存器与累加器交换 1 12XCH A,direct 直接地址单元与累加器交换 2 12XCH A,@Ri 间接RAM与累加器交换 1 12XCHD A,@Ri 间接RAM与累加器进行低半字节交换 1 122、算术操作类指令助记符功能说明字节数振荡周期ADD A,Rn 寄存器内容加到累加器 1 12ADD A,direct 直接地址单元加到累加器 2 12ADD A,@Ri 间接RAM内容加到累加器 1 12ADD A,#data8 8位立即数加到累加器 2 12ADDC A,Rn 寄存器内容带进位加到累加器 1 12ADDC A,dirct 直接地址单元带进位加到累加器 2 12 ADDC A,@Ri 间接RAM内容带进位加到累加器 1 12 ADDC A,#data8 8位立即数带进位加到累加器 2 12SUBB A,Rn 累加器带借位减寄存器内容 1 12SUBB A,dirct 累加器带借位减直接地址单元 2 12SUBB A,@Ri 累加器带借位减间接RAM内容 1 12SUBB A,#data8 累加器带借位减8位立即数 2 12 INC A 累加器加1 1 12INC Rn 寄存器加1 1 12INC direct 直接地址单元内容加1 2 12INC @Ri 间接RAM内容加1 1 12INC DPTR DPTR加1 1 24DEC A 累加器减1 1 12DEC Rn 寄存器减1 1 12DEC direct 直接地址单元内容减1 2 12DEC @Ri 间接RAM内容减1 1 12MUL AB A乘以B 1 48DIV AB A除以B 1 48DA A 累加器进行十进制转换 1 123、逻辑操作类指令助记符功能说明字节数振荡周期ANL A,Rn 累加器与寄存器相“与” 1 12ANL A,direct 累加器与直接地址单元相“与” 2 12ANL A,@Ri 累加器与间接RAM内容相“与” 1 12ANL A,#data8 累加器与8位立即数相“与” 2 12ANL direct,A 直接地址单元与累加器相“与” 2 12ANL direct,#data8 直接地址单元与8位立即数相“与” 3 24 ORL A,Rn 累加器与寄存器相“或” 1 12ORL A,direct 累加器与直接地址单元相“或” 2 12ORL A,@Ri 累加器与间接RAM内容相“或” 1 12ORL A,#data8 累加器与8位立即数相“或” 2 12ORL direct,A 直接地址单元与累加器相“或” 2 12ORL direct,#data8 直接地址单元与8位立即数相“或” 3 24 XRL A,Rn 累加器与寄存器相“异或” 1 12XRL A,direct 累加器与直接地址单元相“异或” 2 12XRL A,@Ri 累加器与间接RAM内容相“异或” 1 12XRL A,#data8 累加器与8位立即数相“异或” 2 12XRL direct,A 直接地址单元与累加器相“异或” 2 12XRL direct,#data8 直接地址单元与8位立即数相“异或” 3 24 CLR A 累加器清0 1 12CPL A 累加器求反 1 12RL A 累加器循环左移 1 12RLC A 累加器带进位循环左移 1 12RR A 累加器循环右移 1 12RRC A 累加器带进位循环右移 1 12SWAP A 累加器半字节交换 1 124、控制转移类指令助记符功能说明字节数振荡周期ACALL addr11 绝对短调用子程序 2 24LACLL addr16 长调用子程序 3 24RET 子程序返回 1 24RETI 中断返回 1 24AJMP addr11 绝对短转移 2 24LJMP addr16 长转移 3 24SJMP rel 相对转移 2 24JMP @A+DPTR 相对于DPTR的间接转移 1 24JZ rel 累加器为零转移 2 24JNZ rel 累加器非零转移 2 24CJNE A,direct,rel 累加器与直接地址单元比较,不等则转移 324CJNE A,#data8,rel 累加器与8位立即数比较,不等则转移 3 24 CJNE Rn,#data8,rel 寄存器与8位立即数比较,不等则转移 3 24 (相等则执行本指令的下一条)CJNE @Ri,#data8,rel 间接RAM单元,不等则转移 3 24 (但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的。
如果前面的数(A中的)大,则CY=0,否则CY=1)DJNZ Rn,rel 寄存器减1,非零转移 3 24DJNZ direct,rel 直接地址单元减1,非零转移 3 24NOP 空操作 1 12控制转移指令共有17条,可分为“无条件转移指令”“有条件转移指令”“子程序调用指令”及“返回指令”。
5、布尔变量操作类指令助记符功能说明字节数振荡周期CLR C 清进位位 1 12CLR bit 清直接地址位 2 12SETB C 置进位位 1 12SETB bit 置直接地址位 2 12CPL C 进位位求反 1 12CPL bit 直接地址位求反 2 12ANL C,bit 进位位和直接地址位相“与” 2 24 ANL C,/bit 进位位和直接地址位的反码相“与” 2 24 ORL C,bit 进位位和直接地址位相“或” 2 24 ORL C,/bit 进位位和直接地址位的反码相“或” 2 24 MOV C,bit 直接地址位送入进位位 2 12 MOV bit,C 进位位送入直接地址位 2 24JC rel 进位位为1则转移(CY=O不转移,=1转移) 2 24 JNC rel 进位位为0则转移(和上面相反) 2 24JB bit,rel 直接地址位为1则转移 3 24 JNB bit,rel 直接地址位为0则转移 3 24 JBC bit,rel 直接地址位为1则转移,该位清零 3 24伪指令助记符功能说明字节数振荡周期ORG 设置程序起始地址END 标志源代码结束EQU 定义常数SET 定义整型数DATA 给字节类型符号定值BYTE 给字节类型符号定值WROD 给字类型符号定值BIT 给位地址取名ALTNAME 用自定义名取代保留字DB 给一块连续的存储区装载字节型数据DW 给一块连续的存储区装载字型数据DS 预留一个连续的存储区或装入指定字节。
INCLUDE 将一个源文件插入程序中 ITITLE 列表文件中加入标题行NOLIST 汇编时不产生列表文件NOCODE 条件汇编时,条件为假的不产生清单寄存器:符号地址功能介绍B F0H B寄存器ACC E0H 累加器PSW D0H 程序状态字IP B8H 中断优先级控制寄存器P3 B0H P3口锁存器IE A8H 中断允许控制寄存器P2 A0H P2口锁存器SBUF 99H 串行口锁存器SCON 98H 串行口控制寄存器P1 90H P1口锁存器TH1 8DH 定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位)TMOD 89A 定时器/计数器方式控制寄存器TCON 88H 定时器/计数器控制寄存器DPH 83H 数据地址指针(高8位)DPL 82H 数据地址指针(低8位)SP 81H 堆栈指针P0 80H P0口锁存器PCON 87H 电源控制寄存器。