为什么结果是8000h并且设置了奇偶校验标志?

时间:2013-02-27 08:09:23

标签: assembly x86

请考虑以下代码:

.586
.model flat,stdcall
.data
.code
main PROC

mov ax,0
push ax
popf 
mov bx,7FFFh
add bx,1               //the value of bx is 8000h, but the parity flay is 1,why?
Ret
main endp
END main

2 个答案:

答案 0 :(得分:3)

奇偶校验标志仅受结果的最低字节的影响。因此,对于奇偶校验的计算,您的值为零。

如果你想知道更宽值的奇偶校验,你可以将它的两半合并为止,直到得到8位结果,在最后的xor之后,奇偶校验标志将反映整个原始值的奇偶校验。

例如,在这种情况下,你可以这样做:

xor al, ah

然后奇偶校验标志将反映ax的奇偶校验。

答案 1 :(得分:-2)

Į假设第一个数字仍被视为符号būt,因此它被忽略。我想也设置了溢出标志,这会使这个假设正确。