在 Z80、8080、8085 和 8086 处理器的标志寄存器中,记录为“保留”或“未定义”的位 1、3、5 的用途是什么?
问问题
1872 次
1 回答
10
这些位未使用;也就是说,没有指令明确地将它们设置为任何值。设计者认为 5/6 个标志就足够了,他们只是将标志寄存器的剩余位留空。
它们被记录为“未定义”,因为在执行任何指令后无法提前知道它们将具有哪个值 - 处理器设计更简单,而不是将它们显式设置为 0 或 1。
现在,严格来说,至少对于 Z80,这些标志确实得到了一个可预测的值——毕竟,在输入和先前内部状态的相同组合的情况下,处理器总是会产生相同的输出并更改为内部状态。例如,这份关于未记录的 Z80 指令的文档对 CPI 有以下说明:
标志 3 和 5 设置如下:取 A,减去最后一个 (HL),如果设置了 H 标志 (/after/ CP),则将其减 1。该值的第 1 位是标志 5,第 3 位是标志 3。
然而,关键是这种行为是无意的——只是一个副作用——并且不能保证在处理器的未来迭代中出现。这就是为什么它们被记录为只是“未定义”的原因,例如,“它们对你没有用,所以忽略它们”。
请注意,虽然在 Z80 上,F
寄存器的所有位都可以设置为任何状态,但在 i8080 上,第 3 位和第 5 位(对应于未记录的 Z80 标志)始终读取为零,而第 1 位(对应于 Z80 的 N 标志)始终读取成为一个。
于 2017-06-30T07:47:24.743 回答