This is a standard x86 assembly language text. The first three chapters place assembly language in the spectrum of tools, discuss computer organization in general, and describe the Pentium architecture. Nine chapters are used to explain the assembly language and instruction set in detail. One covers assembly directives and data transfer instructions, another describes addressing modes, and each of the remaining seven is devoted to a class of instructions (integer arithmetic, control flow, bit manipulation, and so on). There are two chapters on interrupt handling, one on recursion, and one on the interface to high-level languages.
The preface claims that this edition covers “the assembly language of both CISC [complex instruction set computer] and RISC [reduced instruction set computer] processors,” but the RISC “coverage” is rudimentary: there is one chapter (24 pages) on the MIPS processor, one (36 pages) on the MIPS assembly language, one appendix (10 pages) on the SPIM simulator, and another (22 pages) listing the MIPS instructions. At slightly less than 15 percent of the total, this is not sufficient to allow an instructor to “select the assembly language that best fits his or her course.” For example, the chapters on interrupts, interface to high-level languages, and floating-point operations contain no mention of MIPS. Only the treatment of recursion provides programming examples from both machines. In my opinion, this material adds bulk, but no value.
I would regard this as a reference book rather than a textbook. Assembly language programming is not usually taught as a subject on its own these days, but rather is considered an adjunct to something else (computer organization, embedded systems, operating systems, or compiler construction). If students in such a course are going to write significant x86 assembly language programs, they need access to a deeper treatment of the subject, like the one given here.