I was not prepared to like this book. As I read it through three times, however, I became more and more convinced that it contains a wealth of valuable information about computers and computing that would make an excellent second course in computer science. So much for judging a book by its cover!
My original fears were based on prejudices that a book about personal computers--computers that are normally purchased not from a corporate salesperson but from a retail store--would be superficial and not sufficiently academic. This view has been turned around because the author has written a thorough, well-organized, and highly readable book. Further, the object of study--assembly-language programming on an IBM microcomputer--is sufficiently simple to be a good pedagogical tool, but sufficiently complicated to support a discussion, at least at an introductory level, of computer software and hardware systems in general. For students whose early programming experience is on safe computers and protective environments, this book--and a course derived from it--should serve to demystify the world of computing.
The book goes into detail on characteristics of commercial microcomputer software. Two obvious problems that could arise are that it could soon be obsolete and that it could be insufficiently general to be widely usable. Although I have not verified such details, and the former could still occur, the latter does not appear to be an issue. The book presents details as examples of concepts, not as a cookbook substituting for a vendor’s manual.
Going beyond the rudiments of assembly programming, chapters address systems software, peripherals and I/O handling, and other such introductory operating systems concepts. These chapters round out the purely programming material and make this a good book about computing and computer systems. Finally, the book has good exercises, both “Analytical Exercises” and “Programming Projects.” These are essential for a good text, and the author has not failed us here.