2

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

首先有一个操作码的获取操作,所以它需要 1 个机器周期。检查标志位的状态。如果条件满足,则读取地址,否则不满足。检查条件是否满足不应花费任何重要的时钟周期,因为它是根据标志位的状态确定的。

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

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

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

如果机器周期和时钟周期有一些混淆,请随时回答。

4

1 回答 1

1

尽管它与我们这些习惯于 8080 或 z80 的人的直觉相悖,但查看此文档可以证实您的看法。JC如果条件不满足,则需要两个机器周期和七个时钟周期,但如果条件满足,则需要三个机器周期和十个时钟周期。与 z80 进行比较和对比,z80 始终是三个机器周期和十个时钟周期,无论是否采用。

但是,我认为您的困惑是因为您认为不读取地址是免费的,但仍有 PC 需要增加。

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

那时我会想象 8085 足够聪明,如果不采用分支,它可以拒绝读取目标地址的第二个字节并再次增加 PC。8080 和 z80 可能已经允许开始读取第二个字节,并且很可能无法在不读取 PC 的情况下增加 PC,因此他们继续执行此操作,然后丢弃整个目标地址。

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

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

于 2014-05-23T19:10:59.723 回答