سلام
ممنون ميشم از دوستان اگر برنامه ي تقسيم يك عدد64 بيي به عدد 32 بيتي به زبان اسمبلي رو برام بنويسند ...
واگر ميشه :
تفريق دو عدد 32 بيتي روهم برام بنويسيد ...
خيلي خيلي ممنون ميشم![]()
سلام
ممنون ميشم از دوستان اگر برنامه ي تقسيم يك عدد64 بيي به عدد 32 بيتي به زبان اسمبلي رو برام بنويسند ...
واگر ميشه :
تفريق دو عدد 32 بيتي روهم برام بنويسيد ...
خيلي خيلي ممنون ميشم![]()
برای تقسیم از ترکیب EDX:EAX به عنوان عدد 64 بیتی استفاده کن و عدد 32 بیتی ثبات یا یک آدرس حافظه میتونه باشه بعد با دستورات DIV و IDIV تقسیم کن
بعد تقسیم EDX باقی مانده و EAX خارج قسمت هست
تفریق رو هم با دستور SUB انجام بده و عدد 32 بیتیت میتونه ثبات های 32 بیتی EAX, EBX, ECX, EDX, ... یا یه آدرس حافظه باشهکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ای بابا
مثلا" اومدیم یه چیزی حالیمون باشه ،دیدیم نیست اونطورا
شرمنده فکر کردم ازین آسون تر باشه
درسمون هنوز به اونجا نرسیده خب
اما این چیزی که این بنده خدا گفته هم میتونه درست باشه
اما خب یه چیزی برات پیدا کردم که یه جورایی به درد بخوره البته بقیه اش با خودته
این هم آدرس اون سایت هستشYou cannot synthesize a general n-bit/m-bit division operation using the div and idiv instructions. Such an operation must be performed using a sequence of shift and subtract instructions. Such an operation is extremely messy. A less general operation, dividing an n bit quantity by a 32 bit (on the 80386 or later) or 16 bit quantity is easily synthesized using the div instruction. The following code demonstrates how to divide a 64 bit quantity by a 16 bit divisor, producing a 64 bit quotient and a 16 bit remainder:
dseg segment para public 'DATA'dividend dword 0FFFFFFFFh, 12345678hdivisor word 16Quotient dword 0,0Modulo word 0dseg endscseg segment para public 'CODE' assume cs:cseg, ds:dseg; Divide a 64 bit quantity by a 16 bit quantityivide64 proc near mov ax, word ptr dividend+6 sub dx, dx div divisor mov word ptr Quotient+6, ax mov ax, word ptr dividend+4 div divisor mov word ptr Quotient+4, ax mov ax, word ptr dividend+2 div divisor mov word ptr Quotient+2, ax mov ax, word ptr dividend div divisor mov word ptr Quotient, ax mov Modulo, dx retDivide64 endpcseg endsThis code can be extended to any number of bits by simply adding additional mov / div / mov instructions at the beginning of the sequence. Of course, on the 80386 and later processors you can divide by a 32 bit value by using edx and eax in the above sequence (with a few other appropriate adjustments).
on the 80386 and later processors you can divide by a 32 bit value by using edx and eax in the above sequence توی این خط توضیح داده که برای تقسیم 64 به 32 باید جای ax,dx از eax,edx استفاده کنی همونکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چیزی که اون بنده خدا گفته بود
نقل قول اولی خوب از آب در نیومد یه سر به آدرس سایت بزنی بهتر مفهومه
خب دیگه ...موفق باشی
در آغوش خدا
این لینک هم یه سری توضیحات برای تفریق توی فایلی که داده داره(فایل پی پی تی)که میتونه بدردت بخوره
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ممنونم از همگی ...
مرسی بیدل جان ..
فقط یه چیزی من از EAX مه استفاده میکنم این خطا رو میده که تعریف نشده
چرا؟ این که دیگه تعریف نمیخواد!!!!!Symbol not defined: EAX![]()
این دستورو اول کدت اضافه کن درست میشه، اگه نشد به جای اینکه اول کد بزاری قبل دستورایی که تو پست قبل دادم بزار
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وای من از اسمبلی متنفرم!
استادمونم که ماشالا فکر کرده داره c#درس میده انقد برنامه های سنگینی میده که بعضی وقتا کل هفته رو براش می ذاریم آخرم تموم نمیشه!
نمره دادنشم که تعطیل همرو میندازه!
منونم
شم امتحانش ميكنم حتما" ...
البته امروز از استادمون پرسيدم كه چرا ميگه تعريف نشده ...گفت چون امبلرتون 64 بيت رو نمخونه تا 32 بيته !!!!
منم گفتم ..به به ...خسته نباشيد
تازه استاد گفته listing رو هم برام بفزستيد !!!
با EAX كه نميشه ...كلي error داره آخرش !!!
موافقم كاملا"وای من از اسمبلی متنفرم!
استادمونم که ماشالا فکر کرده داره c#درس میده انقد برنامه های سنگینی میده که بعضی وقتا کل هفته رو براش می ذاریم آخرم تموم نمیشه!
نمره دادنشم که تعطیل همرو میندازه!
استاد ما هم همينطوره ..
همه مي دونيم كه آخرش ميافتيم !!!!![]()
چه ارروری میده؟ الان اینو ببین با masm614 کامپایل شده، همون کدی که بالا دادمه، البته چیزی به خروجی نمی فرسته ولی بدون مشکل کامپایل میشه
من فرض گرفتن که برنامه که می خوای بسازی 16 بیتی وگر در 32 بیتی از این جور مشکلا نداری
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
--------------------------
وای من از اسمبلی متنفرم!
استادمونم که ماشالا فکر کرده داره c#درس میده انقد برنامه های سنگینی میده که بعضی وقتا کل هفته رو براش می ذاریم آخرم تموم نمیشه!
نمره دادنشم که تعطیل همرو میندازه!
هر کسی دیگه همچین استادایی بهش می دادن از اسمبلی متنفر میشد.
ولی برعکس من حاظرم هیچ کلاسی نرم فقط سر کلاسهای اسمبلی بشینم
ولی حیف که تا حالا کلاس اسمبلی نداشتم
سلام عزیز جان
خوبی؟
کاری نکردم و قابلی نداشت فقط امیدوارم که نتیجه ای حاصل شده باشه براتمرسی بیدل جان ..
دل تنگ گفتگوتم
مواظب خودتون باشید
سلام برسون
در آغوش خدا باشی...
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)