C51汇编指令集

来源:互联网 发布:达观数据 陈运文履历 编辑:程序博客网 时间:2024/05/17 01:34
 
指令集:助记符  字节数 周期数功能说明   1:算术操作类指令: ADD A,Rn  1 1 寄存器加到累加器 ADD A,direct  2 2 直接寻址字节加到累加器 ADD A,@Ri  1 2 间址RAM加到累加器 ADD A,#data  2 2 立即数加到累加器 ADDC A,Rn  1 1 寄存器加到累加器(带进位) ADDC A,direct  2 2 直接寻址字节加到累加器(带进位) ADDC A,@Ri  1 2 间址RAM加到累加器(带进位) ADDC A,#data  2 2 立即数加到累加器(带进位) SUBB A,Rn  1 1 累加器减去寄存器(带借位) SUBB A,direct  2 2 累加器减去间接寻址RAM(带借位) SUBB A,@Ri  1 2 累加器减去间址RAM(带借位) SUBB A,#data  2 2 累加器减去立即数(带借位) INC A  1 1 累加器加1 INC Rn  1 1 寄存器加1 INC direct  2 2 直接寻址字节加1 INC @Ri  1 2 间址RAM加1 DEC A  1 1 累加器减1 DEC Rn  1 1 寄存器减1 DEC direct  2 2 直接寻址字节减1 DEC @Ri  1 2 间址RAM减1 INC DPTR  1 1 数据地址加1 MUL AB  1 4 累加器和寄存器B加乘 DIV AB  1 8 累加器除以寄存器B DA A  1 1 累加器十进制调整 2:逻辑操作类指令:ANL A,Rn  1 1 寄存器“与”到累加器  ANL A,direct  2 2 直接寻址字节“ 与”到累加器 ANL A,@Ri  1 2 间址RAM“与”到累加器  ANL A,#data  2 2 立即数“与”到累加器  ANL direct,A  2 2 累加器“与”到直接寻址字节   ANL direct,#data  3 3 立即数“与”到直接寻址字节  ORL A,Rn  1 1 寄存器“或”到累加器  ORL A,direct  2 2 直接寻址字节“  ORL A,@Ri  1 2 间址RAM“或”到累加器   ORL A,#data  2 2 立即数“或”到累加器   ORL direct,A  2 2 累加器“或”到直接寻址字节   ORL direct,#data  3 3 立即数“或”到直接寻址字节   XRL A,Rn  1 1 寄存器“异或”到累加器  XRL A,direct  2 2 直接寻址数“异或”到累加器  XRL A,@Ri  1 2 间址RAM“异或”到累加器  XRL A,#data  2 2 立即数“异或”到累加器  XRL direct,A  2 2 累加器“异或”到直接寻址字节  XRL direct,#data  3 3 立即数“到直接寻址字节  CLR A  1 1 累加器清零 CPL A  1 1 累加器求反 RL A  1 1 循环循环左移 RLC A  1 1 经过进位位的累加器循环左移 RR A  1 1 累加器循环右移 RRC A  1 1 经过进位位的累加器循环右移 SWAP A  1 1 累加器内高低半字节交换 3:数据传输类指令: MOV A,Rn  1 1 寄存器传送到累加器A MOV A,direct  2 2 直接寻址字节传送到累加器 MOV A,@Ri  1 2 间址RAM传送到累加器 MOV A,#data  2 2 立即数传送到累加器 MOV Rn,A  1 1 累加器传送到寄存器 MOV Rn,direct  2 2 直接寻址字节传送到寄存器 MOV Rn,#data  2 2 立即数传送到寄存器 MOV direct,A  2 2 累加器传送到直接寻址字节 MOV direct,Rn  2 2 寄存器传送到直接寻址字节 MOV direct,direct  3 3 直接寻址字节传送到直接寻址字节 MOV direct,@Ri  2 2 间址RAM传送到直接寻址字节 MOV direct,#data  3 3 立即数传送到直接寻址字节 MOV @Ri,A  1 2 累加器传送到间址RAM MOV @Ri,direct  2 2 直接寻址数传送到间址RAM MOV @Ri,#data  2 2 立即数传送到间址RAM MOV DPTR,#data16  3 3 16位常数装入数据指针 MOVC A,@A+DPTR  1 3 相对于DPTR的代码字节传送到累加器 MOVC A,@A+PC  1 3 相对于PC的代码字节传送到累加器 MOVX A,@Ri  1 3 外部RAM(8位地址)数传送到A MOVX @Ri,A  1 3 累加器传到外部RAM(8位地址) MOVX A,@DPTR  1 3 外部RAM(16位地址)传送到A MOVX @DPTR,A  1 3 累加器传到外部RAM(16位地址) PUSH direct  2 2 直接寻址字节压入栈顶 POP direct  2 2 栈顶数据弹出到直接寻址字节 XCH A,Rn  1 1 寄存器和累加器交换 XCH A,direct  2 2 直接寻址字节与累加器交换 XCH A,@Ri  1 2 间址RAM与累加器交换 XCHD A,@Ri  1 2 间址RAM和累加器交换低半字节 4:位操作类指令 CLR C  1 1 清进位位 CLR bit  2 2 清直接寻址位 SETB C  1 1 进位位置1 SETB bit  2 2 直接寻址位置位 CPL C  1 1 进位位取反 CPL bit  2 2 直接寻址位取反 ANL C,bit  2 2 直接寻址位“与”到进位位  ANL C,/bit  2 2 直接寻址位的反码“与”到进位位   ORL C,bit  2 2 直接寻址位“或”到进位位   ORL C,/bit  2 2 直接寻址位的反码“或”到进位位   MOV C,bit  2 2 直接寻址位传送到进位位 MOV bit,C  2 2 进位位传送到直接寻址位 JC rel  2 2/3 若进位位为1则跳转 JNC rel  2 2/3 若进位位为零则跳转 JB bit,rel  3 3/4 若直接寻址位为1则跳转 JNB bit,rel  3 3/4 若直接寻址位为零则跳转 JBC bit,rel  3 3/4 若直接寻址位为1则跳转,并清除该位 5:控制转移类指令: ACALL addr11  2 3 绝对调用子程序 LCALL addr16  3 4 长调用子程序 RET  1 5 从子程序返回 RETI  1 5 从中断返回 AJMP addr11  2 3 绝对转移 LJMP addr16  3 4 长转移 SJMP rel  2 3 短转移(相对偏移) JMP @A+DPTR  1 3 相对DPTR的间接转移 JZ rel  2 2/3 累加器为0则转移 JNZ rel  2 2/3 累加器为非0则转移 CJNE A,direct,rel  3 3/4 比较直接寻址字节与A,不相等则转移 CJNE A,#data,rel  3 3/4 比较立即数与A,不相等则转移 CJNE Rn,#data,rel  3 3/4 比较立即数与寄存器,不相等则转移 CJNE @Ri,#data,rel  3 4/5 比较立即数与间接寻址RAM,不相等则转移 DJNZ Rn,rel  2 2/3 寄存器减1,不为零则转移 DJNZ direct,rel  3 3/4 直接寻址字节减1,不为零则转移 NOP  1 1 空操作 注释:Rn –  当前选择的寄存器区的寄存器 R0-R7。  @Ri –  通过寄存器 R0-R1 间接寻址的数据 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程序存储器空间内的任何位置。
原创粉丝点击