Assembly Language Adventures (1): Counting with two digits
The Binary numeric system
What you’ll learn
Assembly Language Adventures (1): Counting with two digits
- Understand how the binary system work
- Learn how to add and subtract binary numbers
- Learn how to convert between different numeric systems
- Understand how to deal with negativity and negative binary numbers
Requirements
-
No prior knowledge is assumed.
Description
Learn Assembly Language
The x86 Adventures series teaches you your computer’s language – x86 Assembly Language, from scratch. No prior knowledge is assumed.
[Part 1] Counting with two digits
This is the first chapter of x86 Assembly Adventures. Here we begin with the real basics – How to live in the binary system – A system where instead of 10 digits, we have only two: 0 and 1. If you have ever seen all those zeroes and ones in movies – this is what we are going to learn here.
Don’t worry if you never liked math at school, if you can figure out how to buy stuff at the grocery shop, I assure you that you are going to understand the ideas presented here.
We will mainly discuss the following subjects:
- Adding and subtracting numbers in the binary representation.
- Converting between decimal (The “normal”) numbers, and binary numbers.
- Dealing with negative binary numbers.
At this part of the course, we will not yet see any actual assembly code. We have to learn this first, so please be patient :). All of the exercises for this part are mostly theoretic. You have to sit down with a pen and paper and think a bit. (But just a bit). You must do the exercises, or at least be sure that you know how to answer everything before you move on to the next part.
Why learn x86 Assembly Language?
- You are the kind of person who likes to know how things work. In this course, you are going to get a solid understanding of 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 want to get the most out 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 foundation 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 source code will not be available to you, a solid understanding of x86 Assembly Language is mandatory.
Course structure
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.
You must 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
- You are using a Windows operation system. (The course videos use Windows 7). It is recommended to use at least Windows XP.
- You have an intel x86 processor. (If you don’t know what you have then you have an x86 processor, trust me).
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)
- Debugger: WinDbg.
Using Linux? Most of the exercises were ported to Linux, however, the videos show me using windows 7. Contact me if you are not sure.
Who this course is for:
- People who 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
Add Comment