مایکروسافت ماکرو اسمبلر (به انگلیسی: 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

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

منابع

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

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.