Assembly languages vary wildly between different processors and it is the sub-title of this book, 'Programming with DOS and Linux', that tells the reader they will be learning about the 8086 and later derivatives.
The first edition of this book was printed in 1992, a time when computing resources were so scarce that extracting every last cycle out of your processor was everything. Nearly ten years later, Moore's Law has seen the power of our computers grow exponentially and the emphasis has shifted from tight executables to maintainable source code. Given this background, one is left wondering why anybody would want to program a powerful computer in assembly language except for the shortest and most critical sections. Assembly language still has a place, but its place is now almost exclusively in embedded systems where every cycle still counts, not in the overgrown behemoths we now call desktop PCs.
Jeff Duntemann starts by teaching assembly language programming under DOS, almost certainly because that is what was available when the first edition of the book was written. The later chapters covering Linux concentrate mostly on the differences between DOS programming and Linux programming, assuming that you are by then familiar with the actual assembly language side of things.
It is obvious throughout the book that Jeff is a Pascal fanatic, with frequent comments, particularly in the Linux section, extolling he virtues of Pascal over C. This is especially evident in the section when he is explaining how to leverage the power of the standard C library used by all Linux systems from within his own programs.
Given the purpose of learning assembly language is to write even faster programs, I find it strange that Mr Duntemann insists on using C-calls to
scanf()for input and output and he even ignores the dangers of using raw
scanf(). I certainly got the impression that the C-library was used because it was easier than working out how to do input and output directly from assembly language and that Jeff Duntemann's preference towards Pascal meant that he was not as familiar with the C-library as perhaps he should be. There is, of course, also the irony of calling C-routines from within assembly language code!
Overall the book is technically quite good, I am just left wondering who would gain from reading it. I personally still write in assembler from time to time as part of my work, however I would never dream of coding on a PC in it. I guess the PC platform is widely available and this may explain why you would want to produce this book, but 80386 assembler is somewhat more complex than most assembly languages I've used (65xx, 68xx, 8051, ARM) and I would say is not ideal for a novice. Couple that with the scarcity of DOS machines and this book looks dated before you start. Ten years ago this book would have been excellent, but now it is hard to see it as anything but a relic from the past. Not recommended.