Book

https://github.com/brianrhall/Assembly

Assembly Programming and Computer Architecture for Software Engineers is an educational examination of Assembly programming and computer architecture. We approach these topics from a practical point of view, addressing why and how questions throughout the text. We begin by laying the foundation of computer language and computer architecture, and then delve into Assembly programming as a mechanism for gaining a better understanding of computer architecture, and how Assembly can be used for software development.

Most existing books on computer architecture have one or more of the following disadvantages: (1) based on a non-mainstream architecture; (2) written for computer and electrical engineers as opposed to computer scientists and software engineers; (3) focused on a single platform-specific development environment; (4) over-priced; and (5) lacking in practical content. We wanted to give our students something better.