مایکروسافت ماکرو اسمبلر
توسعهدهنده(ها) | مایکروسافت |
---|---|
انتشار پایدار | ۱۱٫۰۰٫۶۰۶۱۰٫۱
/ ۲۶ ژوئن ۲۰۱۳ |
سیستمعامل | مایکروسافت ویندوز و اماس-داس |
نوع | اسمبلر |
مجوز | Microsoft EULA |
مایکروسافت ماکرو اسمبلر (به انگلیسی: Microsoft Macro Assembler) یا MASM یک اسمبلر خانواده ایکس۸۶ برای سیستم عامل اماس-داس و مایکروسافت ویندوز است که از طیف گستردهای از امکانات ماکرو و برنامهنویسی ساختیافته، شامل تابعهای سطح بالا برای تشکیل حلقه و روالها، پشتیبانی میکند. مایکروسافت ماکرو اسمبلر از نسخهٔ ۸ به بعد شامل دو اسمبلر است که ML.EXE برای دادههای ۱۶-بیتی و ۳۲-بیتی و ML64.EXE برای دادههای ۶۴-بیتی استفاده میشود.
این اسمبلر توسط مایکروسافت عرضه شده ولی از نسخهٔ ۶٫۱۲ فروش آن به عنوان یک محصول جداگانه متوقف شد و به همراه کیتهای توسعهٔ نرمافزار و مفسرهای زبان سی این شرکت عرضه گردید. نسخههای اخیر MASM در بستهٔ نرمافزاری مایکروسافت ویژوال استودیو موجود است.
ابزارهای پشتیبان
[ویرایش]برخی از نرمافزارهایی که از مایکروسافت ماکرو اسمبلر پشتیبانی میکنند عبارتند از:
محیطهای یکپارچه توسعه نرمافزار
[ویرایش]اشکالزداها
[ویرایش]دیساسمبلرها
[ویرایش]- دیاسمبلر تعاملی IDAPro
دیگر اسمبلرهای سازگار
[ویرایش]اسمبلرهای زیر میتوانند بیشتر کدهایی را که برای مایکروسافت ماکرو اسمبلر نوشته شده به استثنای آنهایی که شامل ماکروهای پیچیده هستند را اسمبل کنند:
- توربو اسمبلر توسط بورلند عرضه شد و سپس به مالکیت امبارکادرو (به انگلیسی: Embarcadero) در آمد. آخرین بار در سال ۲۰۰۲ بهروزرسانی شد و برای چندین سال همراه با دلفی و سی++بیلدر عرضه شد.
- جیوسم ماکرو اسمبلر (به انگلیسی: JWASM Macro Assembler)
- پلز ماکرو اسمبلر (به انگلیسی: Pelle's Macro Assembler) که جزئی از محیط توسعه پلز سی (به انگلیسی: Pelles C) بود.
مثال
[ویرایش]برنامه 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
جستارهای وابسته
[ویرایش]منابع
[ویرایش]- ↑ «نسخه آرشیو شده». بایگانیشده از اصلی در ۱۸ اوت ۲۰۰۹. دریافتشده در ۲۹ اوت ۲۰۱۳.
- ↑ http://www.winasm.net/
- ↑ http://www.easycode.cat/English/index.htm
- ↑ http://www.codeproject.com/Articles/271627/Assembly-Programming-with-Visual-Studio-2010-2012
- ↑ http://www.ollydbg.de/
- مشارکتکنندگان ویکیپدیا. «Microsoft Macro Assembler». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۷ شهریور ۱۳۹۲.