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

نام تاپیک: می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روreturn کنه

  1. #1

    Unhappy می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روreturn کنه

    من می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روreturn کنه،
    یعنی وقتی عددارو میگیره به زبان سی باشه بعد اونارو پاس بده به تابع و اونهارو با دستورات اسمبلی با هم جمع کنه؟(ترکیب سی و اسمبلی)
    خواهش می کنم کمک کنید

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: کمک فوری

    یعنی وقتی عددارو میگیره به زبان سی باشه بعد اونارو پاس بده به تابع و اونهارو با دستورات اسمبلی با هم جمع کنه؟(ترکیب سی و اسمبلی)
     
    WORD sum(WORD num1, WORD num2)
    {
    WORD value;
    asm{
    mov bx, num1
    add bx, num2
    mov value, bx
    }
    return value;
    }

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روretu

    در ضمن برای 32 بیت به شکل زیر عمل کنید

    DWORD sum(DWORD num1, DWORD num2)
    {
    DWORD value;
    asm{
    mov ebx, num1
    add ebx, num2
    mov value, ebx
    }
    return value;
    }

  4. #4

    نقل قول: می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روretu

    سلام من منظور شما رو از dword نمی فهمم میشه به جای اون از long int یا unsigned int دقیقا به جای همون dwordهااستفاده کرد؟؟؟؟

  5. #5

    نقل قول: می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روretu

    DWORD درواقع همون unsigned long هست و WORD هم همون unsigned short ، نوع DWORD 4 بایت هست و برای گرفتن یک عدد 32 بیتی مناسبه و نوع WORD هم دو بایته و برای گرفتن یک عدد 16 بیتی مناسبه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: می خوام یه تابع بنویسم که دو تا عدد 32 بیتی رو بگیره بعد اوناره با هم جمع کنه،و حاصل روretu

    میشه به جای اون از long int یا unsigned int دقیقا به جای همون dwordهااستفاده کرد؟؟؟؟
    بستگی داره این مقاذیر را با کدوم پلت فرم استفاده کنید مثلا در پلت فرم 32 بیتی برای int مقدار 32 بیت یا 4 بایت در نظر گرفته میشه در صورتی که برای داس 16 بیتی این مقدار 2 بایت یا 16 بیت هست.
    میتوانید نوع short را به جای int استفاده کنید.
    ولی در مورد unsigned باید این تعریف برای متغییر قرار داده شود تا به هنگام Mov شدن مقدار در جیستر اشکال کامپایلر از شما گرفته نشود در صورتی که اصل مسئله که قرار دادن مقدار در رجیستر هست با توجه به اندازه رجیستر درست هست.پس

    dword = unsigned long
    word = unsigned short

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

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