March 10, 2025
Lesson: Introduction to Assembly Language for Windows 11
Overview
Assembly language is a low-level programming language that provides direct control over a
computer's hardware. It is specific to a processor architecture and is commonly used for system
programming, performance-critical applications, and reverse engineering.
Windows 11 supports assembly programming primarily through x86 and x86-64 architectures
using assemblers like MASM (Microsoft Macro Assembler), NASM (Netwide Assembler), and
FASM (Flat Assembler).
Prerequisites
• Basic knowledge of computer architecture
• Installation of MASM or NASM
• A text editor (such as Notepad++ or Visual Studio Code)
• A Windows 11 machine with an x86 or x86-64 processor
Setting Up Your Development Environment
1. Install MASM: MASM comes with Microsoft Visual Studio. To use it:
o Download and install Visual Studio.
o Open Developer Command Prompt and use ml.exe to assemble programs.
2. Install NASM:
o Download NASM from https://www.nasm.us/ link:
https://www.youtube.com/watch?v=xyCQ8O9bRXU
o Add NASM to the system PATH for easy execution.
3. Use a Text Editor: Write assembly programs in a simple text editor and save them with a
.asm extension.
Basic Assembly Syntax
Assembly language programs consist of sections:
• .data: Defines data variables.
• .code: Contains the executable instructions.
• .stack: Defines stack memory.
NASM vs. TASM vs. MASM
NASM (Netwide MASM (Microsoft
Feature TASM (Turbo Assembler)
Assembler) Macro Assembler)
Developer Open-source community Borland Microsoft
Platform Cross-platform (Windows, Primarily DOS and
Windows
Support Linux, macOS) Windows
Supports MASM-
Uses Intel-style syntax with Uses Intel syntax,
Syntax compatible syntax and
strict segmentation supports macros
ideal mode
Preferred for modern Mostly used for legacy Used for Windows
Usage
assembly development DOS applications system programming
Object File Supports multiple formats Primarily OMF and DOS Supports COFF, OMF,
Formats (COFF, ELF, Mach-O, etc.) EXE and 64-bit formats
Works well with GCC for Was commonly used with Works with Visual
Integration
linking Borland C++ Studio
No longer actively Actively maintained by
Availability Actively maintained
developed Microsoft
Which One to Use?
• Use NASM for modern assembly development on Windows 11 and Linux.
• Use TASM only for legacy DOS applications or historical research.
• Use MASM for Windows-specific system programming and integration with Microsoft
tools.
Here is a simple "Hello, World!" program using MASM on Windows 11.
Steps to Compile and Run:
1. Open Developer Command Prompt.
2. Assemble the code: ml /c /coff hello.asm
3. Link the object file: link /subsystem:console hello.obj
4. Run the executable: hello.exe
Using NASM on Windows 11
Another example using NASM:
Steps to Compile and Run:
1. Assemble: nasm -f win32 hello.asm
2. Link: gcc hello.obj -o hello.exe
3. Run: hello.exe
Addition Sample Program
2. Simple Subtraction (NASM)
3. Looping Example (MASM)
4. Printing a Number (NASM)
Assignment:
Activity 1: Basic Arithmetic Operations
Write an assembly program that takes two numbers as input, adds them, and displays the
result.
Activity 2: Loop Implementation
Create a program that prints numbers from 1 to 10 using a loop in assembly language.
Activity 3: String Manipulation
Write a program that takes a user-input string and prints it in reverse order.
Conclusion
This lesson introduced basic assembly programming for Windows 11, focusing on setting up
MASM/NASM and writing a simple "Hello, World!" program. Further lessons can cover system
calls, arithmetic operations, and interaction with Windows APIs.