We had to create a CPU and program it for my undergrad, assembly turned out to be really easy to learn. I also found it really easy to program in, and my first program had no errors on first run (how rare!), but I think that's because it forces you to break it down into really small chunks, plus it was just an RPN calculator, nothing fancy.
I did enjoy it, and even wrote a toy compiler for it.
I recently stepped through "Programming from the Ground Up", and found it very educational. It's aimed at the x86 processor on Linux, so it's still quite relevant.
I actually wouldn't mind learning assembly as a pet language :D