PDA

View Full Version : گفتگو: اسمبلی تحت DOS



Delphi Coder
چهارشنبه 20 دی 1391, 03:48 صبح
سلام.
البته این تاپیک که ایجاد کردم برام بیشتر جنبه نظر خواهی داشت تا گفتگو.
به نظر شما علت اینکه استادان دانشگاه در این زمان (زمانی که DOS کاملا منسوخ شده) معمولا مسائلی از دانشجوها میخوان که بیشتر به اسمبلی 16 بیتی تحت DOS مربوط میشه چی هست؟
اگر صرفا اسمبلی 16 بیت بود میگفتیم خوب سیستم عامل کار خودشو با 16 بیت و وقفه های بایوس شروع میکنه و هر مهندسی باید اطلاعات و تجربه ای از این محیط داشته باشه(صرفا برای توانایی در نوشتن بوت لودر). ولی تاپیکهایی که این روزها بیشتر دیده میشه پروژه هایی هستند که با وقفه های DOS بیشتر سر و کار دارند تا با صرف اسمبلی محیط 16 بیت. آیا علت عدم تسلط اساتید دانشگاه به اسمبلی مثلا ویندوز یا لینوکس یا 32 بیت هست یا توجیه دیگری هم میشه پیدا کرد برای این کار؟

the king
چهارشنبه 20 دی 1391, 05:36 صبح
سلام.
البته این تاپیک که ایجاد کردم برام بیشتر جنبه نظر خواهی داشت تا گفتگو.
به نظر شما علت اینکه استادان دانشگاه در این زمان (زمانی که DOS کاملا منسوخ شده) معمولا مسائلی از دانشجوها میخوان که بیشتر به اسمبلی 16 بیتی تحت DOS مربوط میشه چی هست؟
اگر صرفا اسمبلی 16 بیت بود میگفتیم خوب سیستم عامل کار خودشو با 16 بیت و وقفه های بایوس شروع میکنه و هر مهندسی باید اطلاعات و تجربه ای از این محیط داشته باشه(صرفا برای توانایی در نوشتن بوت لودر). ولی تاپیکهایی که این روزها بیشتر دیده میشه پروژه هایی هستند که با وقفه های DOS بیشتر سر و کار دارند تا با صرف اسمبلی محیط 16 بیت. آیا علت عدم تسلط اساتید دانشگاه به اسمبلی مثلا ویندوز یا لینوکس یا 32 بیت هست یا توجیه دیگری هم میشه پیدا کرد برای این کار؟

نه ربطی به سواد اساتید نداره، نه اینکه بی سواد نیستند، هستند اما استفاده از وقفه های DOS چیزی نیست که بشه به این راحتی از برنامه نویسی اسمبلی 8086 گرفت.
همه وقفه های DOS واقعا مربوط به سیستم عامل MS-DOS نیستند، برای ساده تر شدن ارتباط با سخت افزار خیلی کمک بزرگی اند.
فرضا سرویس 2Ch وقفه 21h و سرویس 03h وقفه 1Ah هر دو ساعت سیستم رو تنظیم می کنند، اما وقفه BIOS اینکار رو با اعداد BCD شده انجام میده و
وقفه DOS با اعداد باینری معمولی. اغلب اوقات این BCD بودن فقط کار اضافه کردنه. یا فرضا دریافت رشته از صفحه کلید، بدون سرویس 0Ah وقفه 21h
معادل ساده ای نداره، انجام اینکار نیازمند یک سری کد نویسی اضافی و طولانی است، پردازش کلید Backspace و جابجا کردن چشمکزن مکان نما و ...