Home

PROC, ENDP, PROT, INVOLVE und APIs

MASM32 - Infoseite

MASM32 SDK (Windows Konsole):
Erste Bekanntschaft mit dem MASM32 SDK

Diese Webseite demonstriert die Leistungsfähigkeit des MASM32 SDKs. Zusätzlich führt sie in die Benutzung des MASM32 SDKs ein.

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 into.txt im Grundverzeichnis des installierten Pakets.

Bild: MASM32 SDK, Hauptfenster
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 . . .
Bild: MASM32 SDK, Konsolfenster „Hello World”Anschließen kann man - ebenfalls unter „Project” die unterste Anwahl „Run Program” auswählen. Die Belohnung ist links zu sehen.

Der Textteil „Hello World” mit anschließendem Zeilenvorschub wurde durch den entsprechenden Befehl print "Hello World",13,10" erzeugt. Für „Press any key do continue ..._” ist der Befehl inkey zuständig.


Das erzeugte Quellprogramm ist ein Vorlagengerüst („Template”) für Konsolapplikationen unter Windows. Die beiden mit .data und .data? markierten Bereiche enthalten noch keine Datendefinitionen. Der Prozedurteil ruft mit call main das eigentliche Programm auf. Abschließend fordert das Macro inkey zum Betätigen einer Taste auf. Dadurch wird erreicht, dass die weiter programmierte Textanzeige betrachtet werden kann. Ohne diese Aufforderung wäre das Fenster mit der Textanzeige blitzartig verschwunden - es sei denn, man hätte man das erzeugte .EXE-Programm in einem separaten Konsolfenster laufen gelassen.

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


Die Include-Datei \masm32\include\masm32rt.inc
Am Anfang des Assemblerprogramms wird mit include \masm32\include\masm32rt.inc die Datei masm32rt.inc aus dem Verzeichnis \masm32\include eingefügt. Ihr - telweise vom amerikanischen Englisch ins Deutsche übersetzter - Inhalt ist:
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

; ------------------------------------------

Letztes Upload: 30.03.2017 um 14:29:10