The Assembly programming language can be painful, not only the learning process, but keeping it up i.e. keep programming with assembly. Personally, I like the assembly programming language, because it allows the inner geek inside me to master i386 machines, and do a lot of funny things at the low-level.
Assembly is not only about writing the code and telling the Central Processor Unit (CPU) what to do, it is a lot more. To master assembly, one needs to master mathematics (to a level), hexadecimals (0-F), the binary language, and the understanding of bits and bytes.
So why should one learn the assembly programming language?
This question is interesting, and receives many different answers based on who answers it. Assembly is not usually needed these days, especially, when we have all of these free choices of high-level programming languages that build on the Object-Oriented Programming (OOP) principles.
To better master the knowledge of different parts of the computer machine, the assembly language can be worth learning. Some companies that produce PC games use some assembly to deal with graphics. Other companies use it for other purposes, like building Real-Time Operating Systems (RTOSs) which are deployed in various industries to control robots.
Since assembly is a low-level programming language, developers, engineers, and programmers in general have a better understand of what’s happening at the low-level thanks to the assembly.
In conclusion, if you feel and think that the assembly programming language is something for you to learn, go ahead by no means. However, if you think “this is nothing for me”, then please do not waste your time learning it.
Intel Architecture Software Developer’s Manual
Volume 1 , Intel Basic Architecture: Order Number 243190 , PDF, 2.6 MB.
Volume 2 , Instruction Set Reference: Order Number 243191 , PDF, 6.6 MB.
Volume 3 , System Programing Guide: Order Number 243192 , PDF, 5.1 MB.
I highly recommended that you download the above manuals and use them as a reference.