مایکروسافت ماکرو اسمبلر

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
Microsoft Macro Assembler
توسعه‌دهنده(ها) مایکروسافت
انتشار پایدار ۱۱٫۰۰٫۶۰۶۱۰٫۱ / ۲۶ ژوئن ۲۰۱۳؛ ۵۴۵ روز پیش
سیستم‌عامل مایکروسافت ویندوز و ام‌اس-داس
گونه اسمبلر
پروانه 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

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  • مشارکت‌کنندگان ویکی‌پدیا، «Microsoft Macro Assembler»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۷ شهریور ۱۳۹۲).

پیوند به بیرون[ویرایش]