Code & Transcript Here : http://goo.gl/j0tgfS
Logical Operators, Looping, Conditionals : http://goo.gl/adUwyw
Functions & Stacks : http://goo.gl/bmPsYT
Support me on Patreon : https://www.patreon.com/derekbanas
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
https://www.facebook.com/cottageindustriesbuild/
@kyleaisho
@thetwistedhat
vjFaLk
Amazon Auto Links: No products found.
Thank you so much for this extraordinary tutorial, very helpful, clean, clear. Awesome! Going to check out some more…
Such a powerful language
In vim…
😡 == :rw
You’re welcome.
😉
Oh my god, I can’t understand anything.
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.
What would be a few good reasons to learn Assembly in 2017 ? For embedded hardware, etc? Or is it more for historical reasons?
in vim doesnt 😡 do the same as :wq ?
“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.”
Can you please make a brand-new x86 Assembly Tutorial? Love your videos!
For anyone that needs to output a number greater than 255, look at this:
https://gist.github.com/MrYakobo/27b7f1dc456bcbdf0d2046aff89a6a66
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.
For those of you who would rather use something more like Edit.. Try Joes editor aka jstar. Vim is so obtuse imho
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! 🙂
Why R7 and R0? I don’t understand the MOV thingy
found that !!!!!!! sir ! i love you
Hex is a base 16 I.e. 0-15 which is 16 numbers
“Of course you can use your arrow keys to bounce back and forth”… cringe
I was expecting x86 assembly O_O
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.
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)?
🙂
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
10:08 ….”By going load” ??
Isn’t ‘ld’ the linker?
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?
You got subtraction wrong, you need to change the second number to a negative number in 2s compliment then add those two numbers together
For those who have a windows operating system, do we just follow along? Or do something else.
I love your tutorials. You explain things so well, that I am learning fast from you.
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.
Great tutorial, thanks!
Maybe a tutorial for Ubuntu intel assembly in the future?
Thanks in advance