This is an educational project providing structured Assembly language programming examples from basic to advanced levels. It covers core topics such as arithmetic, memory management, system calls, threading, floating-point operations, and optimization. The goal is to teach low-level programming concepts and best practices through practical examples.
The Assembly Language Documentation Project is a comprehensive educational resource designed to help learners understand and master assembly language programming. The project contains a wide variety of examples organized by technical domain rather than difficulty level, making it easier to find relevant examples for specific areas of interest.
This project was created by Rasya Andrean as an educational resource to help people learn assembly language programming through practical examples and comprehensive documentation.
- code-examples/ - All assembly code examples organized by category
- docs/ - All documentation, guides, and reference materials
- LICENSE - Project license information
- AUTHORS - List of contributors and project creators
The code examples are organized into specialized directories based on technical focus:
- basic/ - Fundamental Assembly programs (4 examples)
- intermediate/ - More complex constructs (3 examples)
- system-programming/ - System-level programming concepts (12 examples)
- embedded/ - Embedded systems programming (4 examples)
- performance/ - Performance optimization techniques (5 examples)
- debugging/ - Debugging and testing methodologies (3 examples)
- security/ - Security-focused examples (2 examples)
- hardware/ - Direct hardware interfacing (2 examples)
- networking/ - Network programming examples (1 example)
- applications/ - Complete applications (8 examples)
- algorithms/ - Algorithm implementations (3 examples)
- utils/ - Utility files and macros (4 files)
All documentation is organized in the docs/ directory:
- guides/ - Comprehensive guides and best practices
- references/ - Reference materials and cheat sheets
- tutorials/ - Step-by-step learning materials
- reports/ - Project development and completion reports
To use the examples in this project, you'll need:
- NASM assembler
- A linker (ld on Linux, MinGW ld on Windows)
- Basic understanding of computer architecture
# Navigate to the code-examples directory
cd code-examples
# Build all examples
make all
# Build specific categories
make basic
make intermediate
make system-programming
make embedded
# ... and so on for other categories
# Clean compiled files
make clean
# Get help
make help# Assemble (example)
nasm -f elf64 code-examples/basic/hello_world.asm -o hello_world.o
# Link
ld hello_world.o -o hello_world
# Run
./hello_worldREM Assemble (example)
nasm -f win64 code-examples/basic/hello_world.asm -o hello_world.obj
REM Link
ld hello_world.obj -o hello_world.exe
REM Run
hello_world.exe- Start with the basic examples to understand fundamental concepts
- Move to intermediate examples to learn about loops, arrays, and more complex data structures
- Explore specialized categories based on your interests:
- system-programming for OS-level concepts
- embedded for microcontroller programming
- performance for optimization techniques
- security for cryptographic operations
- hardware for device interfacing
- applications for complete programs
- Use the utils directory for helpful macros and utilities
We welcome contributions to this educational project! Feel free to:
- Add new examples
- Improve existing code
- Fix bugs
- Enhance documentation
- Suggest new topics or categories
Please open an issue or submit a pull request with your contributions.
See the AUTHORS file for a list of contributors to this project.
This project is licensed under the MIT License - see the LICENSE file for details.
The code is provided for educational purposes and is free to use and modify.