ASM is basically direct computer language - it's as close to directly speaking to the processor as it gets. It's a highly recommended learn if you are serious about programming/computer science (you will learn a TON about how processors and I/O systems work.) It is, however, no longer really necessary with today's optimized compilers. It's only useful for short bits of code that aren't easily done in a high-end language like C++. Just learning all you will by learning it is worth it, however. Programming a whole program in ASM would be nearly impossible (especially for a window's program, or anything with a GUI,) unless it's a very short and sweet to-the-point program (It HAS been done, however, specifically for dos-based emulators where speed was essential.) While ASM used to boast very high performance compared to C++, as I said today's compilers make that difference negligible if at all, in fact if you aren't a genious with full knowledge of how to use processor specific optimizations such as MMX & SSE you'll probably have worse results for most types of programs written in ASM vs. C++ (AFAIK.)