The Elements of Computing Systems, Second Edition
Buy this book if you're a programmer who wants to know how computers work.<p>I read the first edition in high school, and if I had to choose either this book or my entire undergrad CS education, I'd pick this book.