See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Microsoft Macro Assembler – Wikipedia

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


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -