Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
|
Re: Assembler in Delphi! Speichersack?
30. Sep 2003, 15:28
Delphi-Quellcode:
// EAX = Self, EDX = aCol, ECX = @Result.TRect
asm
TEST EDX,EDX
JNS @@1
XOR EAX,EAX
MOV [ECX].TRect.Left,EAX
MOV [ECX].TRect.Right,EAX
MOV [ECX].TRect.Top,EAX
MOV [ECX].TRect.Bottom,EAX
RET
@@1:
MOV EAX,EDX
SHR EDX,3 // aCol div 8
AND EAX,7 // aCol mod 8
LEA EAX,[EAX * 16 + EAX] // X * 16 + X = X * 17
LEA EDX,[EDX * 16 + EDX] // Y * 16 + Y = Y * 17
MOV [ECX].TRect.Left,EAX
MOV [ECX].TRect.Top,EDX
ADD EAX,14
ADD EDX,14
MOV [ECX].TRect.Right,EAX
MOV [ECX].TRect.Borrom,EDX
end;
{
JA = Jump if Above, springe wenn größer, Vorzeichen wird ignoriert
JS = Jump if Sign, springe wenn < 0
JNS = Jump not if Sign, springe nicht wenn < 0, bzw. springe wenn >= 0
LEA = Load Effective Address
}
Gruß Hagen
|
|
Zitat
|