مایکروسافت ماکرو اسمبلر - ویکیپدیا، دانشنامهٔ آزاد
توسعهدهنده(ها) | مایکروسافت |
---|---|
انتشار پایدار | ۱۱٫۰۰٫۶۰۶۱۰٫۱ / ۲۶ ژوئن ۲۰۱۳ |
سیستمعامل | مایکروسافت ویندوز و اماس-داس |
نوع | اسمبلر |
مجوز | 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». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۷ شهریور ۱۳۹۲.