Die Bedieneroberfläche des MASM32-SDKs wird durch Aufruf des Programms qeditor.exe gestartet. Dies Programm ist ein Bestandteil des installierten Softwarepakets.
Das gesamte Softwarepaket besteht aus rund 2500 Dateien und ist netto etwa 80 MB groß.
Der MASM32-SDK lässt sich anpassen. Hinweise dazu liefert die Datei intro.txt im Grundverzeichnis des installierten Pakets.
Die im Softwarepaket mitgelieferten Dokumentationen und Anleitungen verwenden die englische Sprache.
Auffallend häufig beginnen Programmierlehrgänge mit einem Progrämmchen, das den Text „Hello World” auf dem Bildschirm anzeigt.
Die Bedieneroberfläche des MASM32-SDKs bietet hierzu eine nette Überraschung. Die im oberen Bild gezeigte Auswahl unter dem Reiter „Code” produziert genau ein solches Progrämmchen als Konsolapplikation.
Im Laufe der folgenden Bedienungsschritte wird man aufgefordert, den erzeugten Quellprogrammtext in einem wählbaren Unterverzeichnis unter einem wählbaren Dateinamen zu speichern. Der solcherart erzeugte Quellprogrammtext steht weiter unten auf dieser Webseite.
Wenn man anschließend den im Quellprogrammtext enthaltenen Hinweis „Build this console app with "MAKEIT.BAT" on the PROJECT menu” befolgt – gemeint ist der Reiter „Project” – sollte so etwas in einem zusätzlich Konsolfenster erscheinen:
Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: Versuch.asm *********** ASCII build *********** Datenträger in Laufwerk F: ist UL1 Volumeseriennummer: 27C1-16BD Verzeichnis von F:\masm32\Uebung 06.12.2013 10:27 886 Versuch.asm 06.12.2013 10:34 1.214 Versuch.obj 06.12.2013 10:34 1.536 Versuch.exe 3 Datei(en), 3.636 Bytes 0 Verzeichnis(se), 376.619.008 Bytes frei Drücken Sie eine beliebige Taste . . .
Der Textteil „Hello World” mit anschließendem Zeilenvorschub wurde durch den entsprechenden Befehl print "Hello World",13,10" erzeugt. Für „Press any key to continue ..._” ist der Befehl inkey zuständig.
Der Prozedurteil enthält die Befehle call, inkey, exit, cls, print und ret. Nur call und ret sind reine Assemblerbefehle. Bei inkey, exit, cls, print und exit werden gleichnamige Makros aufgerufen. Wo die Makros zu finden sind, enträtselt sich bei Untersuchung der mittels include eingebundenen Datei \masm32\include\masm32rt.inc.
; ----------------------------------------------------- include \masm32\include\masm32rt.inc ; ----------------------------------------------------- comment * ----------------------------------------------------- Build this console app with "MAKEIT.BAT" on the PROJECT menu. ----------------------------------------------------- * .data? value dd ? .data item dd 0 .code start: ; ----------------------------------------------------- call main inkey exit ; ----------------------------------------------------- main proc cls print "Hello World",13,10 ret main endp ; ----------------------------------------------------- end start
comment # Die Include-Datei für die MASM32 Laufzeitbibliothek Diese Datei vereinfacht den Einstieg in die Assembler-Programmierung, indem sie den gesamten Leistungsumfang der MASM32-Bibliothek, des Makrosystems und der Include-Dateien für Programmiervorhaben zur Verfügung stellt. Sie spezifiziert die Normalbedingungen für die Erstellung eines 32-Bit-Windows-Programms mit dem minimal erforderlichen Prozessor-Typ, dem Speichermodell und der erforderlichen Unterscheidung zwischen Groß- und Kleinschreibung. Die Include-Dateien sind in der korrekten Abfolge deklariert: Die Datei windows.inc Datei steht an erster Stelle. Es folgen statische Bibliotheken und Importbibliotheken für Windows API-Funktionen. Soweit es entsprechende Link-Bibliotheken für statische oder importiere Bibliotheken gibt, sind sie nach den Include-Dateien aufgeführt. Anmerkung: Es ist für Programmierer vorteilhaft, dass sie nach Erlangen eines entsprechenden Verständnisses an dieser Stelle ihren eigenen und somit besser angepassten Entwurf verwenden. # .486 ; create 32 bit code .model flat, stdcall ; 32 bit memory model option casemap :none ; case sensitive ; include files ; ------------- include \masm32\include\windows.inc ; main windows include file include \masm32\include\masm32.inc ; masm32 library include ; Windows API include files ; ------------------------- include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\Comctl32.inc include \masm32\include\comdlg32.inc include \masm32\include\shell32.inc include \masm32\include\oleaut32.inc include \masm32\include\ole32.inc include \masm32\include\msvcrt.inc include \masm32\include\dialogs.inc ; macro file for dialogs include \masm32\macros\macros.asm ; masm32 macro file ; libraries ; --------- includelib \masm32\lib\masm32.lib ; masm32 static library ; import libraries for Windows API functions ; ------------------------------------------ includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\Comctl32.lib includelib \masm32\lib\comdlg32.lib includelib \masm32\lib\shell32.lib includelib \masm32\lib\oleaut32.lib includelib \masm32\lib\ole32.lib includelib \masm32\lib\msvcrt.lib ; ------------------------------------------
.586 ; create 32 bit code .model flat, stdcall ; 32 bit memory model option casemap :none ; case sensitive .XLIST include \masm32\include\windows.inc ; always first include \masm32\macros\macros.asm ; MASM support macros ; include files that have MASM format prototypes for function calls ; ----------------------------------------------------------------- include c:\masm32\include\masm32.inc include c:\masm32\include\gdi32.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc include c:\masm32\include\shell32.inc include c:\masm32\include\msvcrt.inc include c:\masm32\include\debug.inc ;fuer debug ; Library files that have definitions for function ; exports and tested reliable prebuilt code. ; ------------------------------------------------ includelib c:\masm32\lib\masm32.lib includelib c:\masm32\lib\gdi32.lib includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\shell32.lib includelib c:\masm32\lib\msvcrt.lib includelib c:\masm32\lib\debug.lib ;fuer debug .LIST DBGWIN_DEBUG_ON = debugFT ;0 oder 1. 1 mit debug DBGWIN_EXT_INFO = debugFT ;0 oder 1. 0 0 ohne debug ; Konstanten ; ------------------------------------------------ bel equ 7 ;Klingel bs equ 8 ;Backspace ht equ 9 ;Horizontaler Tabulator lf equ 0ah ;Linefeed vt equ 0bh ;Vertikaler Tabulator ff equ 0ch ;Formfeed cr equ 0dh ;Carriage Return ctrlZ equ 1ah ;CTRL Z pipe equ "|" spc equ " " Ae equ 8eh ;Ä DOS-ASCII-codiert Oe equ 99h ;Ö Ue equ 9ah ;Ü ae equ 84h ;ä oe equ 94h ;ö ue equ 81h ;ü sz equ 0e1h ;ß .XLIST