如何计算汇编中32位数的奇偶校验?

时间:2014-11-20 13:31:01

标签: assembly x86 parity

我需要计算32位数的奇偶校验并返回它。要做到这一点,我必须使用XOR,SHR,SETP(或类似)和movzx。有人有想法吗?

2 个答案:

答案 0 :(得分:2)

当然,有很多方法可以做到这一点。如果您决定使用硬件奇偶校验标志,请记住它只检查低8位。使用此方法的解决方案可能是将您的32位输入处理为4个8位值,并对部分结果使用XOR

p(31:0) = p(31:24) ^ p(23:16) ^ p(15:8) ^ p(7:0)

要获得8位单位,您可以使用SHR并获取XOR的部分值,然后使用SETP。这应该足以让你入门。

另一个可能更有效的选择是对字节进行异或并获取它们的奇偶校验:

p(31:0) = p(31:24 ^ 23:16 ^ 15:8 ^ 7:0)

答案 1 :(得分:-1)

使用此代码

mov ebx,1234;将此数字替换为您想要知道奇偶校验的值

mov cx,4

一个:

或bl,bl

LAHF

ror eax,8

ror ebx,8

循环

xor啊,al

ror eax,16

xor al,啊

rol eax,8

xor啊,al

和啊,4

sahf;现在定义了奇偶校验标志