Updates

Latest Tweet



What's New?

Check out for latest innovation, a computer based training video collection


Like this Page

Professional Assembly Language (Programmer to Programmer) Review by Richard Bejtlich

The best book I could find to teach practical assembly language

I read Professional Assembly Language (PAL) by Richard Blum because I wanted to become somewhat familiar with assembly language. Books like "Introduction to 80x86 Assembly Language and Computer Architecture" by Richard Detmer or "Introduction to Assembly Language Programming: From 8086 to Pentium Processors" by Sivarama P. Dandamudi seemed too dense and textbook-like to meet my needs. PAL, on the other hand, appeared very practical and focused on getting readers working with assembly language early in the text. As long as you understand the nature of PAL and the author's goals, I think you'll enjoy reading the book as much as I did.

The first feature of PAL a reader should recognize is the author's use of AT&T syntax, rather than Intel syntax. I would much rather have preferred reading Intel syntax, since that is the format use in tools like IDA Pro. The author teachers AT&T syntax because he relies heavily on the GNU toolset, including gcc, as, gdb, and so on, and those tools natively show AT&T syntax. However, I was more interested in a solid introduction to assembly than the specific format, so I accepted this aspect of PAL. Second, PAL does not discuss assembly language programming for Windows. The book is Linux-focused, and given the level of the material (mainly introductory), I didn't think a lot of Windows-related information was needed. Finally, PAL is strictly a 32 bit, Intel platform book. Readers who want 64 bit or non-Intel platforms need to look elsewhere.

With these caveats in mind, I still really enjoyed reading PAL. I liked the author's approach, especially when he got the reader using tools and working with assembly early in the book. By around page 100 I was already understanding a lot of the assembly language sample programs, despite little to no previous experience. The author is a great teacher, with some explanations making a lot of sense (like the binary floating points on pp 183-4). He also helped me understand a lot of general Unix source code issues, such as various compiler optimization flags (in chapter 15).

I subtracted a star for the combination of caveats listed earlier (AT&T syntax, Linux-only, Intel 32 bit only) and for a frequent lack of line-by-line explanation of assembly examples. There's a LOT of assembly language in this book (a plus), but I would really like to see annotations of the code blocks. If the author were to write another edition, addressing these issues would definitely merit a five star review! I recommend anyone looking for an introductory text on assembly language read PAL.