1

次のコードを検討してください。

.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
4

2 に答える 2

3

パリティフラグは、結果の最下位バイトによってのみ影響を受けます。したがって、パリティの計算では、値はゼロでした。

より広い値のパリティを知りたい場合は、8ビットの結果が得られるまでその2つの半分を一緒にxorできます。その後、最後のxorのパリティフラグは元の値全体のパリティを反映します。

たとえば、この場合、次のことができます。

xor al, ah

そして、パリティフラグはのパリティを反映しaxます。

于 2013-02-27T08:20:54.883 に答える
-2

Į最初の桁はまだ符号būtと見なされるため、無視されます。オーバーフローフラグも設定されていると思います。これにより、この推定が正しくなります。

于 2013-02-27T08:15:18.467 に答える