PDA

View Full Version : ماکرو در اسمبلی



raha2007
شنبه 24 فروردین 1387, 08:49 صبح
با سلام
من خیلی از موضوعات رو مطالعه کردم ولی چیز مفیدی در مودر ماکرو ها در اسمبلی پیدا نکردم.
میشه در مورد این که ماکرو ها چی هستند و چه جوری کار میکنن یه کم به من اطلاعات بدین.
ممنون میشم.

hoax3r
شنبه 24 فروردین 1387, 12:04 عصر
ماکرو ها مجموعه دستوراتی هست که توسط برنامه نویس تعریف میشه
برای اینکه هم حجم کدنویسی کمتر بشه و کدها خانایی بیشتر داشته باشه
این مثال رو ببینید، این ماکرو کارش پاک کردن صفحه نمایش و بردن مکان نما به مکان 0و 0 هست (برای محیط 16 بیتی)



Clrscr MACRO
pusha
mov ax,0600h
mov cx,0
mov dx,184Fh
mov bh,7
int 10h
mov ah,2
mov bh,0
mov dx,0
int 10h
popa
ret
Clrscr ENDM


حالا هر بار تو برنامه بخوایم از این کد استفاده کنیم کافیه اینو وارد کنید



Clrscr


لبته ماکروها قابلیت گرفتن آرگومانت هم دارن مثل این ماکرو که یک کاراکتر رو چاپ میکنه



PUTC MACRO char
PUSH AX
MOV AL, char
MOV AH, 0Eh
INT 10h
POP AX
ENDM


و به این صورت اسنفاده میشه



PUTC 'a'


فقط تفاوتی که بیت ماکرو و رویه ها هست اینه که شما اگه 10 بار از یک ماکرو استفاده کنین
موقع کامپایل هر جا که از ماکرو استفاده شده با کدهای تعریف شده جایگزین میشه در نتیجه
حجم فایل اجرایی رو زیاد میکنه ولی رویه ها اینتور نیستن.

برای اطلاعات بیشتر در مورد استفاده ماکرو در محیطهای 16 بیتی اینجارو ببینید :


http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_10.html


برای محیطهای 32 بیتی بسته masm32 رو از سایت زیر بگیرید و راهنما ها شو مطالعه کنید
آخرین نسخه ای که تو این صفحه معرفی شده ورژن 9 هست ولی ورژن 10 beta هم هست که
فقط تو فرومهاشون معرفی کردن بد نیست اونجا هم سر بزنید. و اگه خاستین اونم دانلود کنید


http://www.masm32.com


شاد باشید

raha2007
شنبه 24 فروردین 1387, 12:13 عصر
hoax31عزیز از این همه لطفت ممنونم.
خیلی کمکم کرد.