Assembly 8085指令:JMP-不满足条件时的机器循环数?

Assembly 8085指令:JMP-不满足条件时的机器循环数?,assembly,microcontroller,instruction-set,microprocessors,8085,Assembly,Microcontroller,Instruction Set,Microprocessors,8085,JMP指令的机器代码包括: 操作码-11CCC010(其中CCC是用于设置条件的标志位的状态)8位和 地址用于跳转-假设是一个16位地址 首先是操作码的获取操作,因此需要1个机器周期。检查标志位的状态。如果条件满足,则读取地址,否则不读取。 检查条件是否满足不应采用任何有效的时钟周期,因为它是由标志位的状态确定的 i-现在如果条件满足:需要的机器周期数=1(用于提取)+2(用于读取16位的地址)=3 二,。如果条件不满足:应该没有读取周期(在提取周期之后),因此所需的机器周期数必须为1,即仅在提

JMP指令的机器代码包括:
操作码-11CCC010(其中CCC是用于设置条件的标志位的状态)8位
地址
用于跳转-假设是一个16位地址

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

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

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

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


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

尽管这与我们使用8080或z80的人的直觉相反,但检查确认了您的信念
JC
如果不满足条件,则需要两个机器周期和七个时钟周期,如果满足条件,则需要三个机器周期和十个时钟周期。比较和对比z80,它总是三个机器周期和十个时钟周期,无论是否采取

然而,我认为你的困惑是因为你想象不读地址在某种程度上是免费的,但仍然有电脑需要增加

处理器系列的两个分支都有基准的两个周期成本。这将解释解码和决策,因为它们是流水线的,目标地址的第一个字节的读取将从别处开始

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

因此,简而言之:它不需要等待决定开始读取目标地址;一旦低字节的读取正在进行中,它就会让读取完成。另一种选择是,如果执行分支,则指令将花费更长的时间,并且需要能够在不读取PC的情况下执行双倍增量,否则可能不会出现这种情况


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

@Lowerer抱歉,但这些SILDE似乎没有任何关于任何指令所需时钟周期数的信息(将JMP指令分开)。它只是显示指令的作用。请原谅,如果我遗漏了幻灯片以外的内容,那么如果没有其他大多数文档所拥有的索引或内容页,则很难理解幻灯片的内容。对不起,我不明白这意味着什么
,不阅读地址是免费的,但电脑仍在增加。
我不知道8085有管道。这可以解释为什么它比我预期的多了一个机器状态。假设它只是读了
JC
,并决定不接受它。然后要进入下一条指令,需要执行
PC'=PC+2
。没有其他时间,没有其他地方的电脑需要增加两次。他们不太可能将PC重新路由到ALU,所以他们可能只需要连续请求两次增量。即使它可以避免对目标地址的任何内存读取,也不太可能没有效果。对不起,这让人困惑。如果piplining起作用,并且低阶字节已经在别处读取,则PC已经上升1,并且当前指向目标地址的高阶字节(第二部分)。当读取/获取地址的第二部分时,PC将再次递增;因此,要跳过这一点,我们需要将PC增加+1而不是+2(希望我是正确的)。同样,你最近的评论,你的意思是说故意(以不自然的方式)增加PC会产生副作用并占用额外的时钟周期吗?(对不起,我的第一语言不是英语)是的。我推测第二个周期是因为地址的低部分正在被提取,或者,如果它没有被提取,是因为没有其他方法来实现双增量。它们是可供选择的。@AlexisWilke,但这不是因为6502个条件分支是相对的,所以取一个条件分支需要计算成本吗?