Wie wär es hiermit ?
Delphi-Quellcode:
FUNCTION AddParity(value:byte):byte;
asm
test al,al
// Setzt u.a. das Parity-Flag
lahf
// Flags in AH (Bit 2 = Parity Flag)
shr ah,2
// Parity-Flag in Carry-Flag schieben
rcl al,1
// AL um 1 Bit nach oben und Carry-Flag in Bit 0
end;
Achtung :
Das Parity-Flag ist dann = 1, wenn die Anzahl der 1er-Bits gerade ist.
Wenn 32-Bit Werte benutzt werden sollen, wird es etwas länger
Delphi-Quellcode:
FUNCTION AddParity(value:integer):integer;
asm
mov edx,eax
test eax,eax
lahf
shr ah,2
rcl edx,1
mov eax,edx
end;