اگه برنامه اسمبلی رو بصورت مستقل می نویسید احتیاج به یک کامپایلر تحت DOS دارید، مثل :
Microsoft Macro Assembler
اول برنامه اسمبلی رو بطور کامل داخل یک فایل متنی می گذارید که پسوند فایل رو ASM بگذارید بهتره.
بعد با کامپایلر مربوطه فایل اجرایی EXE و یا COM اونرو می سازید، که نوع فایل اجرایی بستگی به کد شما داره.
آخرین نسخه های کامپایلر MASM هم شامل MASM.exe هستند و هم ML.exe که ML نسخه جدید و پیشرفته
کامپایلر است و MASM.exe فقط واسه سازگاری با نسخه های قبلی ارائه می شه.
همچنین باید فایل اجرایی LINK.exe و چند فایل دیگه هم در مسیر PATH وجود داشته باشند و یا در شاخه فعلی
کپی کرده باشیدش.
بهتره این مسیر دو شاخه BIN و BINR را در PATH سیستم اضافه کنید :
کد:
SET PATH=%PATH%;C:\MASM611\BIN;C:\MASM611\BINR
البته مسیر این دو شاخه ممکنه در کامپیوتر شما فرق کنه.
دستوری که برای ساختن فایل اجرایی لازم دارید را باید در DOS و یا Command Prompt بنویسید :
کد:
MASM.exe test.asm;
یا
ML.exe test.asm
من فرض کردم که اسم فایل کد برنامه اسمبلی ما test.asm است، دقت کنید که MASM.exe به کاراکتر ; بعد از اسم فایل
اسمبلی احتیاج داره و علاوه بر این در نسخه های قدیمی کامپایلر، برای ساختن فایلهای COM احتیاج به EXE2BIN هم دارید
که یک برنامه جانبی است، پس توصیه می کنم که در صورت امکان از ML.exe استفاده کنید.
نمونه ای از محتویات یک فایل اسمبلی از نوع COM اینجوری میشه :
کد:
.MODEL TINY
.CODE
.STARTUP
.386
MOV AH,9
LEA DX,mymsg
INT 21H
.EXIT
mymsg DB "Hello, This is a test."
END
دقت کنید که در فایلهای COM باید کدها و داده های شما در کنار هم و داخل یک سگمنت واحد باشند و پشته نداریم.
نمونه ای از محتویات یک فایل اسمبلی از نوع EXE اینجوری میشه :
کد:
.MODEL SMALL
.STACK
.DATA
mymsg DB "Hello, This is a test."
.CODE
.STARTUP
MOV AH,9
LEA DX,mymsg
INT 21H
.EXIT
END
دقت کنید که در فایلهای EXE ما هم سگمنت کد داریم و هم سگمنت داده و هم سگمنت پشته.
طریقه کامپایل کردن هر دو فایل یکسانه، کامپایلر از دستور MODEL برای فهمیدن نوع استفاده می کنه.
وقتی فایل اجرایی test.exe یا test.com ساخته شد آنرا به راحتی اجرا می کنید، تا پیغام زیر نمایش داده بشه :