Assembly Language Adventures: Complete Course
- 29 hours on-demand video
- 2 articles
- 38 downloadable resources
- Full lifetime access
- Access on mobile and TV
- Certificate of Completion
Get your team access to 4,000+ top Udemy courses anytime, anywhere.Try Udemy for Business
- Learn to code on the x86 Architecture using Assembly Language
- Gain solid understanding about low level concepts.
- Understand how your computer works
- Become a tough person
General information about the course: List of main subjects to be covered during this course, some technical details and some requirements for the course.
Explaining the file explorer - The program we use to view files on our computer. We also discuss Total Commander, which I am going to use during this course.
Explaining the Hex Editor - A program that allows us to view the internal structures of files inside our computer. Specifically we discuss the HxD Hex Editor.
We discuss the idea of numeric bases, and specifically we take a look at base 10 and base 2. Finally we have some examples of addition and subtraction in base 2.
We introduce three ways to convert numbers between different numeric representations: Direct evaluation, Finding largest power and Remainder evaluation.
We discuss how to decide which conversion method to use in different cases, and also show a few examples of converting numbers between different bases.
We discuss the Hexadecimal base (Base 16), and show its special relation to base 2.
We answer the question: Why is every hex digit is represented by exactly 4 binary digits?
We introduce first_program.asm. This is our first program that actually has input and output. We take a look at the source code, and compare it to console.asm, the previous program. Later we try to assemble the program. For that task, we have to update the INCLUDE environment variable. Finally we run the program, and analyze the output of the program.
We introduce the CMP instruction, and the idea of comparing numbers. Then we discuss unsigned and signed comparison, and we introduce specialized instructions for unsigned and signed comparisons.
In this video we explain how to represent text strings inside our own assembly programs. We also introduce two schools of strings: Length prefix and Null terminated strings.
Subroutines are independent pieces of code. We explain the need for subroutines, and next we try to create our own subroutines using a simple JMP instruction. This first attempt is not so successful, but it prepares us for a more advanced idea of implementing subroutines, which we are going to see in the next lessons.
- No prior knowledge is assumed!
Learn Assembly Language
The x86 Adventures series teaches you your computer's language - x86 Assembly language, from scratch. No prior knowledge is assumed.
This is the full collection of x86 Assembly Adventures. It covers everything from the real basics to being an independent (and tough) x86 Assembly programmer.
Main topics covered:
The Binary System
The x86 Architecture
Intro to Flat Assembler
Signed and Bitwise Operations
Subroutines and the Stack
Reading the Manuals
Dealing with Windows API
Why learn x86 Assembly Language?
You are the kind of person who really likes to know how things work. In this course you are going to get solid understanding on how computer programs work from the inside.
Become a better programmer - Knowing how things work down there will help you take better decisions, even as a high level programmer. If you were always wondering what is the stack, or what are those pointers everyone talks about, you came to the right place.
Write faster code - When you really want to get the most of your processor, writing in raw Assembly is needed. We are not going to talk about optimizations in this course, however you will get a solid foundations so that you can continue exploring on your own.
You want to become a reverse engineer or a security researcher, read the code of viruses or look for software vulnerabilities. As most of the time the original source code will not be available to you, solid understanding of x86 Assembly Language is mandatory.
The course is made of video lectures. A lecture could be from a presentation, or a real world example, showing me doing stuff at the computer. Almost every video lecture is accompanied by some kind of exercise. The exercises are open source, and you can get them from github.
It is crucial that you complete the exercises. You will learn a lot from the lectures, but it is pretty much a waste of your time and money if you don't do the exercises. (Or at least verify that you know how to do them, if you are more experienced).
Course tech stack
No prior knowledge is assumed for this course, but I do assume some things regarding your system, so make sure that everything here describes you:
You are using a Windows operation system. (The course videos use Windows 7). It is recommended to use at least Windows XP. (This means it will work perfectly on Windows 7 and Windows 10).
You have an x86 processor. We study 32 bit x86, but this course will also work on 64 bit processors.
For the tech savvy, some more details about the tools we are going to use in this course:
Assembly flavor: x86 32 bits protected mode.
Assembler: The Flat Assembler (FASM)
Using Linux? Most of the exercises were ported to Linux, however the videos show me using windows 7. Please contact me if you are not sure.
- Absolute beginners
- Experienced programmers
- People who really want to know how things work
- Programmers who want to improve their skills
- Programmers who want to write faster code
- Anyone who wants to get into the reverse engineering or security industry