Disclaimer: I'm not a programmer, and I'm really acting as a proxy to ask this question here :)
In old days, there was Peter Norton's Programmer's Guide to IBM PC. This book served as invaluable source of information for every person that wanted to write all things low-level. What book nowadays can be recommended as source of knowledge about low-level programming and general PC architecture knowledge? How CPU is built, how it is being used by operating system. Ideally it should be OS-agnostic, without dragging user into arcana of win32 or linux kernel specific.