Assembly Language Tutorial

Code & Transcript Here :

Logical Operators, Looping, Conditionals :

Functions & Stacks :

Support me on Patreon :

We’ll learn about Vim, Make, Adding, Subtracting and converting Decimals, Binaries and Hexadecimal numbers. As per Assembly Language we’ll learn about Registers, the Current Program Status Register, Receiving Input, Outputting Data to the Monitor, .global, MOV, SWI, ADD, SUB, MUL, MLA, Syscall, LDR, .text, .data, CMP, Branching and a whole lot more.

Thank you to Patreon supports like the following for helping me make this video


Joe Knowbody says:

Thank you so much for this extraordinary tutorial, very helpful, clean, clear. Awesome! Going to check out some more…

Weed says:

Such a powerful language

Tom B says:

In vim…

😡 == :rw

You’re welcome.


HekPH says:

Oh my god, I can’t understand anything.

Genopsyism Last says:

MIPS and ARM are not the same… I’m not correcting the content. Just writing this down in case others were confused (like I was). I was trying to learn Pi assembly from a MIPS Assembly book. They’re similar but different. R0 = $0 in MIPS and is read only. R0 – R12 in ARM are valid registers.

James Morrison says:

What would be a few good reasons to learn Assembly in 2017 ? For embedded hardware, etc? Or is it more for historical reasons?

Daniel Tate says:

in vim doesnt 😡 do the same as :wq ?

Bona Fide says:

“You press the keys without effect,
Your life is now a wreck.
What a waste! Such a shame!
And all you have is vi to blame.”

Luke Blevins says:

Can you please make a brand-new x86 Assembly Tutorial? Love your videos!

Jakob Lindskog says:

For anyone that needs to output a number greater than 255, look at this:

[sic] says:

Great tutorial! However, after I noticed your (what I call) “typewriter” pattern of speech (monotonous syllables followed by a higher pitch syllable to end the sentence) I couldn’t stop noticing it and it became irritating. Sorry, that’s just the truth, I don’t want to discourage you or complain because this was very useful.

Black Swan says:

For those of you who would rather use something more like Edit.. Try Joes editor aka jstar. Vim is so obtuse imho

Akagami Ng says:

Hi Derek, I’m required to implement Assembly Language into one of my assignments via SPIM simulator, I’m wondering would your tutorial 1 & 2 videos on this language able to help me in learning the basics concepts of this language?

Thanks, and I’m a big fan of your livestreams! 🙂

McFlækkeFupz says:

Why R7 and R0? I don’t understand the MOV thingy

dark wolf says:

found that !!!!!!! sir ! i love you

plezx29 says:

Hex is a base 16 I.e. 0-15 which is 16 numbers

CircularStopSign says:

“Of course you can use your arrow keys to bounce back and forth”… cringe

SplitTrix says:

I was expecting x86 assembly O_O

TripedalTroductions says:

So the code is saved as an object file when assembling it using “as -o” ? Is the -o option just to name it? I don’t exactly understand the purpose of adding that option.

ZloTip says:

Is there a way to try this on a pc? You stressed cheap in the beginning is it due assembler being able to dmg the hardware (I find it hard to believe but still will ask)?

Jeff Dunn says:


colloredbrothers says:

Its not entirely clear to me why 65 would be returned from that “function”… you only moved it into a registry… I don’t get it

sunnyhours84 says:

10:08 ….”By going load” ??
Isn’t ‘ld’ the linker?

Kristaps Sedols says:

Great tut! You helped me with Haskell and now doing the best for Assembly! ^_^
Unfortunately, I’ve run into a problem with makefile. For some reason I can’t make it compile. It gives me an error of “***missing seperator (did you mean TAB instead of 8 spaces?).” Tried with vim, nano, even Notepad++ through WinSCP. Does anyone have suggestions?

G4m3M4ni4c says:

You got subtraction wrong, you need to change the second number to a negative number in 2s compliment then add those two numbers together

Yannkabambi1 says:

For those who have a windows operating system, do we just follow along? Or do something else.

Pink Lady says:

I love your tutorials. You explain things so well, that I am learning fast from you.

Clnr0n05 says:

Just thought I’d share a faster way to convert from decimal to binary. I’ll use 126 like he did.
126/2 = 63 with a remainder of 0
63/2 = 31 with a remainder of 1
31/2 = 15 with a remainder of 1
15/2 = 7 with a remainder of 1
7/2 = 3 with a remainder of 1
3/2 = 1 with a remainder of 1
1/2 = 0 with a remainder of 1

Every time you divide, write your remainders somewhere else, going right to left. In this case you get 111 1110. It’s often beneficial to be able to write your numbers in groups of 4, so add 0 as need to the left. This gives you 0111 1110. Often times you don’t want the binary number itself though, since with 64 bit systems it starts to get unwieldy. Even 8 bits can be annoying to keep track of. You may want to convert that number to hex instead. Binary to hex (and vice versa) is extremely easy. Going right to left, grab 4 bits and convert them into their hex equivalent. In the case of 0111 1110, you’d get 0x7E.

The method I gave above for converting to binary also works well if you need to encode a fraction in binary, but instead of dividing you multiply. Take the number 0.125 for example. This is 1/8, which if you know binary conversions well you’ll know is 0.001 (I chose this number since it’s easy to prove).
0.125 *2 = 0.25 the whole number is 0
0.25*2 = 0.5 the whole number is 0
0.5*2 = 1.0 the whole number is 1

Going left to right this time, write out the number in the ones place (if it is a 1, discard it before you multiply next, you only multiply the fractional part). This gives you 0.001 Again, it’s beneficial to write it in groups of 4, so add 0s as needed on the right giving you 0.0010 This can also be converted into Hex the same way, just going left to right. This would give you 0.2 Combining this with the number from above you can take a number like 126.125 (that was not planned, but kind of funny, should have gone with .126 lol) and convert it into binary 0111 1110 . 0010 then into hex 0x7E.2 As for how useful converting a decimal number is, well I only needed to do it for an intro level class, but it’s interesting either way.

Hiungsin Sentosakarunia says:

Great tutorial, thanks!

Masoud Rad says:

Maybe a tutorial for Ubuntu intel assembly in the future?
Thanks in advance

 Write a comment


Do you like our videos?
Do you want to see more like that?

Please click below to support us on Facebook!