指令格式(助记符) | 指令功能说明 | 字节 | 周期 |
MOV A,direct | (direct)→(A) 直接单元地址中的数据→累加器A | 1 | 1 |
MOV A,#data | #data→(A) 8位立即数→累加器A | 2 | 1 |
MOV A,Rn | (Rn )→(A) Rn寄存器中的数据→累加器A | 1 | 1 |
MOV A,@Ri | ((Ri))→(A) Ri中的数据指向的地址单元中的数据 →累加器A | 1 | 1 |
MOV Rn,direct | (direct)→(Rn) 直接寻址单元中的数据 —> 寄存器Rn | 2 | 2 |
MOV Rn,#data | #data→(Rn) 8位立即数 —> 寄存器Rn | 2 | 1 |
MOV Rn,A | (A)→(Rn) 累加器A中的数据 —> 寄存器Rn | 1 | 1 |
MOV direct,direct | (direct)→(direct) 直接地址单元中的数据→直接地址单元direct | 3 | 2 |
MOV direct,#data | #data→(direct) 立即数→直接地址单元direct | 3 | 2 |
MOV direct,A | (A)→(direct) 累加器A中的数据→直接地址单元direct | 2 | 2 |
MOV direct,Rn | (Rn)→(direct) 寄存器Rn中的数据→直接地址单元direct | 2 | 2 |
MOV direct,@Ri | ((Ri))→(direct) 寄存器Ri中的数据指定的地址单元中数据→直接地址单元direct | 2 | 2 |
MOV @Ri,direct | (direct)→((Ri)) 直接地址单元中的数据→以Ri中的内容为地址的RAM单元 | 2 | 2 |
MOV @Ri,#data | #data→((Ri)) 立即数→以Ri中的内容为地址的RAM单元 | 2 | 1 |
MOV @Ri,A | (A)→((Ri)) 累加器A中的数据→以Ri中的内容为地址的RAM单元 | 1 | 1 |
MOVC A,@A+DPTR | ((A))+(DPTR)→(A) 表格地址单元中的数据→累加器A | 3 | 2 |
MOVC A,@A+PC | ((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的数据→累加器A | 1 | 2 |
MOVX @DPTR,A | (A)→((DPTR)) 累加器中的数据→数据指针指向片外RAM地址中 | 3 | 2 |
MOVX A, @DPTR | (A)→((DPTR)) 累加器中的数据 → 数据指针指向片外RAM地址中 | 3 | 2 |
MOVX A, @Ri | ((Ri))→(A) 寄存器Ri指向片外RAM地址中的数据→累加器A中 | 1 | 2 |
MOVX @Ri,A | (A)→((Ri)) 累加器中的数据→寄存器Ri指向片外RAM地址中 | 1 | 2 |
PUSH direct | (SP)+1→(SP),(direct)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中 | 2 | 2 |
PUSH A | 将累加器A中的数据→堆栈顶端 | 2 | 2 |
POP direct | (SP)→(direct)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作 | 2 | 2 |
POP A | 将堆栈顶端的数据→累加器A | 2 | 2 |
XCH A,Rn | (A)←→(Rn)累加器与工作寄存器Rn中的数据互换 | 1 | 1 |
XCH A,@Ri | (A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的数据互换 | 1 | 1 |
XCH A, direct | (A)←→(direct)累加器与直接地址单元中的内容互换 | 2 | 2 |
XCHD A,@Ri | (A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的数据低半字节互换 | 1 | 1 |
SWAP A | (A3-0)←→(A7-4)累加器中的内容高低半字节互换 | 1 | 1 |
MOV DPTR,#data16 | #dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL | 3 | 2 |
ADD A,#data | A)+#data→(A) 累加器A中的数据与立即数#data相加,结果存在A中 | 2 | 1 |
ADD A,direct | A)+(direct)→(A) 累加器A中的数据与直接地址单元中的数据相加,结果存在A中 | 2 | 1 |
指令格式(助记符) | 指令功能说明 | 字节 | 周期 |
ADD A,Rn | (A)+(Rn)→(A) 累加器A中的数据与工作寄存器Rn中的数据相加,结果存在A中 | 1 | 1 |
ADD A,@Ri | (A)+((Ri))→(A) 累加器A中的数据与工作寄存器Ri所指向地址单元中的数据相加,结果存在A中 | 1 | 1 |
ADDC A,direct | (A)+(direct)+(C)→(A) 累加器A中的数据与直接地址单元的数据连同进位位相加,结果存在A中 | 2 | 1 |
ADDC A,#data | (A)+#data +(C)→(A) 累加器A中的数据与立即数连同进位位相加,结果存在A中 | 2 | 1 |
ADDC A,Rn | A)+Rn+(C)→(A) 累加器A中的数据与工作寄存器Rn中的数据、连同进位位相加,结果存在A中 | 1 | 1 |
ADDC A,@Ri | (A)+((Ri))+(C)→(A) 累加器A中的数据与工作寄存器Ri指向地址单元中的数据、连同进位位相加,结果存在A中 | 1 | 1 |
SUBB A,direct | (A)-(direct)-(C)→(A) 累加器A中的数据与直接地址单元中的数据、连同借位位相减,结果存在A中 | 2 | 1 |
SUBB A,#data | (A)-(Rn)-(C)→(A) 累加器A中的数据与工作寄存器中的数据、连同借位位相减,结果存在A中 | 2 | 1 |
SUBB A,Rn | (A)-(Rn)-(C)→(A) 累加器A中的数据与工作寄存器中的数据、连同借位位相减,结果存在A中 | 1 | 1 |
SUBB A,@Ri | (A)-((Ri))-(C)→(A) 累加器A中的数据与工作寄存器Ri指向的地址单元中的数据、连同借位位相减,结果存在A中 | 1 | 1 |
MUL AB | (A)×(B)→(A)和(B) 累加器A中的数据乘以寄存器B中的数据,结果高字节存入寄存器B,底字节存入累加器A | 1 | 4 |
DIV AB | (A)÷(B)→(A)和(B) 累加器A中的数据除以寄存器B中的数据,结果的商存入累加器A,余数存入寄存器B中 | 1 | 4 |
INC A | +1¡ú(A) 累加器A中的数据加1,结果存在A中 | 1 | 1 |
INC direct | (direct)+1→(direct) 直接地址单元中的数据加1,结果送回原地址单元中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作 | 2 | 1 |
INC @Ri | ((Ri))+1→((Ri)) 寄存器的数据指向的地址单元中的数据加1,结果送回原地址单元中 | 1 | 1 |
NC Rn | Rn)+1→(Rn)寄存器Rn的数据加1,结果送回原地址单元 | 1 | 1 |
INC DPTR | (DPTR)+1→(DPTR)数据指针的数据加1,结果送回数据指针中 | 1 | 2 |
DEC A | (A)-1→(A)累加器A中的数据减1,结果送回累加器A | 1 | 1 |
DEC direct | (direct)-1→(direct)直接地址单元中的数据减1,结果送回直接地址单元中 | 2 | 1 |
DEC @Ri | ((Ri))-1→((Ri))寄存器Ri指向的地址单元中的数据减1,结果送回原地址单元中 | 1 | 1 |
DEC Rn | (Rn)-1→(Rn)寄存器Rn中的数据减1,结果送回寄存器Rn中 | 1 | 1 |
DA A | 累加器A中的数据做BCD调整 | 1 | 1 |
RL A | 累加器A中的数据左移一位,bit7¡úbit0 | 1 | 1 |
RR A | 累加器A中的数据右移一位,bit7¡úbit7 | 1 | 1 |
RLC A | 累加器A中的数据连同进位标志位CY左移一位,bit7¡úCY,CY¡úbit0 | 1 | 1 |
RRC A | 累加器A中的数据连同进位CY位CY右移一位,bi0¡úCY,CY¡úbit7 | 1 | 1 |
SWAP A | 累加器中的数据高低半字节互换 | 1 | 1 |
CPL A | 累加器中的数据按位取反,即0¡ú1,1¡ú0 | 1 | 1 |
CLR A | 0¡ú(A),累加器中的数据清0H | 1 | 1 |
ANL A,direct | 累加器A中的数据和直接地址单元中的数据执行与操作。结果存在寄存器A中 | 2 | 1 |
ANL direct,#data | 直接地址单元中的数据和立即数执行与操作。结果存在直接地址单元中 | 3 | 2 |
指令格式(助记符) | 指令功能说明 | 字节 | 周期 |
NL A,#data | 累加器A的数据和立即数执行与操作。结果存在累加器A中 | 2 | 1 |
NL A,Rn | 累加器A的数据和寄存器Rn中的数据执行与操作。结果存在累加器A中 | 1 | 1 |
ANL direct,A | 直接地址单元中的数据和累加器A的数据执行与操作。结果存在直接地址单元中 | 2 | 1 |
ANL A,@Ri | 累加器A的数据和工作寄存器Ri指向的地址单元中的数据执行与操作。结果存在累加器A中 | 1 | 1 |
ORL A,direct | 累加器A中的数据和直接地址单元中的数据执行逻辑或操作。结果存在寄存器A中 | 2 | 1 |
ORL direct,#data | 累加器A中的数据和直接地址单元中的数据执行逻辑或操作。结果存在寄存器A中 | 3 | 2 |
ORL A,#data | 累加器A的数据和立即数执行逻辑或操作。结果存在累加器 | 2 | 1 |
ORL A,Rn | 累加器A的数据和寄存器Rn中的数据执行逻辑或操作。结果存在累加器A中 | 1 | 1 |
ORL direct,A | 直接地址单元中的数据和累加器A的数据执行逻辑或操作。结果存在直接地址单元中 | 2 | 1 |
ORL A,@Ri | 累加器A的数据和工作寄存器Ri指向的地址单元中的数据执行逻辑或操作。结果存在累加器A中 | 1 | 1 |
XRL A,direct | 累加器A中的数据和直接地址单元中的数据执行逻辑异或操作。结果存在寄存器A中 | 2 | 1 |
XRL direct,#data | 直接地址单元中的数据和立即数执行逻辑异或操作。结果存在直接地址单元中 | 3 | 2 |
XRL A,#data | 累加器A的数据和立即数执行逻辑异或操作。结果存在累加器A中 | 2 | 1 |
XRL A,Rn | 累加器A的数据和寄存器Rn中的数据执行逻辑异或操作。结果存在累加器A中 | 1 | 1 |
XRL data,A | 直接地址单元中的数据和累加器A的数据执行逻辑异或操作。结果存在直接地址单元中 | 2 | 1 |
XRL A,@Ri | 累加器A的数据和工作寄存器Ri指向的地址单元中的数据执行逻辑异或操作。结果存在累加器A中 | 1 | 1 |
CLR C | 清除进位标志CY为0 | 1 | 1 |
CLR bit | 清除bit为0 | 2 | 1 |
SETB C | 设定进位标志CY为1 | 1 | 1 |
SETB bit | 设定bit为1 | 2 | 1 |
CPL C | 将进位标志CY反相 | 1 | 1 |
CPL bit | 将bit反相 | 2 | 1 |
ANL C,bit | 将进位标志CY AND bit值¡ú进位标志位CY | 2 | 2 |
ANL C,/bit | 将进位标志CY AND bit反相值¡ú进位标志位CY | 2 | 2 |
ANL A,#data | 将累加器A的各位与立即数的相对位置做AND¡úA累加器 | 2 | 2 |
ORL C,bit | 将进位标志CY OR bit值¡ú进位标志位CY | 2 | 2 |
ORL C,/bit | 将进位标志CY OR bit反相值¡ú进位标志位CY | 2 | 2 |
ORL A,#data | 将累加器A的各位与立即数的相对位置做OR¡úA累加器 | 2 | 2 |
MOV C,bit | 将bit值¡ú进位标志位CY | 2 | 1 |
MOV bit,C | 将进位标志位CY¡úbit值 | 2 | 2 |
JC rel | 当进位标志位CY=1就跳至rel,否则执行下一条指令 | 2 | 2 |
JNC rel | 当进位标志位CY=0就跳至rel,否则执行下一条指令 | 2 | 2 |
JB bit rel | 当进bit=1就跳至rel,否则执行下一条指令 | 3 | 3 |
JNB bit rel | 当进bit=0就跳至rel,否则执行下一条指令 | 3 | 3 |
JBC bit rel | 当进bit=1跳至rel,并且清除此bit为0,否则执行下一条指令 | 3 | 3 |
ACALL addr11 | 2K范围内子程序调用 | 2 | 2 |
LCALL addr16 | 64K范围内子程序调用 | 3 | 3 |
RET | 子程序返回 | 1 | 2 |
RET1 | 中断服务程序结束返回 | 1 | 2 |
指令格式(助记符) | 指令功能说明 | 字节 | 周期 |
AJMP addr11 | 2K范围内无条件跳转 | 2 | 2 |
LJMP addr16 | 64K范围内无条件跳转 | 2 | 2 |
SJMP rel | 在此指令的前128或后128范围内无条件跳转 | 2 | 2 |
JMP @A+DPTR | 跳至@A+DPTR所指定的地址 | 1 | 2 |
JZ rel | 如A的内容为0,则短跳转,负责执行下一条指令 | 2 | 2 |
JNZ rel | 如A的内容不为0,则短跳转,负责执行下一条指令 | 2 | 2 |
CJNE A,direct,rel | 如A的内容与直接地址内的数据不同,则短跳转 | 3 | 2 |
CJNE A,#data,rel | 如A的内容与立即数不同,则短跳转 | 3 | 2 |
CJNE Rn,#data,rel | 如Rn寄存器中的数据与立即数不同,则短跳转 | 3 | 2 |
CJNE @Ri,#data,rel | 如间接地址的数据与立即数不同,则短跳转 | 3 | 2 |
DJNZ Rn,rel | Rn寄存器中的数据减1,若不为0,则短跳转,否则执行下条指令 | 2 | 2 |
DJNZ direct,rel | 直接地址中的数据减1,若不为0,则短跳转,负责执行下条指令 | 3 | 2 |
NOP | CPU仅仅作取指令,不动作 | 1 | 1 |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |