This book is intended to be used in a first course in assembly language programming for
Computer Science (CS) and Computer Engineering (CE) students. It is assumed that students
using this book have already taken courses in programming and data structures, and are
competent programmers in at least one high-level language. Many of the code examples in the
book are written in C, with an assembly implementation following. The assembly examples
can stand on their own, but students who are familiar with C, C++, or Java should find the C
examples helpful.
Computer Science and Computer Engineering are very large fields. It is impossible to cover
everything that a student may eventually need to know. There are a limited number of course
hours available, so educators must strive to deliver degree programs that make a compromise
between the number of concepts and skills that the students learn and the depth at which they
learn those concepts and skills. Obviously, with these competing goals it is difficult to reach
consensus on exactly what courses should be included in a CS or CE curriculum.
Traditionally, assembly language courses have consisted of a mechanistic learning of a set of
instructions, registers, and syntax. Partially because of this approach, over the years, assembly
language courses have been marginalized in, or removed altogether from, many CS and CE
curricula. The author feels that this is unfortunate, because a solid understanding of assembly
language leads to better understanding of higher-level languages, compilers, interpreters,
architecture, operating systems, and other important CS an CE concepts.
One of the goals of this book is to make a course in assembly language more valuable by
introducing methods (and a bit of theory) that are not covered in any other CS or CE courses,
while using assembly language to implement the methods. In this way, the course in assembly
language goes far beyond the traditional assembly language course, and can once again play
an important role in the overall CS and CE curricula.
1