جلسه دهم
مقدمه
پردازنده 8086 یکی از مهمترین و بنیادیترین معماریها در حوزه ریزپردازندههاست. شناخت نحوه نوشتن برنامه به زبان اسمبلی برای 8086 و اجرای آن در یک محیط شبیهسازیشده، به دانشجویان کمک میکند مفاهیمی مانند رجیسترها، سگمنتها، آدرسدهی و ساختار برنامههای سطح پایین را بهتر درک کنند.
در این جلسه، فرایند کامل کار شامل سه مرحله بررسی میشود:
- نوشتن یک برنامه نمونه اسمبلی برای 8086
- اسمبل کردن برنامه با NASM یا MASM
- اجرای خروجی در DOSBox یا امولاتور مشابه
(توجه: بر اساس درخواست دوره، این جلسه فقط مفاهیم و روشها را توضیح میدهد؛ بدون ارائه کد اجرایی.)
۱) ساختار کلی یک برنامه اسمبلی 8086
برای نوشتن برنامههای اسمبلی 8086، ابتدا باید ساختار عمومی آن را شناخت.
یک برنامه استاندارد شامل بخشهای زیر است:
- بخش دادهها (DATA)تعریف متغیرها و ثابتها
- بخش کد (CODE)شامل دستورات اصلی و روتینها
- بخش پشته (STACK)تعیین فضای اختصاصی برای پشته
- برچسب شروع برنامهمعرفی نقطه ورود به برنامه (معمولاً
start)
در این ساختار، برنامهنویس مستقیماً با رجیسترها و آدرسدهی سگمنت/آفسِت کار میکند.
۲) نحوه اسمبل کردن برنامه با MASM
MASM یکی از اسمبلرهای رسمی برای معماری x86 است.
مراحل عمومی اسمبل کردن:
- ایجاد فایل برنامه با پسوند
.asm - فراخوانی MASM از طریق محیط DOS یا DOSBox
- ساخت فایل آبجکت (
.obj) - لینک کردن فایل آبجکت و ساخت برنامه اجرایی (
.exeیا.com) - آماده شدن برنامه برای اجرا داخل DOSBox
خروجی MASM بسته به ساختار برنامه میتواند فایل اجرایی DOS یا فایل آبجکت قابل استفاده در پروژههای بزرگتر باشد.
۳) نحوه اسمبل کردن برنامه با NASM
NASM یک اسمبلر مدرن و متنباز است که از معماری 8086 نیز پشتیبانی میکند.
مراحل معمول:
- نوشتن برنامه در فایل
.asm - اسمبل کردن با تنظیمات مد 16 بیتی
- تولید خروجی به صورت
.binیا.com - اجرای آن داخل DOSBox
NASM معمولاً سادهتر از MASM است و سینتکس واضحتری دارد.
۴) اجرای برنامههای اسمبلی داخل DOSBox
DOSBox یک شبیهساز محیط DOS است که برای اجرای برنامههای 16 بیتی بسیار مناسب است.
برای اجرای برنامه باید:
- دایرکتوری برنامه در DOSBox Mount شود
- اسمبلر اجرا شود (NASM/MASM)
- برنامه تولید شده اجرا گردد
محیط DOSBox فضای بسیار مناسبی برای اجرای برنامههای 8086 است زیرا:
- 16 بیتی است
- سرعت پردازش قابل کنترل است
- خطاها و پیامها مشابه سیستمهای قدیمی نمایش داده میشوند
به همین دلیل در اکثر دورههای ریزپردازنده استفاده از DOSBox توصیه میشود.
۵) مراحل عملی از دید دانشجو
در یک آزمایشگاه استاندارد مراحل زیر توسط دانشجو انجام میشود:
- نوشتن یک برنامه ساده (مثلاً چاپ یک پیام یا انجام یک محاسبه ساده)
- ذخیره آن در یک فایل
.asm - اسمبل آن با MASM یا NASM
- تولید فایل اجرایی
- اجرای برنامه در DOSBox
- مشاهده نتیجه اجرای دستورات اسمبلی
این فرآیند باعث درک بهتر ارتباط دستورهای سطح پایین و اجرای واقعی آنها میشود.
۶) اهداف آموزشی جلسه
دانشجو در پایان این جلسه باید:
- ساختار برنامهنویسی 8086 را بشناسد
- تفاوت MASM و NASM را درک کند
- مراحل اسمبل و لینک را بداند
- نحوه اجرای برنامه در DOSBox را بیاموزد
- رابطه بین کد اسمبلی و سختافزار 8086 را بهتر درک کند
این جلسه پایه لازم برای آزمایشهای پیشرفتهتر در ادامه دوره است.
جمعبندی
در این جلسه با یک مسیر کامل آشنا شدیم:
- نوشتن یک برنامه نمونه برای پردازنده 8086
- آمادهسازی و اسمبل آن توسط MASM یا NASM
- اجرای خروجی در شبیهسازی مانند DOSBox
این فرایند بخش مهمی از کار با ریزپردازندههاست و به دانشجو کمک میکند اجرای واقعی یک برنامه سطح پایین را مشاهده و تحلیل کند.