As a software developer, I realize that I have almost no idea about how the hardware actually works and how the interaction with software is achieved. I know, of course, some theory about computer architecture, but I still can't figure out how bits are represented in a hardware board or how a processor can do the things it does only using basic arithmetic operations.
Where could I learn about this stuff? Can you recommend any good course, videos or articles?
Possibly http://www.nand2tetris.org/.
Knuth's MIX & MMIX are the languages of TAcO.
MMIX section is a free downloadhttp://www-cs-faculty.stanford.edu/~uno/fasc1.ps.gz
More here: http://www-cs-faculty.stanford.edu/~uno/mmix.html