我需要计算32位数的奇偶校验并返回它。要做到这一点,我必须使用XOR,SHR,SETP(或类似)和movzx。有人有想法吗?
答案 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;现在定义了奇偶校验标志