指令集: 助记符 字节数 周期数 功能说明 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程序存储器空间 内的任何位置。
C51汇编指令集
最新推荐文章于 2025-01-10 09:54:28 发布