MASM 32-bit Windows Assembler
Channel: veganaiZe
Date: 2020-12-01

Up and running with MASM in Windows: To "Hello World" and beyond!

0:02:12 - Protect your system by running inside a virtual machine.  
0:02:40 - ReactOS - free & open source windows clone.  
0:03:49 - VirtualBox - free & open source virtualization.  
0:07:13 - MASM 8.0 download.  
0:08:27 - MASM32.  
0:12:44 - ANSI / ASCII "narrow" vs. "wide" Unicode functions.  
0:17:49 - Win32.chm help file.  
0:29:36 - Keep it simple with standard portable c library.  
0:31:30 - Headers / includes / declarations.  
0:34:50 - Windows types (ie. dwords).  
0:35:52 - LLP 64-bit arch.  
0:37:19 - Windows handles.  
0:39:31 - Using the Win32 API reference.  
0:43:23 - Intel 386 programmer's manual.  
0:45:10 - 32-bit vs. 16-bit registers / segmentation.  
0:47:59 - Agner Fog's assembly optimizations.  
0:49:47 - Overview of assemblers.  
0:54:38 - AMD developer manuals.  
0:58:04 - AMD optimization guide.  
1:02:48 - VirtualBox window view modes & shortcut (host/ctrl) keys.  
1:06:27 - Jeff Huang's windows assembly tutorial.  
1:07:27 - Starting example.  
1:08:55 - Essential MASM directives.  
1:13:48 - .inc include/header files.  
1:14:16 - Inside include files.  
1:16:30 - Add bin\ folder to PATH.  
1:16:58 - ML.exe version [/?].  
1:17:36 - Extracting ML 8.0.  
1:23:04 - Type and equate details.  
1:26:15 - masm32.inc / masm32.lib.  
1:29:42 - invoke & addr.  
1:31:50 - Saving source files (in ANSI format).  
1:32:50 - Assembling at the command line.  
1:33:37 - The results of my removing `option casemap :none` blunder.  
1:35:23 - Manual declarations instead of .inc files.  
1:38:47 - puts() instead of StdOut.  
1:40:13 - Calling conventions.  
1:42:08 - OMF vs. COFF object formats.  
1:42:35 - Name mangling: stdcall & c.  
1:43:05 - Explanation of ML command line.  
1:43:15 - Explanation of linking .obj to .exe.  
1:43:44 - Running 'Hello World!' program.  
1:44:44 - Searching win32.chm api help index.  
1:45:30 - Symbolic constant values.  
1:46:16 - Microsoft's online MASM docs.  
1:47:39 - Making code readable with symbolic constants.  
1:48:39 - Replacing invoke with push & call.  
1:55:35 - ADDR vs. OFFSET.  
1:57:50 - Object format and linking in MASM 6 & 8.  
1:59:50 - User32.dll and MessageBox.  
2:05:44 - Pushing parameters to the stack.  
2:08:40 - Oops! Wrong order! (should be right-to-left).  
2:09:44 - Defining (static / c-style) string data.  
2:11:30 - Window console ownership.  
2:12:47 - MASM feature focus.  
2:15:44 - Wide character strings & api calls.  
2:17:32 - Intel little-endian byte ordering.  
2:22:15 - Box drawing characters (wikipedia).
2:25:36 - MASM32 help files & extra apps overview.  
2:29:16 - Register preservation convention.  

1) Introduction to 32-bit (x86) MASM: https://www.youtube.com/watch?v=q3wXjk0KnZ4&list=PLBD9magMUlvzd3GHvsxbDnRksuNCHxQ3H&index=1
2) Convert real windows in C to MASM: https://www.youtube.com/watch?v=ebr0cb8Z7h4&list=PLBD9magMUlvzd3GHvsxbDnRksuNCHxQ3H&index=2
3) Creating a macro for wide strings: https://www.youtube.com/watch?v=Lci9CRHR39U&list=PLBD9magMUlvzd3GHvsxbDnRksuNCHxQ3H&index=3
4) String operations & optimizations: https://www.youtube.com/watch?v=579xFnlAla8&list=PLBD9magMUlvzd3GHvsxbDnRksuNCHxQ3H&index=4
5) File & memory management in Win32: https://www.youtube.com/watch?v=X0PWV3bGGy8&list=PLBD9magMUlvzd3GHvsxbDnRksuNCHxQ3H&index=5

https://github.com/veganaize/ASM/blob/main/X86/x86-32/Windows/MASM  
  
• Github repo: 
https://github.com/veganaize/ASM/tree/main/X86/x86-32/Windows/MASM 
• MASM32: 
http://www.masm32.com/
• INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986: 
https://css.csail.mit.edu/6.858/2015/readings/i386.pdf
• Jeff Huang's Windows Assembly Programming Tutorial: 
https://doc.lagout.org/operating%20system%20/Windows/winasmtut.pdf
• Agner Fog's Optimizing Assembly: 
https://www.agner.org/optimize/
• AMD64 Architecture Programmer's Manuals and Optimization Guide: 
https://developer.amd.com/resources/developer-guides-manuals/
•  Microsoft Macro Assembler (MASM) 10.0 (via PSDK 7.1): 
(32-bit Installer) http://web.archive.org/web/20230611103919/https://download.microsoft.com/download/F/1/0/F10113F5-B750-4969-A255-274341AC6BCE/GRMSDK_EN_DVD.iso
(64-bit Installer) http://web.archive.org/web/20230611103722/https://download.microsoft.com/download/F/1/0/F10113F5-B750-4969-A255-274341AC6BCE/GRMSDKX_EN_DVD.iso
• JWasm (MASM compatible):
https://www.japheth.de/JWasm.html