传统 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 |