2

在 Intel 8085 微处理器中,程序计数器准确地在什么点(t 状态)更新?是在 t1 之后(即,就在 PC 中的当前地址被放置在地址总线上时)还是在 t3,当指令提取完成时?

另外,当遇到 hlt 指令时,程序计数器的状态会发生什么变化?它是递增还是包含当前 hlt 指令的地址?

4

2 回答 2

1

HLT用作“等待下一个中断”指令。如果你想永远停止,你必须进入HLT一个循环,或者禁用中断。因此,在 中断内软件可见的保存的中断返回地址是HLT.

这就是 8086 / x86 上发生的情况,并且 8080 与 asm 源兼容。此外,将中断返回地址指向HLT意味着它将在中断处理程序正常返回后再次运行。将它用作“从现在开始只运行中断处理程序”以外的任何东西意味着您所有的中断处理程序都必须检查保存PC的指向什么,如果是这样,在返回之前增加它。相反,要获得该行为,HLT您需要在一个您想要的地方进行循环。

正如 codeR 解释的那样,在睡眠PC之前已经增加HLT,而不是在醒来处理中断的最后时刻。

于 2021-06-25T13:40:17.757 回答
1

类似的问题已在提出。

通常在第一个时钟周期中,当前值PC被加载到地址缓冲区中,接下来的 2 个时钟周期在该地址获取指令操作码。

在此期间,增量器更新 16 位PC,同时将操作码提取到IR. 在8085PC甚至可以解码并意识到指令是HLT.

于 2021-06-25T10:30:51.890 回答