【发布时间】:2018-05-04 09:52:37
【问题描述】:
我正在使用TEST (Parity flag operation) 进行手动操作,问题是我无法得到正确的结果,请考虑一下:
ax = 256 = 0000 0001 0000 0000
如果我这样做:
test ah, 0x44
PF 标志操作应该是:
0000 0000 =0000 0001&0100 0100
PF = 0000 0000 XNOR 0000 0000
PF = 1111 1111?
我已经按照英特尔的参考,根据这个:
问题是我做错了什么?
【问题讨论】:
-
如果您尝试设置或重置 PF 标志,您可以使用
lahf instruction执行此操作,看看我的回答 stackoverflow.com/questions/41335653/… -
@Doda 不,我想手动做公式,问题是我没有得到与程序操作相同的结果......
-
您阅读的参考资料有误。首先,参数是
TEMP[0:7],但您使用的是TEMP[15:8]。其次,BitwiseXNOR只有一个参数,所以不清楚为什么要计算0000 0000 XNOR 0000 0000(特别是因为结果有 8 位,而 PF 只有一位)。BitwiseXNOR的意思是将所有位异或,然后取反。 -
我不明白您是否要设置/重置 PF 标志?
-
@Raymond Chen 你能发一个例子或链接例子吗?我找不到类似示例的操作,你的意思是
bit0 to bit7 xorged and then negated?类似~(0^0^0^0^0^0^0)?
标签: assembly flags operation parity