Man, my whole Microprocessors course used Assembly and machine code. Low-level languages like that are actually pretty great. You don't need to compile them because your 1's and 0's are directly affecting the chips. Not to mention that it was really fun to dictate to a microphone when writing it. (The microphones in the computer lab are notoriously insensitive, so whenever anyone dictates anything they have to shout.)
"A! C! C! A!"
ONE! ONE! ZERO! ONE!" (13)
"ONE! ZERO! ZERO! ZERO! ONE! ZERO! ONE! ONE ONE!" (279)
"A! D! C! A!"
(turns off microphone)
"WOOHOO! 292!"
Heh when me and my lab partners were making the final tests for the MIPS we had designed we noticed it was just easier to remember where we were in the code if we spoke it out loud. Must have been interesting to listen to us blathering out 32 bit instructions in ones and zeros as we were inserting them into the simulators instruction memory. Then we came upon the eureka moment that you could just use hex to write numbers in Xilinx instead of actually writing 16 bit long immediate fields :p
But yeah, assembly is a hell of a lot easier to keep track of than what we did before. "addiu $t1, $t1, 5" versus 00100101001010010000000000000101 ($t1 is register 9 in this architecture).
EDIT: The person who thought of using $ signs should be shot though... it requires the damn alt key to be typed (atleast on swedish keyboards.)