نمایش نتایج 1 تا 7 از 7

نام تاپیک: اسمبلی در C#‎

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183

    اسمبلی در C#‎

    من برای گرفتن شماره سریال سخت افزار سیستم برنامه ای به زبان اسمبلی دارم که می خواهم از آن در #C استفاده کنم.

    لطفا مرا راهنمایی کنید.

    تشکر

  2. #2
    برنامه ات رو بذار اینجا ، اگه قابل inline کردن در C++‎ بود ، میتونیم از MC++‎ کمک گرفته و از C#‎ اون رو فراخوانی کنیم
    We work in the dark, we do what we can, we give what we have.
    Our doubt is our passion and our passion is our task.
    The rest is the madness of art

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183

    کد اسمبلی برای گرفتن شماره سریال CPU

    کد اسمبلی را به صورت زیر در دلفی اسفاده کردم.


    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 را به ما میدهد.
    ممنون میشم اگر سریع پاسخ را ارسال کنید

    با تشکر

  4. #4
    یک راه حل : در دلفی تبدیلش کن به dll‌ و در سی شارپ فراخوانی کن.

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183

    راهنمایی کن

    نقل قول نوشته شده توسط anubis_ir
    یک راه حل : در دلفی تبدیلش کن به dll‌ و در سی شارپ فراخوانی کن.

    من دلفی زیاد کار نکردم . میشه بگی چطوری این کار را انجام بدم .

    ممنون مهندس

  6. #6
    پروژه 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();
    }

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183
    خیلی ممنون .
    راه حل خیلی خوبی بود!!!

    -------------------------------
    غافل مباش ار عاقلی دریاب گر صاحبدلی
    باشد که نتوان یافتن دیگر چنین ایام را

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •