इनलाइन असेंबलर डेल्फी में उसी तरह काम नहीं करता है क्योंकि यह जीसीसी में करता है। शुरुआत के लिए, आप डेल्फी में स्थूल और टेम्पलेट समर्थन की एक ही तरह की जरूरत नहीं है, तो आप एक घोषणा-एक बार सामान्य प्रयोजन कोडांतरक नियमित उपयोग करना चाहते हैं, तो आप एक समारोह के रूप में यह घोषणा करने के लिए है:
function ShiftArithmeticRight(aShift: Byte; aValue: LongInt): LongInt;
{$IFDEF WIN64}
asm
sar edx,cl
mov eax,edx
end;
{$ELSE}
{$IFDEF CPU386}
asm
mov cl,al
sar edx,cl
mov eax,edx
end;
{$ELSE}
begin
if aValue < 0 then
Result := not (not aValue shr aShift)
else
Result := aValue shr aShift;
end;
{$ENDIF}
{$ENDIF}
डेल्फी में, इनलाइन असेंबलर को उस स्थान पर लागू किया जाना चाहिए जहां इसका उपयोग किया जाता है, और यह केवल 32-बिट में समर्थित है। ऐसे एएमएम ब्लॉक में आप ईएक्स, ईसीएक्स, ईडीएक्स स्वतंत्र रूप से, साथ ही आसपास के कोड में किसी भी पहचानकर्ता का उपयोग कर सकते हैं। उदाहरण के लिए:
var
lValue: LongInt;
lShift: Byte;
begin
// Enter pascal code here
asm
mov cl,lShift
sar lValue,cl
end;
// Enter pascal code here
end;
स्रोत
2012-02-24 12:24:03
मेरी सलाह इस कोड को असेंबलर के बजाय पास्कल में परिवर्तित करना होगा। –