View Full Version : اسمبلی در C#
ESG_Esfahan
پنج شنبه 06 بهمن 1384, 01:26 صبح
من برای گرفتن شماره سریال سخت افزار سیستم برنامه ای به زبان اسمبلی دارم که می خواهم از آن در #C استفاده کنم.
لطفا مرا راهنمایی کنید.:متفکر:
تشکر:تشویق:
Mehdi Asgari
پنج شنبه 06 بهمن 1384, 16:31 عصر
برنامه ات رو بذار اینجا ، اگه قابل inline کردن در C++ بود ، میتونیم از MC++ کمک گرفته و از C# اون رو فراخوانی کنیم
ESG_Esfahan
دوشنبه 10 بهمن 1384, 02:21 صبح
کد اسمبلی را به صورت زیر در دلفی اسفاده کردم.
var
_eax, _ebx, _ecx, _edx: Longword;
b: Byte;
s, s1, s2, s3 : string;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
edit1.text:=' - ' + 'Serial Number: '+s+ '-' + s1 + '-' + s2;
s2 := s2 + chr(b);
این کد شماره سریال CPU را به ما میدهد.
ممنون میشم اگر سریع پاسخ را ارسال کنید:متفکر:
با تشکر
anubis_ir
دوشنبه 10 بهمن 1384, 10:38 صبح
یک راه حل : در دلفی تبدیلش کن به dll و در سی شارپ فراخوانی کن.
ESG_Esfahan
سه شنبه 11 بهمن 1384, 01:35 صبح
یک راه حل : در دلفی تبدیلش کن به dll و در سی شارپ فراخوانی کن.
من دلفی زیاد کار نکردم . میشه بگی چطوری این کار را انجام بدم .
ممنون مهندس :تشویق:
anubis_ir
سه شنبه 11 بهمن 1384, 08:24 صبح
پروژه dll دلفی:
library cpu;
uses
SysUtils;
{$R *.res}
function getCPUSerial():Pchar;
var
_eax, _ebx, _ecx, _edx: Longword;
s, s1, s2 : string;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
Result := Pchar(s+ '-' + s1 + '-' + s2);
end;
exports getCPUSerial name 'getCPUSerial';
begin
end.
نحوه استفاده در سی شارپ:
[DllImport("cpu.dll", CallingConvention = CallingConvention.StdCall, CharSet=CharSet.Ansi)]
static extern string getCPUSerial();
private void btnGet_Click(object sender, EventArgs e)
{
txtRes.Text = getCPUSerial();
}
ESG_Esfahan
پنج شنبه 13 بهمن 1384, 02:26 صبح
خیلی ممنون .
راه حل خیلی خوبی بود!!!
-------------------------------
غافل مباش ار عاقلی دریاب گر صاحبدلی
باشد که نتوان یافتن دیگر چنین ایام را
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.