hey there
Ich habe Probleme bei der Division mit Vorzeichen:
Delphi-Quellcode:
type
TInteger = record
public
Value: Integer;
{ ... }
function DivBy(X: Integer): Integer;
end;
Delphi-Quellcode:
function TInteger.DivBy(X: Integer): Integer;
// Dividiert Value durch X und gibt den Rest zurück
asm
PUSH EBX
MOV ECX, EAX
// ECX:= @Value
MOV EAX, [ECX]
// EAX:= Value
MOV EBX, EDX
// EBX:= X
XOR EDX, EDX
// EDX:= 0
IDIV EBX
// EAX:= EDX:EAX div EBX, Rest in EDX
MOV [ECX], EAX
// Value:= EAX
MOV EAX, EDX
// Result:= EDX
POP EBX
end
Soweit funktioniert es eigentlich, einzig wenn Value negativ ist, kommt ein falscher Quotient raus... Habe ich etwas bezüglich IDIV übersehen?
Greets