مایکروسافت ماکرو اسمبلر - ویکی‌پدیا، دانشنامهٔ آزاد

Microsoft Macro Assembler
توسعه‌دهنده(ها)مایکروسافت
انتشار پایدار
۱۱٫۰۰٫۶۰۶۱۰٫۱ / ۲۶ ژوئن ۲۰۱۳؛ ۱۱ سال پیش (۲۰۱۳-26}})
سیستم‌عاملمایکروسافت ویندوز و ام‌اس-داس
نوعاسمبلر
مجوزMicrosoft EULA

مایکروسافت ماکرو اسمبلر (به انگلیسی: Microsoft Macro Assembler) یا MASM یک اسمبلر خانواده ایکس۸۶ برای سیستم عامل ام‌اس-داس و مایکروسافت ویندوز است که از طیف گسترده‌ای از امکانات ماکرو و برنامه‌نویسی ساخت‌یافته، شامل تابع‌های سطح بالا برای تشکیل حلقه و روال‌ها، پشتیبانی می‌کند. مایکروسافت ماکرو اسمبلر از نسخهٔ ۸ به بعد شامل دو اسمبلر است که ML.EXE برای داده‌های ۱۶-بیتی و ۳۲-بیتی و ML64.EXE برای داده‌های ۶۴-بیتی استفاده می‌شود.

این اسمبلر توسط مایکروسافت عرضه شده ولی از نسخهٔ ۶٫۱۲ فروش آن به عنوان یک محصول جداگانه متوقف شد و به همراه کیت‌های توسعهٔ نرم‌افزار و مفسرهای زبان سی این شرکت عرضه گردید. نسخه‌های اخیر MASM در بستهٔ نرم‌افزاری مایکروسافت ویژوال استودیو موجود است.

ابزارهای پشتیبان

[ویرایش]

برخی از نرم‌افزارهایی که از مایکروسافت ماکرو اسمبلر پشتیبانی می‌کنند عبارتند از:

محیط‌های یکپارچه توسعه نرم‌افزار

[ویرایش]

اشکال‌زداها

[ویرایش]

دیس‌اسمبلرها

[ویرایش]
  • دی‌اسمبلر تعاملی IDAPro

دیگر اسمبلرهای سازگار

[ویرایش]

اسمبلرهای زیر می‌توانند بیشتر کدهایی را که برای مایکروسافت ماکرو اسمبلر نوشته شده به استثنای آن‌هایی که شامل ماکروهای پیچیده هستند را اسمبل کنند:

مثال

[ویرایش]

برنامه Hello World برای سیستم‌عامل ام‌اس-داس (۱۶-بیتی):

.model small .stack 2048  .data message db "Hello, World!", '$'  .code main proc 	mov ax, @data 	mov ds, ax  	 	mov ah, 09h 	mov dx, offset message 	int 21h 	 	mov ax, 4c00h 	int 21h main endp 	end main 

معادل همین برنامه برای مایکروسافت ویندوز (۳۲-بیتی):

.386 .model small, stdcall .stack 4096  includelib kernel32.lib  STD_OUTPUT_HANDLE equ -11					; predefined Win API constant  GetStdHandle proto, 				; get standard handle 	nStdHandle:dword 					; type of console handle  WriteConsoleA proto,					 	; write a buffer to the console 	hConsoleOutput:dword,				 	; output handle 	lpBuffer:ptr byte,					; pointer to buffer 	nNumberOfCharsToWrite:dword,		 		; size of buffer 	lpNumberOfCharsWritten:ptr dword,	 		; ptr to number of bytes written 	lpReserved:dword					; (not used) 	 ExitProcess proto, 	dwExitCode:dword  .data message		db "Hello, World!"				; string to write bytesWritten	dw ? 		 			; number of bytes written  .code main proc 	invoke GetStdHandle, STD_OUTPUT_HANDLE			; returns console output handle to eax 		 	invoke WriteConsoleA, 		eax, 					; console output handle 		offset message,			 	; points to string 		13,					 	; string length 		offset bytesWritten, 		 		; returns number of bytes written 		0 	 	invoke ExitProcess, 0 main endp 	end main 

جستارهای وابسته

[ویرایش]

منابع

[ویرایش]
  1. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۱۸ اوت ۲۰۰۹. دریافت‌شده در ۲۹ اوت ۲۰۱۳.
  2. http://www.winasm.net/
  3. http://www.easycode.cat/English/index.htm
  4. http://www.codeproject.com/Articles/271627/Assembly-Programming-with-Visual-Studio-2010-2012
  5. http://www.ollydbg.de/

پیوند به بیرون

[ویرایش]