2

JMP指令的机器码包含: opcode - 11CCC010 (where CCC is the state of the flag bit used to set the condition) 8 bitsaddress跳转 - 比方说一个16位地址。8085指令:JMP - 条件不满足时的机器周期数?

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

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

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

但我指的学习微处理器的材料说,这将需要2个机器周期,但不知道为什么,所以我的困惑。它应该是1个机器周期还是2个机器周期?

如果对机器周期和时钟周期有任何疑问,请随时回答。

+0

@lurker抱歉,但这些sildes似乎并没有对所需要的任何指令时钟周期数的任何信息(除了留下JMP指令)。它只是显示了指令的功能。如果我遗漏了任何内容,请原谅,但如果没有大多数其他文档拥有的索引或内容页面,幻灯片很难跟踪。 – aste123

回答

1

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

不过,我觉得你的困惑是因为你想像不读地址是某种免费的,但仍然是PC递增。

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

在这一点上我想像的8085是足够聪明,如果分支是不会采取它可以拒绝读取目标地址的第二个字节,只是又增加了PC。 8080和z80可能允许第二个字节的读取开始,并且很可能无法在不通常读取它的情况下递增PC,因此它们会继续读取,然后丢弃整个目标地址。

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

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

+0

对不起,我不明白这是什么意思,“不读地址是免费的,但仍有PC增加。”我不知道8085有piplining。这可以解释为什么它是一个机器状态超过我的预期。 – aste123

+0

假设它只是读了'JC'并决定不接受它。然后去下一条指令,它需要执行'PC'= PC + 2'。没有其他时间,没有其他需要将PC增加两次的地方。他们很可能不能将PC重新路由到ALU,因此他们可能只需要连续请求两次增量。即使它可以避免任何目标地址的内存读取,这也不会产生任何影响。 – Tommy

+0

对不起,这很混乱。如果pipline进场并且低位字节已被其他地方读取,则PC已经加1并且当前指向目标地址的高位字节(第二部分)。当地址的第二部分被读取/提取时,PC将再次递增;所以为了避免这种情况,我们需要增加+1而不是+2(我希望我是正确的)。同样根据你最近的评论,你的意思是说刻意增加电脑(以一种不自然的方式)是否会引起副作用并花费额外的时钟周期? (对不起,我的第一语言不是英语) – aste123