I am very interested in learning how to hack in relation to hardware and software and the integration/interfacing between the two of them. Does anyone know of some great resources which would help out such as books or website and also is there any advice people would give?
Im not exactly sure what your wanting to hack but I think what your wanting to hack is something like the CLI which is the virtual machine that code runs on top of (your code --> CLI --> 1001010101). As for hacking that im not sure how you would go about it but your essentially hacking a kernal so I would go look at gray-box testing methodologies and then poke around a kernal and see if you can't hack it despite windows being closed scource I belive that the CLI for .net is an ecma standard (meaning you can look at all the code) and linux is open scource so you can have fun with that. for a challenge I would try to this kind of a hack on a phone as you would have to use more black-box methods. im not sure if this what your looking for but it seems pretty close.
It may not be precisely what you're looking for but it's a great introduction to hardware/software collaboration and the Arduino platform takes a lot of the headache out of the assembly code for a way to get your feet wet fast.
Once you've mastered the Arduino, you can dive deeper into the field.