The Art of Assembly Language (Second Edition)
- ISBN: 978-1-59327-20
- Publisher: No Starch Press
- Publication Date: March 2010
- Pages: 732
- Price: £36.50
The Art of Assembly Language is not what I expected it to be. You’re not supposed to judge a book by its cover, and you should not judge a book by its title, either. The Art of Assembly Language does not focus upon teaching Assembly, and it doesn’t teach any advanced tricks which would elevate your programming skills to the level of an art-form. Instead, the book focuses on teaching High Level Assembly (HLA) from the ground up. This choice of language is a huge benefit to the novice Assembly programmer, but anybody already familiar with the language will not get much use from this book.
HLA is very different from pure Assembly; it has many standard libraries included and has high level control structures (which get converted to pure Assembly statements before compilation). This allows the book to start off teaching Assembly programming with high level control structures, which greatly simplifies the learning process by providing a gentler learning curve.
The Art of Assembly Language assumes the reader is already familiar with high-level programming languages (C and Pascal notation is used throughout). However, no knowledge of processor architectures (specifically the Von Neumann architecture, since the book covers 80x86 assemblers) is expected. The book gives a good lesson in how physical memory is allocated and occupied and how the stack functions. Everything that is hidden to high level programmers, but which is extremely important to Assembly programmers, is well explained. Unfortunately, in my opinion, all the diagrams illustrating the use of the stack are upside down. The convention used seems very counter-intuitive for a last-in-first-out system. An additional criticism I have is that I spotted a couple of mistakes in both text and example code.
For a book that is over 700 pages long, there is a lot of information that had to be missed out for space saving purposes. For example, any mention of behavior of 16-bit architectures gets you referred to the Internet. I would have also liked to have seen a “cheat sheet” list of instruction names/mnemonics and their full name rather than just the index, which contains entries such as “jnae, 419”. Would separating instructions into a separate index, with entries like “jnae, Jump if not above or equal (@c = 1), page 419” have been so difficult? There was however room for an, admittedly rather useful, ASCII character set listing.
In short, The Art of Assembly Language is a good book for teaching you the basics of Assembly through the use of HLA as Assembly ‘training wheels’, but don’t expect to become an Assembly artist.