在Intel 8085微处理器中,程序计数器在什么时候(t状态)更新?它是在t1之后(即,当PC中的当前地址放在地址总线上时)还是在t3时,是否正在执行取指令?
此外,遇到hlt指令时,程序计数器的状态会发生什么变化?它会增加还是包含当前hlt指令的地址?
答案 0 :(得分:1)
已在 this 提出类似问题。
通常在第一个时钟周期,<select value={selectedCurrency} onChange={onChangeCurrency}>
{currencyOptions.map((option, index) => (
<option key={index} value={option}>{option}</option>
))}
</select>
的当前值被加载到地址缓冲区,接下来的 2 个时钟周期在该地址获取指令操作码。
在此期间,当操作码被提取到 PC
中时,增量器会更新 16 位 PC
。因此,在 8085 甚至可以解码并意识到指令是 IR
之前,PC
已经递增。
答案 1 :(得分:1)
HLT
用作“等待下一个中断”指令。如果你想永远停止,你必须把 HLT
放在一个循环中,或者禁用中断。因此,在中断内部软件可见的保存的中断返回地址是之后 HLT
的字节。
这是在 8086 / x86 上发生的情况,8080 与 asm 源兼容。此外,将中断返回地址指向 HLT
意味着它会在中断处理程序正常返回后再次运行。将它用作“从现在开始只运行中断处理程序”之外的任何其他内容意味着您的所有中断处理程序都必须检查保存的 PC
所指向的内容,如果是,则在返回之前增加它。相反,为了获得这种行为,您可以将 HLT
放在一个循环中,在您想要的地方。
正如 codeR 解释的那样,PC
已经在 HLT
休眠之前递增,而不是在醒来处理中断的最后时刻。