MCS-51单片机指令周期详解表:快速掌握机器周期判断技巧

前菜:一些判断指令周期的小技巧:

  1. 基本原则

  2. 单字节指令(通常是简单的寄存器操作、立即数操作等):一般需要1个机器周期。
  3. 双字节指令(大多数直接操作、间接操作等):一般需要2个机器周期。
  4. 三字节指令(主要是带有地址的跳转指令):一般需要3个机器周期。
  5. 特定类型指令的规则

  6. 立即数操作:大多数立即数操作指令(如MOV A, #data)需要2个机器周期。
  7. 寄存器操作:寄存器直接操作(如ADD A, Rn)通常只需要1个机器周期。
  8. 直接地址操作:操作直接地址(如MOV direct, A)通常需要2个机器周期。
  9. 间接地址操作:使用间接地址寄存器的操作(如MOV A, @Ri)通常需要1个机器周期。
  10. 跳转指令:短跳转(如SJMP rel)一般需要2个机器周期,长跳转(如LJMP addr16)需要3个机器周期。
  11. 特例指令

  12. 乘法和除法指令:如MUL AB和DIV AB,通常需要4个机器周期。
  13. CALL和RET指令:如ACALL、LCALL、RET、RETI等通常需要2个机器周期。
  14. DJNZ指令:如DJNZ Rn, rel需要2个机器周期,DJNZ direct, rel需要3个机器周期。
  15. 指令类型与机器周期的关联

  16. 数据传输指令:如MOV指令,根据操作数类型,通常需要1到3个机器周期。
  17. 算术和逻辑指令:如ADD、SUBB、ANL、ORL等,大多数操作寄存器的指令需要1个机器周期,而涉及直接地址或立即数的需要2到3个机器周期。

以下是MCS-51单片机(如8051)指令集的指令周期表,每个指令对应的机器周期注意,机器周期是根据单片机的时钟频率计算的。例如,指令周期为2个机器周期,即执行一条指令需要2个时钟周期。如果时钟频率为1 MHz,则每个时钟周期为1微秒。因此,两机器周期为2微秒。

指令 机器周期 指令 机器周期
ADD A, Rn 1 MOV A, @Ri 1
ADD A, direct 2 MOV A, direct 2
ADD A, @Ri 1 MOV A, #data 2
ADD A, #data 2 MOV Rn, A 1
ADDC A, Rn 1 MOV Rn, direct 2
ADDC A, direct 2 MOV Rn, #data 2
ADDC A, @Ri 1 MOV direct, A 2
ADDC A, #data 2 MOV direct, Rn 2
SUBB A, Rn 1 MOV direct, direct 3
SUBB A, direct 2 MOV direct, @Ri 2
SUBB A, @Ri 1 MOV direct, #data 3
SUBB A, #data 2 MOV @Ri, A 1
INC A 1 MOV @Ri, direct 2
INC Rn 1 MOV @Ri, #data 2
INC direct 2 MOV DPTR, #data16 3
INC @Ri 1 MOVC A, @A+DPTR 2
DEC A 1 MOVC A, @A+PC 2
DEC Rn 1 MOVX A, @DPTR 2
DEC direct 2 MOVX A, @Ri 2
DEC @Ri 1 MOVX @DPTR, A 2
MUL AB 4 MOVX @Ri, A 2
DIV AB 4 NOP 1
DA A 1 PUSH direct 2
CPL A 1 POP direct 2
CPL bit 2 XCH A, Rn 1
CLR A 1 XCH A, direct 2
CLR bit 2 XCH A, @Ri 1
SETB bit 2 XCHD A, @Ri 1
ANL A, Rn 1 DJNZ Rn, rel 2
ANL A, direct 2 DJNZ direct, rel 3
ANL A, @Ri 1 JNZ rel 2
ANL A, #data 2 JZ rel 2
ANL direct, A 2 JC rel 2
ANL direct, #data 3 JNC rel 2
ORL A, Rn 1 JB bit, rel 3
ORL A, direct 2 JNB bit, rel 3
ORL A, @Ri 1 JBC bit, rel 3
ORL A, #data 2 ACALL addr11 2
ORL direct, A 2 LCALL addr16 2
ORL direct, #data 3 RET 2
XRL A, Rn 1 RETI 2
XRL A, direct 2 AJMP addr11 2
XRL A, @Ri 1 LJMP addr16 2
XRL A, #data 2 SJMP rel 2
XRL direct, A 2 JMP @A+DPTR 2
XRL direct, #data 3 INC DPTR 2
CLR C 1 CLR bit 2
SETB C 1 SETB bit 2
CPL C 1 CPL bit 2
ANL C, bit 2 ORL C, bit 2
MOV C, bit 2 MOV bit, C 2

作者:深泓点

物联沃分享整理
物联沃-IOTWORD物联网 » MCS-51单片机指令周期详解表:快速掌握机器周期判断技巧

发表回复