Microsoft Macro Assembler
aus Wikipedia, der freien Enzyklopädie
Der Microsoft Macro Assembler (abgekürzt MASM) ist ein von Microsoft entwickelter Assembler für x86-basierende Prozessoren. Er kompiliert prozessornah geschriebenen Programmquelltext in der Assemblersprache.
Der Microsoft Macro Assembler entwickelte sich zeitweise zum meistbenutzten Assembler für die Entwicklung von MS-DOS-Programmen. Er ist in aktuellen Versionen in der Entwicklungsumgebung Microsoft Visual Studio enthalten. Es gibt aber auch eine separate und kostenlose Download-Version, die jedoch kritisierte Einschränkungen bei der Nutzung der erstellten Programme beinhaltet.
Als kommerzieller Konkurrent zum Microsoft Macro Assembler behauptete sich besonders der Turbo Assembler von Borland. Als kostenlose und freie Alternativen sind beispielsweise die Programme Netwide Assembler und Flat Assembler bekannt geworden.
In der Aktuellen Version 9.0 werden folgende Befehlssätze unterstütz: x86-32/64, x87-fpu, MMX, 3DNow, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX. Seit der Version 8.0 gibt es zwei Ausgaben unter derselben Versionsnummer, eine für die x86-32 Archetektur und eine für die x64-64 Archetektur.
Inhaltsverzeichnis |
[Bearbeiten] Hochsprachen ähnliche Ausdrücke
MASM verfügt über Ausrücke wie man sie aus C kennt. Diese erleichtern die Programmierung und helfen den Quelltext übersichtlicher zu halten.
.while/.endw, .repeat/.until, .break, .continue , .if/.elseif/.else/.endif, invoke(entspricht void).
[Bearbeiten] Macros
Eine Besonders hervorstechende Eigenschaft von MASM ist, wie der Name schon erahnen lässt, das äußerst mächtige Makrosystem. Mit ihm ist es sowohl möglich Programcode zu erstellen, als auch Text zu verarbeiten. So ist es z.B. möglich damit C-Ausdrücke wie „switch“ zu generieren.
[Bearbeiten] Versionen
Der IBM Macro Assembler und der IBM Macro Assembler/2 waren OEM-Versionen des MASM. Obwohl MASM kein kommerzielles Produkt mehr ist, wird es Microsoft weiterhin unterstützt. Die letzte MASM-Version, welche als einzelnes Softwarepaket verkauft wurde, war die Version 6.11.
MASM Version | Datum | Produkt | Bemerkungen | |
---|---|---|---|---|
2.0 | 1984 | (Einzelprodukt) | für 8086/8087 | |
3.0 | 1984 | (Einzelprodukt) | ||
4.0 | 1986 | (Einzelprodukt) | ||
5.0 | 1987 | (Einzelprodukt) | ||
5.1 | 1988 | (Einzelprodukt) | OS/2-Unterstützung | |
6.0 | 1991 | (Einzelprodukt) | 32bit- und OS/2-Unterstützung | |
6.1 | 1992 | (Einzelprodukt) | mit Programmer’s WorkBench | |
6.11 | 1993 | (Einzelprodukt) | ||
6.11d | 19.09.1995 | Windows 98 Driver Developer Kit | 6.11d ist die letzte Version für DOS | |
6.12 | 27.08.1997 | (Update) | Unterstützung für Intel MMX-Instruktionen | |
6.13 | 05.12.1997 | (Update) | Unterstützung für AMD 3DNow!-Instruktionen | |
6.14 | 12.04.1999 | (Update) | ohne DOS-Extender | |
6.15 | 2000 | Visual C++ 6.0 Processor Pack | Unterstützung für SSE und SSE2 | |
7.0 | 2002 | Visual C++ .NET 2002 | ||
7.1 | 2003 | Visual C++ .NET 2003 | ||
8.0 | 2005 | Visual C++ 2005 | ab 8.0 zwei getrennte Versionen: x86-32(ml.exe) und x86-64(ml64.exe), SSE3/SSSE3 | |
9.0 | 2008 | Visual C++ 2008 | SEE4.1/SSE4.2 |
[Bearbeiten] Beispielprogramm
.686 .model flat,stdcall option casemap:none include windows.inc ; www.masm32.com include user32.inc ; include kernel32.inc ; ; includelib user32.lib ; includelib kernel32.lib ; StrA macro text:req ;macro IFNDEF some_cntr ; some_cntr = 0 ; ELSE ; some_cntr = some_cntr + 1 ; ENDIF ; ; IFNB <text> ; .data ; @CatStr(_stra_,%some_cntr) db text,0 ; .code ; % EXITM <OFFSET @CatStr(_stra_,%some_cntr)> ; ELSE ; echo: string required! ; EXITM <> ; ENDIF ; endm .code start: ;code invoke MessageBox,NULL,StrA("Hello World"),StrA("Say hello"),MB_OK ; invoke ExitProcess,NULL ; ; end start
[Bearbeiten] Weblinks
- Download MASM 8.0 (für Visual C++ 2005 Express Edition)
- Microsoft Macro Assembler Reference
- MASM32
- MASM32 Support-Forum