Skip to main content
\(\newcommand{\doubler}[1]{2#1} \newcommand{\binary}{\texttt} \newcommand{\hex}{\texttt} \newcommand{\octal}{\texttt} \newcommand{\prog}{\texttt} \newcommand{\lt}{ < } \newcommand{\gt}{ > } \newcommand{\amp}{ & } \)


I would like to thank the many students who have taken assembly language from me. They have asked many questions that caused me to think about the subject and how I can better explain it. They, and the students who follow, are the main reason I have written this book.

Three students deserve special thanks, David Tran, Zack Gold, and Jim O'Hara. They used my previous book in a class taught by Mike Lyle at Santa Rosa Junior College, David in Fall 2010, Zack in Fall 2011, and Jim in Fall 2013. All three caught many of my typos and errors and gave me many helpful suggestions for clarifying my writing. I am very grateful for their careful reading of the book and the time they spent providing me with comments. I hope what they taught me has carried over to this book.

I wish to thank Richard Gordon, Lynn Stauffer, Allan B. Cruse, Michael Lyle, Suzanne Rivoire, and Tia Watts for their thorough proofreading and critique of my previous book. By teaching from that book they have caught many of my errors and provided many excellent suggestions for clarifying the presentation. Again, I hope their suggestions have carried over to this book. Michael Lyle, Suzanne Rivoire, and Allan B. Cruse deserve special thanks for encouraging me to write this version for the Raspberry Pi.

I probably would not have written this book without the tireless work and incredible personal help from the contributors to MathBook XML (, most notably Robert A. Beezer. Development is hosted on GitHub with 90% of the commits from Rob Beezer. Alex Jordan has made about 10% of the commits, with about a dozen others chiming in. David Farmer is known in the group for his HTML and CSS advice and is developing a program to convert to MathBook XML, and one of Rob Beezer's students, Michael DuBois, did much of the Javascript. They responded almost immediately to my suggestions of features that would be nice for a computer science textbook by adding the feature. They also encouraged me to continue my work on the book and provided very helpful suggestions to improve it. Working with them is very enjoyable and is as much a part of creating this book as writing the content.

I very much appreciate the work of those who volunteer their time to develop and maintain the free software I used to create this book: GNU, Linux, , etc. Special thanks go to Dwight Aplevich for his Circuits Macros; most of the figures in the book were created with them. Please join me in thanking these people for keeping the cost of the book so low.

In addition, I would like to thank my partner, João Barretto, for encouraging me to write this book and putting up with my many hours spent at my computer.

Finally, I am sure there are typos and errors left in this book, even with all the feedback I have received from students and colleagues and my efforts to correct what they found. But I hope it is in good enough shape that you will find reading the book relatively comfortable and that it will provide you some insight into how computers are organized.