I will try to port source code from Randy Hyde's book "The Art of Assembly Language", Windows 32-bit Edition to MASM source code in this topic. I think there are many good examples of code from this valuable book although the source code from this book use HLA  :P.
I hope you could give me a hand here too!
Any contribution (comment, advice, optimization, fix, tip, source code etc.) is really appreciated  :D.

The electronic edition of "The Art of Assembly Language Programming", Windows 32-bit Edition:
Art of Assembly Language Programming and HLA by Randall Hyde
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/www.artofasm.com/Windows/index.html
Posted on 2011-11-08 14:51:35 by bolzano_1989
I will update the list of source code in this post.
List of Source Code
HelloWorld, 1_01HelloWorld.hla => 1_01HelloWorld.asm
DemoVars, 1_02DemoVars.hla => 1_02DemoVars.asm
Posted on 2011-11-08 14:52:26 by bolzano_1989
1_01HelloWorld.hla
program HelloWorld;

#include( "stdlib.hhf" )

begin HelloWorld;



stdout.put( "Hello, World of Assembly Language", nl );



end HelloWorld;


MASM:
1_01HelloWorld.asm
; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

;                 Build this with the "Project" menu using
;                       "Console Assemble and Link"

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

    .486                                    ; create 32 bit code
    .model flat, stdcall                    ; 32 bit memory model
    option casemap :none                    ; case sensitive

    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 \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc

  ; ------------------------------------------------
  ; Library files that have definitions for function
  ; exports and tested reliable prebuilt code.
  ; ------------------------------------------------
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib

    .code                       ; Tell MASM where the code starts

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

start:                          ; The CODE entry point to the program

    print chr$("Hello, World of Assembly Language",13,10)
    exit

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

end start                       ; Tell MASM where the program ends
Posted on 2011-11-08 14:53:06 by bolzano_1989
1_02DemoVars.hla
Program DemoVars;
#include( "stdlib.hhf" );

static
    InitDemo:      int32 := 5;
    NotInitialized: int32;

begin DemoVars;

    // Display the value of the pre-initialized variable:

    stdout.put( "InitDemo's value is ", InitDemo, nl );

    // Input an integer value from the user and display that value:

    stdout.put( "Enter an integer value: " );
    stdin.get( NotInitialized );
    stdout.put( "You entered: ", NotInitialized, nl );

end DemoVars;


MASM:
Could you improve my code please  :D ?
1_02DemoVars.asm
; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

;                Build this with the "Project" menu using
;                      "Console Assemble and Link"

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

    .486                                    ; create 32 bit code
    .model flat, stdcall                    ; 32 bit memory model
    option casemap :none                    ; case sensitive

    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 \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc

  ; ------------------------------------------------
  ; Library files that have definitions for function
  ; exports and tested reliable prebuilt code.
  ; ------------------------------------------------
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib

.data
  InitDemo  dd  5                          ; 32 bit value initialised to 5
 
.data?
  NotInitialized dd ?                            ; Uninitialised single 32 bit space
  str1 dd ?                            ; a string handle for the input data

    .code                      ; Tell MASM where the code starts

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

start:                          ; The CODE entry point to the program

    print chr$("InitDemo's value is ")
    print str$(InitDemo)
    print chr$(13,10)
    mov str1, input("Enter an integer value: ")
    mov NotInitialized, sval(str1)        ; convert the result to a signed integer
    print chr$("You entered: ")
    print str$(NotInitialized)
    print chr$(13,10)
    exit

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

end start                      ; Tell MASM where the program ends
Posted on 2011-11-08 14:53:58 by bolzano_1989
Basically, the author Randy Hyde, tried to implement Object Oriented Asm using MASM BEFORE he wrote HLA - he found that MASM is quite limited (deficiencies in the macro engine, mainly) and decided to create a "preprocessor" that emits MASM-compliant sourcecode.

Your goals are skewed.

Historical note, after he failed and went his way, a guy called Byterider wrote a full MASM based object oriented language using MASM macro engine, found ways around many of its limits - at the time I was a fan of another guy who was doing similar work, but he politely asked me to leave it alone since he "wanted to go commercial" (what happened to him?) Well I became #2 developer of ObjAsm, because there was nowhere else to go, except HLA, at that time.. not that I don't think you are a legend Randy, you opened my eyes!
Posted on 2011-11-09 04:00:51 by Homer
I'll just mention that, the last I knew, there was a "-source" switch to HLA, which you needed to use if you wanted "real" source code instead of just a list of "db"s. I don't know if that would be any help or not. Good luck!

Best,
Frank

Posted on 2011-11-09 04:44:26 by fbkotler