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

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

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

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

محیط‌های یکپارچه توسعه نرم‌افزار 
 RadASM
 WinAsm Studio
 EasyCode
 Visual Studio

اشکال‌زداها 
 OllyDbg

دیس‌اسمبلرها 
 دی‌اسمبلر تعاملی 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

جستارهای وابسته 
 زبان اسمبلی
 رداسم
 نت‌واید اسمبلر

منابع

پیوند به بیرون 
 راهنمای رسمی مایکروسافت ماکرو اسمبلر
 دانلود نسخهٔ غیررسمی MASM32

ابزارهای برنامه‌نویسی برای ویندوز
ابزارهای توسعه نرم‌افزار مایکروسافت
اسمبلرها
نرم‌افزار
نرم‌افزارهای داس
نرم‌افزارهای ۱۹۸۱ (میلادی)