- 3m
- 3m
- 3. Your first hello world program 14m
Mastering 64-bit Assembly Language Programming with NASM and C Integration
About this course
Unlock the power of low-level programming and learn how computers truly execute your code.
In this comprehensive course, you’ll master x86-64 Assembly Language step by step using the NASM assembler, while also learning how to interface Assembly with the C programming language for real-world applications.
We’ll begin with the absolute basics — installing NASM, setting up your environment, and writing your first “Hello World” program. From there, you’ll explore the fundamentals that drive every CPU:
How registers, memory, and the stack actually work
The MOV, JMP, CALL, and RET instructions explained in detail
Conditional logic and comparison with CMP, JE/JNE/JG/JL
Mathematical operations — ADD, SUB, MUL, DIV
Floating point operations
As your understanding grows, you’ll learn to mix Assembly with C building functions, exchanging data, and accessing pointers, arrays, and structures directly at the hardware level.
You’ll even learn how to create full 64-bit programs that call and return values across language boundaries, just like modern compilers do.
By the end of this course, you’ll be able to:
Write and debug 64-bit Assembly programs from scratch
Understand how compilers translate high-level code into Assembly
Build mixed C and Assembly projects that run on Linux or Windows
Perform arithmetic and floating-point operations at the register level
Optimize low-level code for performance and precision
Whether you’re an operating-system developer, compiler engineer, embedded programmer, or simply curious about how software really works beneath the surface — this course will give you a deep, practical understanding of Assembly language and how it drives everything else in computing.
What you'll learn
- How to write and debug 64-bit Assembly programs from scratch
- Understand how compilers translate high-level code into Assembly
- Build mixed C and Assembly projects that run on Linux or Windows
- Perform arithmetic and floating-point operations at the register level
- Optimize low-level code for performance and precision
Who this course is for
- People who want to learn how machines work
- Software Engineers who want to become experts at low level programming
- System engineers
Requirements
- Basic C programming experience is recommended
Curriculum
28 Lessons • 5h 8m estimated learning time- 4. Assembly Language Execution Flow Explained 6m
- 5. What are registers 17m
- 6. MOV instruction 5m
- 7. JMP instruction 4m
- 8. What is the stack 19m
- 9. Call and ret instructions 8m
- 10. CMP Compare instruction and conditional jumps JE, JNE, JG, JB Instructions 6m
- 11. Mathematical instructions add, sub, mul, div 27m
- 12. Assembly Language Generated By C Full Tutorial 24m
- 13. Simple test program 26m
- 14. Mixing C with Assembly Code - Building a SUM function in assembly and calling from C 5m
- 15. Copying memory to another location using RDI and RSI 8m
- 16. Accessing C pointers from assembly 13m
- 17. Accessing C structures from assembly 14m
- 18. Accessing C arrays from assembly 6m
- 19. GUI Programs In Assembly Language 26m
- 20. Calculator program 14m
- 21. Floating point numbers 18m
- 22. 32-bit assembly programs development overview 4m
- 23. 32 bit assembly calling a C sum function example 7m
- 24. 32 bit assembly creating a sum function 8m
- 25. 32 bit assembly accessing C pointer function arguments 8m
- 26. 32 bit assembly accessing C structures passed by value 12m
- 27. 32 bit assembly accessing C structures passed by value that have alignment requirements 6m
- 28. 32 bit assembly floating point operations 11m
- 4.90 instructor rating
- 18 courses
- 1,418 students worldwide
Daniel McCarthy
Daniel McCarthy is a seasoned software engineer, boasting an impressive career spanning over 14 years in the industry. Holding a Master's Degree in Advanced Computer Science from Cardiff Metropolitan University, his broad spectrum of experience encompasses everything from web development to complex compiler and interpreter development.
Daniel has honed his skills in bootloader and kernel development. In testament to his proficiency in the field, he has designed two proprietary programming languages: Craft, a general-purpose language, and Marble, a web-focused language akin to PHP. Moreover, he has successfully developed compilers for the C programming language.
A testament to his versatility, Daniel demonstrates proficiency in an extensive list of programming languages that includes C, C++, Java, x86 Assembly language, PIC assembly, SQL, PHP, HTML5, JavaScript, CSS, and of course, his own creations, Craft and Marble.
His professional portfolio also includes the development of Linux kernel modules, a task he has executed with proficiency in a professional context. Currently, Daniel is channeling his wealth of experience and expertise into the education sector, with the aim of nurturing the next generation of professional software engineers.
Student reviews
The difference between asm 32 and asm 64 is clear for me now, as well as essentials of Assembly language itself. Thank you !