Assembly Language is the best low-level language you can use with computers. Low-Level means the user is responsible for everything that happens, right from defining what one bit of data contains upto where it is passed.
Assembly language helps you to understand the internal working of the computer. It might speed up programs but the nowdays, optimized object code compilers have come which can produce equal or near equal best hand-written assembly code. It also helps you to write boot loaders, device drivers which cannot be done completely in assembly itself.
To understand assembly, it would be better if you know a few things beforehand.
How Program execution happens:Edit
1. Everything in computer is only 1 or 0s. You might have heard this many times before, but when you program in assembly, you will realize it. Whatever you do, you are just making some switches inside the computer to be in true or false; one or zero; on or off.
2. When a program is executed, the program code is taken from the hard disk and copied to RAM. After that, CPU begins to execute it. The program code in hard disk is 0 and 1's. These 0 and 1's have been defined in an order that makes them to do a whole lot of functions. That's why syntax is important in programming language.
3.The CPU does not distinguish data or instruction. The user have to make correct pointers to data and memory.
4. When computer starts, it begins to read specific area in RAM. The Operating System (OS) is the one which makes the correct jumps to program code. To understand better, let us consider an analogy:
When the bus starts from the bus depot in the morning, he drives to the control room where he is given the detail of that day's work he has to do. If the person doesn't give any instruction, he simply waits till he is told to do something.
You can observe the following points:
i. Bus driver doesn't determine where he has to go. He is given the instruction on what he has to do.
ii. The person at depot gives him instructions. He might give him a handout of instructions.
iii. Everyday, bus driver goes to the control room.
Bus driver - CPU, Person at depot - Operating System; Handout - Program.
Without the instructions, bus driver cannot do anything. Likewise, without further instructions , the CPU becomes idle. During boot time, CPU loads code at specific location in RAM. This can be modified by OS to make the location point to its code. Then OS, if it wants to execute program, makes CPU to point to the program code.