سلام به همگی
عموما کسایی که تازه اسمبلی یاد میگیرن تو نحوه اجرای کد و ساختن فایل اجرایی مشکل دارن . تو این تاپیک میخوام نحوه انجام این کار رو انجام بدم .
از فایل ضمیمه هم میتونید فایلهای مورد نیاز و برنامه نمونه رو دنلود کنید .
.
خیلی خب . ما یه برنامه ساده داریم که دوتا عدد رو از هم کم میکنه .
کد برنامه ما اینه :
;in the name of GOD
INCLUDE IO.H
DATA SEGMENT
MESSAGE1 DB 'ENTER A NUMBER',10,13,0
MESSAGE2 DB 'ENTER SECOND NUMBER',10,13,0
A DB 6 DUP(0),0
B DB 6 DUP(0),0
C DB 6 DUP(0),0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE , DS:DATA
START:
MOV AX,DATA
MOV DS,AX
OUTPUT MESSAGE1
INPUTS A,4 ;يک عدد دو رقمي دريافت کن
ATOI A
MOV BX,AX
OUTPUT MESSAGE2
INPUTS B,4
ATOI B
SUB BX,AX ;NUM1 = NUM1 - NUM2
;ADD BX,AX ;NUM1 = NUM1 + NUM2
ITOA C,BX
OUTPUT C
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
حالا ما میخوایم این سورس کد رو به فایل اجرایی تبدیل کنیم .
برای اینکار ما به فایلهای Masm.exe و Link.exe نیاز داریم .
فایل Masm.exe میاد سورس کد ما رو کامپایل میکنه و Object file اون رو میسازه ( اگه سورس کد اروری نداشته باشه باید یه فایل .obj ساخته بشه )
فایل Link.exe هم تبدیل فایل Object برناممون رو تبدیل به فایل اجرایی میکنه ( همون .exe ) .
نحوه استفاده هم به این صورت هست :
اسم سوس کد ما هست sub.asm بصورت زیر عمل میکنیم :
فایل Masm.exe رو اول اجرا میکنیم .
1.تو خط اول اسم سوس کدمون یا آدرس سورس کدمون رو مینویسیم . ( اگه فایلهای Masm,Link و سورس کد ما همه کنار هم هستن کافیه فقط اسم سورس کد رو بنویسیم اما اگه سورس کد ما تو یه پوشه دیگه هست باید آدرس کامل اون رو اینجا بنویسیم .
پس برای حالت اول مینویسیم :sub.asmاگه سورس کد ما تو یه پوشه دیگه هست اینطور باید بنویسیم : ( مثلا سورس کد من تو درایو سی تو پوشه asm هست ) .دقت کنید تو آدرس که دارید میدید حتما پسوند .asm رو قید کنید .C:\asm\sub.asm
2. تو خط دوم از ما میپرسه چه نامی برای فایل object میخوایم بزاریم .ما انتر میکنیم ( یعنی همون نام سورس کد رو بزار روش )3.تو خط سوم از ما میپرسه چه اسمی برای فایل lst میخوایم بزاریم . دوباره انتر میکنیم تا نام پیش فرض که نام سورس کد ما هست انتخاب بشه . (فایل lst توضیحات سورس کد ما رو در خودش داره - اگه اروری وجود داشته باشه تو این فایل بخوبی مشخص هست )4. تو خط چهارم هم از ما یک نام برای فایل crf میخواد که مثل بالا عمل میکنیم .حالا باید 4 فایل جدید کنار سورس کدتون ساخته شده باشه . بنام sub.OBJوsub.lst و sub.crf و sub.map
حالا باید فایل اجرایی رو بسازیم . برای اینکار Link.exe رو اجرا میکنیم .
- تو خط اول اسم فایل object که تو مرحله قبل ساختیم وارد میکنیم .(نکته رو بخونید)
- تو خط دوم هم یه اسم برای فایل اجرایی تازمون وارد میکنیم ( پیش فرض خودش نام سورس کد رو به اضافه .exe برای ما انتخاب کرده ) ما با زدن انتر نام پیشفرض رو قبول میکنیم .
- تو مرحله سوم و چهارم هم اگر از کتابخانه ای استفاده کردیم نامهای اون رو جلوی خطوط مربوطه مینویسیم . اگر استفاده نکردیم نیازی به نوشتن چیزی نیست .
- خب کار ما تموم هست و الان باید فایل اجرایی ما ساخته شده باشه
نکته :
اگر ما در برنامه مون از ماکروهای فایل IO.h استفاده کرده باشیم . حتما باید تو مرحله اول لینک وقتی که داریم اسم فایل object رو میدیم . اسم فایل آبجکت IO رو هم بدیم یعنی باید به این صورت عمل کنیم .
sub.obj+IO.obj
برای اینکه هر بار مجبور نباشیم برای دیدن یه تغییر کوچیک در کد کلی راه بریم تا خروجی بگیریم میتونیم از Batch file استفاده کنیم .
یعنی بیاییم همه کدهایی که بالا بصورت یکی بعد از دیگری میزدیم . یکدفعه بزنیم .
برای اینکار notepad رو باز میکنیم و توش به این صورت دستورات رو مینویسیم :
masm sub.asm,,,,
link sub+io,,,,
pause
خب حالا این فایل رو با نام "compile.bat" ذخیره کنید ( علامت نقل قول هم همراهش باشه ) .
حالا توضیح :
خط اول میاد به فایل Masm اسمهایی رو که میخواد میده . ( بین هر کاما که جلوی فایل masm نوشته میتونید یه اسم دلخواه بنویسید - اگه خالی بزارید مثل این میمونه که وقتی به اون خط رسیدید انتر زده باشید )
خط دوم هم میاد به لینک پارامترهایی که نیاز داره میده . دقت کنید که چون من در این برنامه از ماکروهای io.h استفاده کردم بجای نوشتن sub اومدم sub+io رو نوشتم .
pause هم مانع از بسته شدن پنجره میشه و اینطور شما میتونید ارورها و اتفاقات افتاده رو ببینید .
این فایل رو کنار بقیه فایلها قرار بدید و برای کامپایل کردن و ساختن فایل اجرایی کافیه این فایل رو اجرا کنید . یادتون باشه هر وقت تغییری تو سورس کدتون دادید اول اون رو ذخیره کنید و بعد این فایل رو اجرا کنید تا آخرین تغییرات سورسکدتون اعمال بشه (اینو گفتم چون خیلی ها فراموش میکنن ) .
(ورژن 6.11 مسم و 5.6 لینک هم جداگانه قرار دادم . آموزش و نحوه کار یکی هست . فقط اینکه تو این ورژنبا مسم باید از طریق cmd کار کنید یا از همون بچ فایل که بالا گفتم استفاده کنید . ورژن 6.11 خیلی بهتر از 5.10 هست و گیرهای کمتری موقع کامپایل میده )
موضوعات مشابه:
علاقه مندی ها (Bookmarks)