8085指令:JMP - 不满足条件时的机器周期数?

时间:2014-05-23 18:43:17

标签: assembly microcontroller instruction-set microprocessors 8085

JMP指令的机器代码包括: opcode - 11CCC010 (where CCC is the state of the flag bit used to set the condition) 8 bitsaddress用于跳转 - 让我们说一个16位地址。

首先是操作码的提取操作,因此需要1个机器周期。检查标志位的状态。如果条件满足则读取地址,否则不是。 检查条件是否满足不应该采用任何有效的时钟周期,因为它是根据标志位的状态确定的。

我 - 现在如果条件满足:不。需要的机器周期= 1(用于获取)+ 2(用于读取16位的地址)= 3

II。如果条件不满足:应该没有读取周期(在获取周期之后),因此所需的机器周期数必须为1,即仅为获取周期。

但我所说的学习微处理器的材料说它需要2个机器周期,但不能说明原因,因此我的困惑。应该是1个机器周期还是2个机器周期?

如果对机器周期和时钟周期存在一些疑惑,请随时回答。

1 个答案:

答案 0 :(得分:1)

虽然它与我们这些习惯于8080或z80的人相反,但检查this documentation证实了你的信念。如果条件不满足,则JC需要两个机器周期和七个时钟周期,但如果满足条件则需要三个机器周期和十个时钟周期。与z80进行比较和对比,它始终是三个机器周期和十个时钟周期,无论是否采用。

然而,我认为你的困惑是因为你想象不读取地址有点自由,但仍有PC增加。

处理器系列的两个分支都具有基线双周期成本。这会解释和做出决定,因为它们已经流水线化,目标地址的第一个字节的读取将在其他地方开始。

在那一点上,我想象8085足够智能,如果分支不被采用,它可以拒绝读取目标地址的第二个字节,然后再次增加PC。 8080和z80可能允许第二个字节读取开始,并且很可能无法在不读取它的情况下递增PC,因此它们会依次执行,然后丢弃整个目标地址。

因此,简而言之:它不会等待决定开始读取目标地址;一旦读取低字节正在进行中,它就完成了。替代方案可能是一个指令,如果采用分支需要更长的时间,并且需要能够在不读取PC的情况下进行双倍增量,否则可能无法实现。

当然,所有猜测。有人有实际的8085和逻辑分析仪吗?他们可以检查是否发生了第一次访问周期,即使没有进行跳转。