A few notes on assembly:
First, "assembly" is not a language; it is a group of languages. For example, assembly for x86 processors is only vaguely related to assembly for embeded chips which is only vaguely related to other dialects of assembly.
Second, assembly still has uses! Assembly is the easiest way I've found to take advantage of 3dNow!/SSE instructions, which are very important to modern procesors.
Third, assembly is not any faster than any other language. For example, x86 assembly can be much slower than the equivalent C code if you turn on optimizations in your compiler. It's all in how you use it.
Fourth, EVERY programmer should learn some form of assembly. Until you actually get down to the nitty-gritty of running instructions one at a time it's hard to understand costs associated with various operations. If you want a good intro, check out Randall Hyde's
Art of Assembly.