传统 51 与STC-Y5内核 51 单片机对比&汇编指令
算术类指令 24
| 汇编助记符 | 功能说明 | 字节数 | 传统8051单片机所需时钟 | STC 8051单片机所需时钟 |
|---|
| ADD A,Rn | 寄存器内容加到累加器 | 1 | 12 | 1 |
| ADD A,direct | 直接地址中的数加载到累加器 | 2 | 12 | 2 |
| ADD A,@Ri | 间接 RAM 中的数据加到累加器 | 1 | 12 | 2 |
| ADD A,#data | 立即数加到累加器 | 2 | 12 | 2 |
| ADDC A,Rn | 寄存器带进位加到累加器 | 1 | 12 | 1 |
| ADDC A,direct | 直接地址单元中的数据带进位加到累加器 | 2 | 12 | 2 |
| ADDC A,@Ri | 间接 RAM 中的数据加到累加器 | 1 | 12 | 2 |
| ADDC A,#data | 立即数带进位加到累加器 | 2 | 12 | 2 |
| SUBB A,Rn | 累加器带借位减寄存器内容 | 1 | 12 | 1 |
| SUBB A,dircet | 累加器带借位减直接地址单元内容 | 2 | 12 | 2 |
| SUBB A,@Ri | 累加器带借位减间接 RAM 中的内容 | 1 | 12 | 2 |
| SUBB A,#data | 累加器带借位减立即数 | 2 | 12 | 2 |
| INC A | 累加器加1 | 1 | 12 | 1 |
| INC Rn | 寄存器加1 | 1 | 12 | 2 |
| INC direct | 直接地址单元加1 | 2 | 12 | 3 |
| INC @Ri | 间接 RAM 单元加1 | 1 | 12 | 3 |
| DEC A | 累加器减1 | 1 | 12 | 1 |
| DEC Rn | 寄存器减1 | 1 | 12 | 2 |
| DEC direct | 直接地址单元减1 | 2 | 12 | 3 |
| DEC @Ri | 间接 RAM 单元减1 | 1 | 12 | 3 |
| INC DPTR | 地址寄存器 DPTR 加1 | 1 | 24 | 1 |
| MUL AB | A乘以B | 1 | 48 | 2 |
| DIV AB | A除以B | 1 | 48 | 6 |
| DA A | 累加器十进制调整 | 1 | 12 | 3 |
逻辑类指令 25
| 汇编助记符 | 功能说明 | 字节数 | 传统8051单片机所需时钟 | STC 8051单片机所需时钟 |
|---|
| ANL A,Rn | 累加器与寄存器相 与 | 1 | 12 | 1 |
| ANL A,dircet | 累加器与直接地址单元相 与 | 2 | 12 | 2 |
| ANL A,@Ri | 累加器与间接 RAM 单元相 与 | 1 | 12 | 2 |
| ANL A,#data | 累加器与立即数相 与 | 2 | 12 | 2 |
| ANL direct,A | 直接地址单元与累加器相 与 | 2 | 12 | 3 |
| ANL direct,#data | 直接地址单元与立即数相 与 | 3 | 24 | 3 |
| ORL A,Rn | 累加器与寄存器相 或 | 1 | 12 | 1 |
| ORL A,dircet | 累加器与直接地址单元相 或 | 2 | 12 | 2 |
| ORL A,@Ri | 累加器与间接 RAM 单元相 或 | 1 | 12 | 2 |
| ORL A,#data | 累加器与立即数相 或 | 2 | 12 | 2 |
| ORL direct,A | 直接地址单元与累加器相 或 | 2 | 12 | 3 |
| ORL direct,#data | 直接地址单元与立即数相 或 | 3 | 24 | 3 |
| XRL A,Rn | 累加器与寄存器相 异或 | 1 | 12 | 1 |
| XRL A,dircet | 累加器与直接地址单元相 异或 | 2 | 12 | 2 |
| XRL A,@Ri | 累加器与间接 RAM 单元相 异或 | 1 | 12 | 2 |
| XRL A,#data | 累加器与立即数相 异或 | 2 | 12 | 2 |
| XRL direct,A | 直接地址单元与累加器相 异或 | 2 | 12 | 3 |
| XRL direct,#data | 直接地址单元与立即数相 异或 | 3 | 24 | 3 |
| CLR A | 累加器清 0 | 1 | 12 | 1 |
| CPL A | 累加器取反 | 1 | 12 | 1 |
| RL A | 累加器循环左移 | 1 | 12 | 1 |
| RLC A | 累加器带进位位循环左移 | 1 | 12 | 1 |
| RR A | 累加器循环右移 | 1 | 12 | 1 |
| RRC A | 累加器带进位循环右移 | 1 | 12 | 1 |
| SWAP A | 累加器内高低半字节交换 | 1 | 12 | 1 |
数据传送类指令 32
| 汇编助记符 | 功能说明 | 字节数 | 传统8051单片机所需时钟 | STC 8051单片机所需时钟 |
|---|
| MOV A,Rn | 寄存器内容送入累加器 | 1 | 12 | 1 |
| MOV A,direct | 直接地址单元中的数据送入累加器 | 2 | 12 | 2 |
| MOV A,@Ri | 间接 RAM 中的数据送入到累加器 | 1 | 12 | 2 |
| MOV A,#data | 立即数送入到累加器 | 2 | 12 | 2 |
| MOV Rn,A | 累加器内容送入到寄存器 | 1 | 12 | 1 |
| MOV Rn,direct | 直接地址单元的数据送入寄存器 | 2 | 24 | 3 |
| MOV Rn,#data | 立即数送入寄存器 | 2 | 12 | 2 |
| MOV direct,A | 累加器内容送入到直接地址单元 | 2 | 12 | 2 |
| MOV direct,Rn | 寄存器内容送入到直接地址单元 | 2 | 24 | 2 |
| MOV direct,direct | 直接地址单元内的数据送入到另一个直接地址单元 | 3 | 24 | 3 |
| MOV direct,@Ri | 间接 RAM 中的数据送入到直接地址单元 | 2 | 24 | 3 |
| MOV direct,#data | 立即数送入到直接地址单元 | 3 | 24 | 3 |
| MOV @Ri,A | 累加器内容送入到间接 RAM 单元 | 1 | 12 | 2 |
| MOV @Ri,direct | 直接地址单元数据送入到间接 RAM 单元 | 2 | 24 | 3 |
| MOV @Ri,#data | 立即数送入到间接 RAM 单元 | 2 | 12 | 2 |
| MOV DPTR,#data16 | 16位立即数送入据指针 | 3 | 24 | 3 |
| MOVC A,@A+DPTR | 以DPTR为基地址变址寻址单元中的数据送入累加器 | 1 | 24 | 5 |
| MOVC A,@A+PC | 以PC为基地址 变址寻址 单元中的数据送入累加器 | 1 | 24 | 4 |
| MOVX A,@Ri | 将逻辑上在片外、物理上在片内的扩展RAM(8位地址)的内容送入累加器A中,读操作 | 1 | 24 | 3 |
| MOVX @Ri,A | 将累加器A的内容送入逻辑上在片外、物理上在片内的扩展RAM(8位地址)中,写操作 | 1 | 24 | 4 |
| MOVX A,@DPTR | 将逻辑上在片外、物理上在片内的扩展RAM(16位地址)的内容送入累加器A中,读操作 | 1 | 24 | 2 |
| MOVX @DPTR,A | 将累加器A的内容送入逻辑上在片外、物理上在片内的扩展RAM(16位地址)中,写操作 | 1 | 24 | 3 |
| MOVX A,@Ri | 将逻辑上在片外、物理上也在片外的扩展RAM(8位地址)的内容送入累加器A中,读操作 | 1 | 24 | N的取值见 5xN+2 下列说明 |
| MOVX @Ri,A | 将累加器A的内容送入逻辑上在片外、物理上也在片外的扩展RAM(8位地址)中,写操作 | 1 | 24 | N的取值见 5× N+3 下列说明 |
| MOVX A,@DPTR | 将逻辑上在片外、物理上也在片外的扩展RAM(16位地址)的内容送入累加器A中,读操作 | 1 | 24 | N的取值见 5× N+1 下列说明 |
| MOVX @DPTR,A | 将累加器A的内容送入逻辑上在片外、物理上也在片外的扩展RAM(16位地址)中,写操作 | 1 | 24 | N的取值见 5× N+2 下列说明 |
| PUSH direct | 直接地址单元中的数据压入堆栈 | 2 | 24 | 3 |
| POP direct | 栈底数据弹出送入接地址单元 | 2 | 24 | 2 |
| XCH A,Rn | 寄存器与累加器交换 | 1 | 12 | 2 |
| XCH A,direct | 直接地址单元与累加器交换 | 2 | 12 | 3 |
| XCH A,@Ri | 间接 RAM 与累加器交换 | 1 | 12 | 3 |
| XCHD A,@Ri | 间接RAM的低半字节与累加器交换 | 1 | 12 | 3 |
当EXRTS[1:0] = [0,0]时,表中N=1
当EXRTS[1:0] = [0,1]时,表中N=2
当EXRTS[1:0] = [1,0]时,表中N=4
当EXRTS[1:0] = [1,1]时,表中N=8
布尔变量操作指令 17
| 汇编助记符 | 功能说明 | 字节数 | 传统8051单片机所需时钟 | STC 8051单片机所需时钟 |
|---|
| CLR C | 清0进位位 | 1 | 12 | 1 |
| CLR bit | 清0直接地址位 | 2 | 12 | 3 |
| SETB C | 置1进位位 | 1 | 12 | 1 |
| SETB bit | 置1直接地址位 | 2 | 12 | 3 |
| CPL C | 进位位取反 | 1 | 12 | 1 |
| CPL bit | 直接地址位取反 | 2 | 12 | 3 |
| ANL C,bit | 进位位与直接地址位 相与 | 2 | 24 | 2 |
| ANL C,/bit | 进位位与直接地址位的反码 相与 | 2 | 24 | 2 |
| ORL C,bit | 进位位与直接地址位 相或 | 2 | 24 | 2 |
| ORL C,/bit | 进位位与直接地址位的反码 相或 | 2 | 24 | 2 |
| MOV C,bit | 直接地址位送入到进位位 | 2 | 12 | 2 |
| MOV bit,C | 进位位送入到直接地址位 | 2 | 24 | 3 |
| JC rel | 进位位为1则跳转(rel为跳转地址) | 2 | 24 | 3 |
| JNC rel | 进位位为0则调转(rel为跳转地址) | 2 | 24 | 3 |
| JB bit,rel | 直接地址位为1则调转(rel为跳转地址) | 3 | 24 | 5 |
| JNB bit,rel | 直接地址位为0则跳转(rel为跳转地址) | 3 | 24 | 5 |
| JBC bit,rel | 直接地址位为1则跳转,该位清0(rel为跳转地址) | 3 | 24 | 5 |
控制转移类指令 17
| 汇编助记符 | 功能说明 | 字节数 | 传统8051单片机所需时钟 | STC 8051单片机所需时钟 |
|---|
| ACALL addr11 | 绝对(短)调用子程序 | 2 | 24 | 4 |
| LCALL addr16 | 长调用子程序 | 2 | 24 | 4 |
| RET | 子程序返回 | 1 | 24 | 4 |
| RETI | 中断返回 | 1 | 24 | 4 |
| AJMP addr11 | 绝对(短)跳转 | 2 | 24 | 3 |
| LJMP addr16 | 长跳转 | 3 | 24 | 4 |
| SJMP rel | 相对跳转(rel为跳转地址) | 2 | 24 | 3 |
| JMP @A+DPTR | 相对于DPTR的间接跳转(rel为跳转地址) | 1 | 24 | 5 |
| JZ rel | 累加器为0跳转(rel为跳转地址) | 2 | 24 | 4 |
| JNZ rel | 累加器不为0跳转(rel为跳转地址) | 2 | 24 | 4 |
| CJNE A,dircet,rel | 累加器与直接地址单元比较,不相等跳转(rel为跳转地址) | 3 | 24 | 5 |
| CJNE A,#deta,rel | 累加器与立即数比较,不相等跳转(rel为跳转地址) | 3 | 24 | 5 |
| CJNE Rn,#data,rel | 寄存器与立即数比较,不相等跳转(rel为跳转地址) | 3 | 24 | 5 |
| CJNE @Ri,#data,rel | 间接 RAM 单元与立即数比较,不相等跳转(rel为跳转地址) | 3 | 24 | 5 |
| DJNZ Rn,rel | 寄存器减1,非0跳转(rel为跳转地址) | 2 | 24 | 4 |
| DJNZ direct,rel | 直接地址单元减1,非0跳转(rel为跳转地址) | 3 | 24 | 5 |
| NOP | 空操作 | 1 | 12 | 1 |
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!