PDA

View Full Version : حرفه ای: ایجاد فایل اجرایی یک برنامه اسمبلی (هزینه هم میکنم اگه کسی بلد باشه)



msdn1223
چهارشنبه 13 دی 1391, 20:47 عصر
سلام دوستان

من یه برنامه اسمبلی دارم که با emu8086 نوشته شده و درست کار میکنه ولی فایل اجرایی که تولید میکنم برنامه درست کار نمیکنه و انگار به وقفه نمایش ماوس خطا میگیره
اگه کسی از دوستان میتونه فایل اجرایی این برنامه رو تولید کنه بهم بگه، مرسی
فایل رو ضمیمه کردم، با emu8086 اجرا و تست کنید

Delphi Coder
شنبه 16 دی 1391, 03:26 صبح
هزینه نیازی نیست شما دقیقا مشکلتون رو توضیح بدید. چرا درست کار نمیکنه خطایی از اسمبلر میگیرید؟ اصلا فایل اجرایی تولید میشه و کار نمیکنه؟ با چه اسمبلری اسمبل و لینک میکنید؟

msdn1223
شنبه 16 دی 1391, 09:16 صبح
من با خود emulator و MASM امتحان کردم، انگار به وقفه نمایش ماوس خطا میگیره، چون وقتی اونو حذف میکنم فایل اجرایی تولید میشه
ممنون میشم شما هم یه تستی کنید، فایل رو ضمیمه کردم تو پست اول

Delphi Coder
یک شنبه 17 دی 1391, 01:53 صبح
این برنامه کلا گرامر و قواعد masm و tasm رو رعایت نکرده فقط با fasm فایل اجراییش ساخته میشه که ظاهرا (تا جایی که من تست کردم) فقط در emu8086 به خاطر ایراداتی که این برنامه در شبیه سازی داره درست کار میکنه. نه در محیط cmd ویندوز و نه در DOS Box درست کار نکرد.
ایراد منطقی و ساختاری هم داره یک ایراد منطقی این که ماوس رو هر دفعه قبل از خواندن Initialize میکنه که این باعث میشه اشاره گر ماوس هر جا که باشه بیاد وسط صفحه. در مورد ماکروها هم بد استفاده کرده از ماکروها مثلا از داخل ماکرو اومده jump گذاشته به یه جایی داخل برنامه یا اینکه یه قسمت کد طولانی که باید به شکل procedure باشه اومده ماکرو تعریف کرده.
به نظر من اگر خودتون یه ماشین حساب بنویسید بهتر از این هست که روی این کد آماده وقت بزارید.

msdn1223
یک شنبه 17 دی 1391, 01:56 صبح
ممنون :ناراحت:

xman_1365_x
یک شنبه 17 دی 1391, 13:52 عصر
تا حدی مشکلاتشو درست کردم(emu8086 & masm) سر کار هستم بیشتر نمیشه وقت بزارم
97956

موفق باشی

xman_1365_x
دوشنبه 18 دی 1391, 12:32 عصر
ضمنا یک مشکل دیگه که دیدم اینه قسمتی که وضعیت موس رو میخونه چون در امولاتور برنامه وقفه داره مشکلی نیست اما روی سیستم واقعی با یک بار فشار دادن و تکرار حلقه برنامه تعداد زیادی بافر ورودی میگیره و کرش میکنه

موفق باشی

msdn1223
دوشنبه 18 دی 1391, 12:47 عصر
خب فکر کنم مشکل اصلی همینه دوست من
با فشار یک دکمه صفحه به هم میریزه...
چیکار باید کرد؟

xman_1365_x
دوشنبه 18 دی 1391, 13:19 عصر
خب فکر کنم مشکل اصلی همینه دوست من
با فشار یک دکمه صفحه به هم میریزه...
چیکار باید کرد؟
یک راه میتونه قرار دادن وقفه تاخیر زمانی باشه

msdn1223
دوشنبه 18 دی 1391, 13:21 عصر
میشه بیشتر راهنمایی بفرمایید؟ کار زیادی داره؟

xman_1365_x
سه شنبه 19 دی 1391, 09:38 صبح
میشه بیشتر راهنمایی بفرمایید؟ کار زیادی داره؟
اگر در سایت جستجو میکردین سریع به جوابتون میرسیدین،حلقه ای که وضعیت موس رو میخونه درست کنید(خطوط 78-84)
برای تاخیر زمانی میتونید از وقفه و یا توابع ریاضی تاخیر استفاده کنید
ساده ترینش وقفه هست مثلا وقفه :
INT 15 - AH = 86h SYSTEM - WAIT (AT,XT2,XT286,CONV,PS)
موفق باشی

Delphi Coder
چهارشنبه 20 دی 1391, 00:02 صبح
ساده ترینش وقفه هست مثلا وقفه :
INT 15 - AH = 86h SYSTEM - WAIT (AT,XT2,XT286,CONV,PS)
موفق باشی
این وقفه تو بایوس مدلهای قدیمی IBM کار میکنه رو PC مثل اینکه جواب نمیده من قدیما یه بار امتحان کردم اینو.

xman_1365_x
چهارشنبه 20 دی 1391, 00:52 صبح
این وقفه تو بایوس مدلهای قدیمی IBM کار میکنه رو PC مثل اینکه جواب نمیده من قدیما یه بار امتحان کردم اینو
نه فقط ویندوز پشتیبانیش نمیکنه،میتونید زمان جاری رو بخونید زمان مورد نظرو بهش اضافه کنید و زمانو در حلقه بررسی کنید تا به زمان مورد نظر برسید