关于Z80官方手册中标志位(进位/借位)的理解咨询
Zilog指令标志位:进位/借位含义解析
1. 「从位n产生进位则置位标志」是什么意思?
这是加法类指令的标志规则,结合手册里的例子拆解:
- 针对
H半进位标志:位3是8位数据低4位的最高位(从0开始计数,位0为最低位)。当低4位执行加法时,位3的计算结果超出了它能容纳的最大值(二进制1),就会向更高的位(位4)传递一个“1”,这就是「从位3产生进位」,此时H标志会被设为1(置位);如果没超出,H就设为0(复位)。
举个实际例子:计算0x0F + 0x02(二进制00001111 + 00000010),低4位的1111 + 0010结果是10001,位3的1加0后,再加上来自位2的进位1,最终变成10,所以向位4进了1,这时H标志就会置位。 - 针对
C进位标志:位7是8位数据的最高位,当整个8位加法的结果超出8位能容纳的最大值(0xFF),就会向第9位传递一个“1”,也就是「从位7产生进位」,此时C标志置位;否则复位。比如0xFF + 0x01,结果是0x100,位7的1加1溢出到第9位,C标志就会置位。
2. 「从位n产生借位则置位」是什么意思?
这是减法类指令的标志规则,和进位逻辑相反:
做减法时,如果某一位n的被减数小于减数,就需要从更高的位(n+1)借一个“1”来补足,这个操作就是「从位n产生借位」,对应的标志会被置位;如果不需要借位,标志就复位。
比如对应半进位的情况(Zilog处理器中减法时H记录低4位的借位):计算0x04 - 0x05(二进制00000100 - 00000101),低4位里的位3是0,减数的位3是1,0不够减1,就得从位4借1,这就属于「从位3产生借位」,H标志置位。
再比如C标志的借位:计算0x00 - 0x01,8位被减数全是0,减1时需要从第9位借1,也就是「从位7产生借位」,此时C标志置位。
内容的提问来源于stack exchange,提问作者kamkow1
相关产品推荐
相关产品推荐

