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

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

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

این اسمبلر توسط مایکروسافت عرضه شده ولی از نسخهٔ ۶٫۱۲ فروش آن به عنوان یک محصول جداگانه متوقف شد و به همراه کیت‌های توسعهٔ نرم‌افزار و مفسرهای زبان سی این شرکت عرضه گردید. نسخه‌های اخیر 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

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

منابعویرایش

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