次のコードを検討してください。
.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
パリティフラグは、結果の最下位バイトによってのみ影響を受けます。したがって、パリティの計算では、値はゼロでした。
より広い値のパリティを知りたい場合は、8ビットの結果が得られるまでその2つの半分を一緒にxorできます。その後、最後のxorのパリティフラグは元の値全体のパリティを反映します。
たとえば、この場合、次のことができます。
xor al, ah
そして、パリティフラグはのパリティを反映しax
ます。
Į最初の桁はまだ符号būtと見なされるため、無視されます。オーバーフローフラグも設定されていると思います。これにより、この推定が正しくなります。