I found myself wanting to explain one or two things to the authors after reading just the first few pages of this book. Chapter one is an introduction to PC architecture. Unfortunately this chapter contains some errors that are perhaps merely oversimplifications, such as claiming that all PCs contain Intel CPUs. The rest of the introduction covers basicbinary maths, followed by an example architecture in chapter two. Sadly the author neglects to cover the fundamental aspects of modern superscalar architectures, pipelining, branch prediction or the fact that from the Pentium onwards the Intel chips have had parallel U and V pipelines, to name but a few.
The next few chapters on the other hand provide quite a good introduction to assembler programming on the x86 and derivative architectures. My only criticism of this section is the sole use of MASM, which is a commercial package, whereas for a book published in 1998 there where freeware assemblers available, one of which should have been on the included floppy discs.
Skipping to the final chapters of the book the authors go to great length explaining how assembler is faster than C, yet not pointing out that one should always check one's algorithms first, never mind the fact that in today's time of superscaler, pipelined architectures compilers are getting better and better, while it is getting harder and harder to hand optimise assembler. A less important issue is perhaps the fact that the C code is K&R based, not ISO and littered with things the members of comp.lang.c would crucify one for.
In conclusion I'll probably make space for it on my bookshelf as the Appendixes are fairly reasonable reference sections; however I hope no one does as they suggest and uses it to teach PC architecture.