Aimed at seniors in high schools, first- and second-year college students, and anyone interested in understanding the principles and operation of digital computers at the assembly language level, this introductory text contains exactly the material I learned as a graduate student in a first course on computer organization and architecture in the early 1960s. Since then, I must have seen upwards of 50 books covering similar material.
The authors use a hypothetical computer, the CUSP, to illustrate programming concepts. A floppy disk containing the CUSP simulator comes with the book. It can be used with any IBM PC–compatible personal computer and is supported by MS-DOS. I did not get an opportunity to test this simulator.
The text assumes no prior knowledge of computers. Although Pascal code segments are used to illustrate some algorithms and control constructs, students not familiar with Pascal can skim those parts without paying a severe penalty. Not a single hardware diagram containing gates, flip-flops, registers, bus structures, timing diagrams, or the like is to be found in the book. This may be welcome news to hardware-phobes.
The essence of the book is the first eight chapters. Chapter1, “Data and Their Representation,” gives a brisk introduction to popular number systems and 2’s complement representation. Floating point representation gets a brief treatment. Chapter 2, “Computer Organization,” gives a brief description of the CUSP CPU, its register structure, and its instruction cycle. Chapter 3, “The Basic Instruction Set,” describes the addressing modes of CUSP. After describing the CUSP assembler in chapter 4, the authors devote chapter5 to indexing and its use in array handling. Stacks, subroutine calls, and parameter passing are the subject matter of chapter 6. Character manipulation is treated in chapter 7 and I/O in chapter 8. This brings one part of the book to a logical conclusion.
Chapters 9, 10, and 11 are sort of frills. Pointers and linked lists are explained in chapter 9, and recursive subroutines are treated in chapter 10. To give the reader a feel for a real machine, the authors describe the Intel 8086 in chapter 11. One can skip these three chapters and go on to Appendix A, “CUSP Machine Reference Manual,” and Appendix B, “The CUSP User’s Guide.”
Exercises appear at the end of each chapter, and AppendixF contains solutions to selected questions. The small bibliography at the end is adequate. In addition to the “General Index,” the book has a “Program Index” for ready reference to the programs on the disk. All in all, this well-written book on a well-defined subject area is easily readable, and a motivated high school student should be able to follow major chunks of the book. It can certainly be used as an introductory text in colleges.