为什么奇偶校验标志为1而奇偶校验标志为奇数

执行以下两条指令后:

MOV BX, 0FD51H                                        
DEC BX

我得到奇偶校验标志 = 1(表示偶数个)

但是,递减值的二进制表示为:

1111 1101 0101 0000

它有 9 个 1(即奇数个 1)。

此外,NEG BX在此之后执行导致 PF = 0。但是,2 的补码是:

0000 0010 1011 0000有偶数个。所以我期望 PF = 1。

回答

来自英特尔的手册(第 3.4.3.1 节状态标志):

奇偶校验标志 — 如果结果的最低有效字节包含偶数个 1 位,则设置;否则清除。

之后的最低有效字节DEC BX是 50h(即 1010000b),它有偶数个 1。所以你会得到 PF=1。

同样,在 之后NEG,最低有效字节是 B0h (10110000b),它有奇数个 1。所以你得到 PF=0。


以上是为什么奇偶校验标志为1而奇偶校验标志为奇数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>