**Assembly = machine code**  
Some people keep harping on about how assembly language is different from the numeric codes that the CPU understands.  
This (whilst true) completely misses the point.    
As far as translation goes assembly language and the numeric (binary, hex whatever) are one and the same thing.  

**Grok it or drop it**  
If you grok assembly you know how an actual computer works.  
grokking assembly involves  

- [Learning the instructions][1] and what they mean (duh).  
- Understanding what the instruction do, [what they **don't** do and all their side-effects][2].   
- Learning how a CPU processes the instructions
  - How the pipeline works.  
  - What `multiscalar` means  
  - What a CPU core is.  
  - How the cache works.  
  - Understanding how to cycle count  
  - learning [the teachings of Agner Fog][3]    
- Understanding how compilers generate code and how they fail at times.  
- Optimizing well defined and very specific problems.  

If you grok assembly you well have a nearly complete picture of how the CPU connected to your keyboard works.   
You need to use this knowledge like a brain surgeon uses his scalpel.  

**Don't need no stinking abstractions**   
Unless you grok assembly (and thus the CPU on the operating table) you will never be free of the clutches of the abstractions of the RAM machine (or god forbid the turing machine _the horror_).   

**L33t Hax0r 5k1llz**  
Assembly also helps to you understand how the 133thax0r manages to defeat the protection schemes. (Q: [why does ASLR not work][4]? [because `mov rax,fs:[28h]` breaks it][5]).  

**The 0.1%**  
It is not the knowledge of assemby that matters, but knowledge of the machine your working on that matters.  
If you want to know the machine, you must understand it and that means speaking the language of the machine.  

  
If you don't then you're stuck with the abstraction.  
That's science and that's good, but that's never the complete picture.  

It's like learning to speak [Xhosa][6]   
Unless you aim for guru level, best stick with what you know, those [clicks will complicate your life][7].  

Because it's fun.  



  [1]: http://www.duntemann.com/assembly.html
  [2]: https://github.com/jagregory/abrash-zen-of-asm
  [3]: http://www.agner.org/optimize/
  [4]: https://en.wikipedia.org/wiki/Address_space_layout_randomization
  [5]: https://www.soldierx.com/tutorials/Stack-Smashing-Modern-Linux-System
  [6]: https://en.wikipedia.org/wiki/Xhosa_language
  [7]: https://www.youtube.com/watch?v=GvlN13NH0tc