Assembler or Assembly language is certainly one of the most powerful programming languages
available to software developers. It allows one to code in (almost) the same language
microprocessors speak and therefore gives maximum execution speed and smallest binary size.
Also it is most effective when it comes to accessing/managing hardware and system resources.
For Embedded systems developer it is simply a must since several key components of Linux kernel
image (head, piggy, etc) and bootloader are written in architecture specific assembly language.
Personally I started digging into assembler after several years of writing code in C/C++ and Java
and that experience with high-level programming languages gives me the reason/right to say that
Assembler is the best language for system level programming and it has also become my favorite.
That said it is only natural for me to start Assembler programming section on my web site.
And first page is dedicated to basics of NASM or Netwide Assembler: NASM ABC
Second part of NASM tutorial: NASM file operations with system calls