Assembler is the most low-level programming language there is. But this is also assemblers strength.
Because of the low level, you can control everything that happens in your program, as opposed to C/C++ where you can't control 100% how the compiler handles the code you write. Sometimes you can write 10 lines of code in assembler, where a compiler would make over 300.
But still writing assembler code takes much longer than writing C/C++ like code, so what you gain in speed in assembler you loose in programming time.
When you code in assembler, your code has to be different, according to which processor your coding to, so assembler is also the least portable of all coding languages.