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