Joined: 04 Mar 2003
|Posted: Thu Jan 01, 2004 11:54 pm Post subject: Book Review - The Art of Assembly Language
The Art of Assembly Language
Author(s): Randall Hyde
Publisher: No Starch Press
Book Specifications: Soft-Cover, 903 pages
User Level: Intermediate/Advanced
Suggested Publisher Price: $59.95 USA/ $89.95 CAN/ £39.59 Net UK (inc of VAT)
Amazon.co.uk: The Art of Assembly Language
Amazon.com: The Art of Assembly Language
Info from Back: "Assembly language is easier than ever, thanks to modern development tools and ‘The Art of Assembly Language’. After a decade of rigorous end-user testing of the online version, ’The Art of Assembly Language’ is an indispensable reference for using assembly to write powerful programs and solve real-world problems. Hyde has updated his book to include the latest in 32-bit x86 architecture, as well as the High Level Assembler (HLA), a revolutionary tool that leverages your knowledge of high level programming languages like C/C++ and Pascal/Delphi to streamline your learning process.”
When it comes to the world of programming assembly language is arguably the most difficult, and arcane one to learn. The other side of the coin is that it is also one of the most powerful out there. It comes as no coincidence that most exploit code is written in assembly. This is due to several reasons. One of the primary ones being that it is very compact as well as inherently fast. Up until not that long ago many computer games were written in assembly language for some of the aforementioned reasons.
One of the other reasons that this language is appealing as well is that you are as close to the actual machine language as possible when using assembly. By virtue of actually understanding assembly, and if possible programming in it this will by extension give you a far greater understanding of the computers architecture. Programming in this language is not for the faint of heart though as it will require a lot of effort in not only absorbing the syntax, but also in gaining a deeper understanding of how the computer itself actually works as well. Those who will gain the greatest benefits from reading this book are those who already have as indicated by the author have an understanding of a high level language. Lastly for people like myself who want to increase their knowledge of exploit code analysis then this book and topic are very much required reading. For to look at and analyze shell code you must understand what it is you are looking at.
Content & Overview
Every facet of the assembly level language is covered in this book and then some. Things begin at the very beginning with the introductory chapter showing off the ubiquitous “hello world” program in asm. Also seen in this important chapter are what registers are and how they fold into each other as it were. Though only the most used registers are covered, all are mentioned. Chapter one of this book is of note for it is here that the building blocks are laid out for the reader. Covering such things as the four most used registers like eax, ebx, ecx, edx, ebp, and esp among others.
Seen in chapter two are various numbering systems, and bit structures such as bytes and nibbles. What all these are and what they mean are covered, as well as their equivalent relationships to each will become clear. It is after these two introductory chapters that the meat of the book starts. Shown in detail is memory access, what it means, how it works, and how to do it are all shown here. This to me is one of the most important parts of this book and assembly language programming. It is at this stage that a lot of various concepts start to crystallize in your mind.
Each and every chapter are very much essential to know and learn in this book. Some are more then others though depending upon your educational background. If you had a strong math track while in school then several of these chapters will be easy reading for you. Another very informative part of this book is chapter four which deals with constants, variables, and data types. These are all gone over in detail as to how they relate to programming. Assuming you have experience, which you pretty much need, in a high level language then this will be a refresher for you. Topics such as variables, pointer, arrays among other core programming concepts are covered in this chapter.
Gone over in detail as well are low level control structures and how they impact assembly programming. It should be noted though that the HLA compiler will translate these control structures into true machine language for you. This will save having to learn absolutely everything about assembly at once. One of the sexiest parts of assembly is covered in this book as well. That being bit manipulation or “bit twisting” as some exploit coders, and reverse engineers call it. It is one of the best known features of asm, and one of the ones that separates it from the rest of the programming languages. The list of chapters is extensive so please click here for a listing of the chapters.
Style and Detail
As an overall text on assembly language this book does an admirable job. It does not assume the reader has an eidetic memory for all the things relating to coding. To this end it includes many key chapters on number systems, arithmetic, and on the 80x86 cpu itself. The coverage of the x86 system is excellent and not overly done. Befitting a book on programming, and especially one on assembly language there are many code snippets detailing exactly what the author is trying to convey at that given time. This as all aspiring programmers know is key. An example, which is clear and concise is worth 10 pages of explanation.
Included as well with the book is a cdrom which has the HLA, and HLA standard library on it. Also included is all the source code shown in the book, and all told over 50,000 lines of well documented code. It should be noted though that this book is not true ASM as it were, but rather assembly taught using HLA which leverages one's knowledge of a high level language such as C. The two are not overly dissimilar (true ASM and this book using HLA) so you will still learn a great deal by reading it.
The author's writing style is clear and concise without being needlessly verbose. There is a great deal of sample code included in the book itself which is used to illustrate the points at hand. Where required there are also diagrams which are used to display visually some key learning points. Various letter fonts are also used to clearly display the difference between various subject matter.
Overall this books rates very favorably as a one stop shop for all your assembly programming needs. It serves not only as a guide to learn how to program in assembly but it will also serve as a handy reference for some time to come. Should you be coming to this language with previous experience in C or some other high-level language then simply use the very well detailed table of contents to best use your study time. You would be hard pressed to find a better book on assembly out there. Though as mentioned briefly above you need to be aware that is not pure ASM as it were. It is more a hybrid version of it, which will take advantage of your present high level progamming language experience. Even with that in mind it is an excellent book.
This book gets an SFDC 8/10 from me
Keywords for this post: The Art of Assembly Language
This review is copyright 2004 by the author and Security-Forums Dot Com, and may not be reproduced in any form in any media without the express permission of the author, or Security-Forums Dot Com.
Last edited by alt.don on Wed Jan 07, 2004 5:15 pm; edited 1 time in total