Assembly Language Adventures (1): Counting with two digits

The Binary numeric system
4.0 (77 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
6,043 students enrolled
Start Learning Now
  • Lectures 9
  • Length 2.5 hours
  • Skill Level Beginner Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 10/2014 English

Course 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 really 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 really just a bit). It is very important that you 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 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.

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.

Almost every video lecture is accompanied by some kind of exercise (You will be told during the lecture, don't worry :) ) The exercises are open source. They are attached here as a rar file, however you could also get them on github. (See "About this course" video for more information).

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.
  • You have an intel x86 processor. (If you don't know what you have then you have x86 processor, trust me).

For the tech savvy, some more details about the tools we are going to use in this course:

  • Assembly flavour: 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.

What are the requirements?

  • No prior knowledge is assumed.

What am I going to get from this course?

  • 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

Who is the target audience?

  • 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

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Intro

General information about the course: List of main subjects to be covered during this course, some technical details and some requirements for the course.

Section 2: Binary numeric system

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 discuss the subtraction operation, and also negative numbers, in the base 10 representation. We study how to invoke subtraction using only the addition operation.


We introduce the two's complement representation, which allows us to deal with signed numbers in base 2, just like we did previously in base 10.


We look at examples of signed addition, we deal with some exceptions regarding the two's complement representation, then we view a graphical representation of the positive and negative numbers in the two's complement, and finally we discuss some philosophy of representation.

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

xor pd, Low level technology training

xorpd is a technology training company, specializing in the low level aspects of technology. It is the destination for anyone that wants to really understand how things work, from the inside.

While many believe that some technologies are long lost gone, we believe that knowing how things really work is what gives you the edge, and help you become a top developer.

Assembly language programming was taught so far in ways that appeal to the experienced developer, however unreachable for the beginner. We put emphasis on creating material that is easy to learn and understand, even for the absolute beginner.

Ready to start learning?
Start Learning Now