Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
Delphi 12 Athens
|
Re: Assembler in Delphi! Speichersack?
30. Sep 2003, 12:23
Das Ergebnis wird für Integer-Funktionen in EAX zurückgegeben, ansonsten kannst Du natürlich auch Result ansprechen, allerdings ohne die @ Operatoren
Code:
function TColorPalette.HitColorText(apt: TPoint): Integer;
var x : Integer;
{begin
if PtInRect(ClientRect, apt) then
if ((apt.x mod 17) > 14) or ((apt.y mod 17) > 14) then
Result := -1
else
Result := (apt.x div 17) + (apt.y div 17) * 8
else
Result := -1;
end;}
asm
// apt.x div 17
mov eax, apt.x
mov ecx, 17
push edx
mov edx, 0
div ecx
cmp edx, 14
jns @nowhere
mov x, eax
// apt.y div 17
pop edx
mov eax, apt.y
mov edx, 0
div ecx
cmp edx, 14
jns @nowhere
// Result := x + y(eax) * 8
shl eax, 3
or eax, x
cmp eax, 40
jns @nowhere
[color=#ff0000][s] mov @Result, eax[/s][/color]
jmp @1
@nowhere:
mov [color=#ff001b]EAX[/color], -1 // Result := -1
@1:
end;
... ...
Daniel Lizbeth Ich bin nicht zurück, ich tue nur so
|
|
Zitat
|