The Art of Assembly Language

The Art of Assembly Language
Authors
Randall Hyde
ISBN
1593272073
Published
15 Mar 2010
Purchase online
amazon.com

Assembly is a low-level programming language that's one step above a computer's native machine language. Although assembly language is commonly used for writing device drivers, emulators, and video games, many programmers find its somewhat unfriendly syntax intimidating to learn and use.Since 1996, Randall Hyde's The Art of Assembly Language has provided a comprehensive, plain-English, and patient introduction to assembly for non-assembly programmers.

Page 2 of 2
  1. Editorial Reviews
  2. Customer Reviews

Customer Reviews

JusKett said
The author seems adamant that learning assembly using HLA is the best way to go. He is entitled to his opinion. I only wish the title of the book made this explicit.

I am an experienced programmer looking to learn x86 assembly.
(1) When you run WinDbg on executable code and encounter a crash, the debugger displays x86 assembly, NOT HLA. The fact that there are several chapters in this book dealing with HLA before one comes across a pure x86 assembly chapter was a huge disappointment.
(2) The INTEL manuals describe instructions in x86 assembly, NOT HLA.

So I am supposed to read several chapters in the book dealing with HLA macros before I learn true assembly?

This book was a disappointment to me and I consider the money spent to be a waste. There are other assembly books available that teach true x86 assembly right from the start. Sure, there are concepts like text output which are difficult for a beginner to understand, but the other authors provide libraries that abstract away the details while still teaching true x86 assembly.

In fact, given that there have been quite a few reviews through the years stating that readers found the title misleading, the author should have renamed the upcoming edition to "The Art of Assembly Language using HLA" to clarify the contents of this book.

Malleus Maleficarum said
I'll be very brief: this book is wholly useless. It isn't the technical expertise of the author or his writing that make it so -- Mr Hyde is an intelligent and accomplished man; his writing is good as always. What makes this book a complete and immediate failure is that it IS NOT ABOUT ASSEMBLY LANGUAGE in the sense that most people think what (the) assembly language is (the title is a blatant misrepresentation, or, at best, a disingenuous, self-serving play on the fact that there's no FORMAL assembly standard in existence).

The author concocted some sort of intermediate-level, C-like language, which he called HLA (high-level assembly), and _this_ is what this THICK book is about, at least the most of it. This language is built on top of MASM, but it isn't MASM (by MASM I mean the language syntax, not assembler program from Microsoft).

Why in the world would one spend one's time learning this language? When one needs to learn PC assembly, today, for all practical purposes it means one thing: MASM. Unixes use different assemblers, but so long as you're writing for an x86 processor, moving from the MASM assembly syntax to, say, Intel assembly syntax is no big deal. A book on x86 assembly language should be based on MASM -- or, at least, something equivalent and more or less standard, if not de jure, then de facto. HLA is neither standard, nor widely used; nor can I think of anything it *would* be useful for.

This is a well-written but self-indulgent book that no one needs, a literary white elephant. I hope the author will recover his senses, trash HLA, and publish a second edition based on the good old bare-bones MASM assembly. (Either that, of the title should be changed as suggested above ;-)

R. Hyde said
Well, after four years of reading these reviews, I thought I'd put in my two cents.

One recurring theme you see in all of these reviews is the following: if someone already knows assembly language, they tend to dislike the use of HLA as the teaching vehicle for learning assembly language. On the other hand, if they're a newcomer to assembly language, they tend to like the approach that Art of Assembly uses. Quite frankly, I wrote "Art of Assembly Language" (AoA) for this latter category, not for those who already know assembly language, so I am rather gratified by the response from those who are actually using AoA to learn assembly language.

When someone sets down to write a book on x86 assembly language, one of the first decisions they have to make is "which assembly language syntax do I use?" The x86 is blessed/cursed with literally *dozens* of different assembly language syntaxes. No matter *what* assembly language syntax I chose, there would have been someone complaining about it. If I'd gone with GNU's as (gas), there would have been complaints about the syntax. Had I gone with FASM, the NASM crowd would have been put off.

Probably the "safe" choice would have been to go with MASM (which the earlier, 16-bit version of the book, used). No doubt, many of the complaints about how I used HLA instead of a different assembly language syntax would have gone away had I done this. The funny part is that MASM is *also* a high-level assembler, having almost all the same high-level control constructs found in HLA. The same is true, by the way, for Borland's Turbo Assembler (TASM). From a language feature point of view, there really isn't much difference between the high-level facilities of MASM, TASM, and HLA. Maybe it's just the name that freaks people out.

Some reviewers have commented that this is the wrong way to teach assembly language. Well, having taught assembly language at the University level for over 10 years, I must respectfully disagree. I've used HLA (before AoA was available) and the students did *far* better in the course. They got much farther along because they were able to apply their HLL programming knowledge to problems early in the course. By the time the course covered the low-level machine instructions, they were doing quite well. The courses I taught with HLA worked *much* better than the comparable courses I taught with MASM. The bottom line is that this teachnique technique has been classroom and laboratory tested. Interested individuals might want to check out my white paper on this subject:

I will make the following observation about AoA: if you already know assembly language, you're probably not going to like the presentation because it's completely different from the way *you* learned assembly and most people seem to think that the only way to learn something is the same way they learned it. On the other hand, if you don't know assembly language and you want to learn it, pay particular attention to those reviews from the people who used AoA to learn assembly language.
Cheers,
Randy Hyde

123 said
My goal in reading an assembly book is to eventually learn fasm. I must say, after reading the first 2 chapters of this book, I am very disappointed! I definitely REGRET the fact that I paid for this book before looking into it further. I have a working knowledge of C++ and I must say, HLA looks more like C++ than fasm code. I can only surmise that the good ratings this book has gotten are from people who haven't seen traditional assembly code, and are convinced that its "assembly" or are actually interested in learning HLA. For a more traditional lesson in assembly I would recommend Assembly Language Step-by-Step Programming with DOS and Linux ISBN: 0471375233

Although I have skimmed through the entire book, it is true that I have not entirely completed this book. I am in fact a bit nervous about the idea of finishing it. I however, am going to finish it. If I feel that the book has enlightened me to the ways of assembly through some profound psychological trickery, I will let people know at Random-Seed.net

Ron Johnson said
I am familiar with writing true assembly language programs for microcontrollers. Granted, while they are very different than PC processors, the fact is that HLA leaves something to be desired. It may have the power of assembly, but it doesn't have the feel. It should have been titled 'The Art of HLA' which would have still sounded good, but would have also given the customer a hint about what is inside the book. I'm going to keep it, but I'm not happy with the product.

True assembly is beautiful with respect to form, as there is little abstraction between you and the machine. This way there is no incongruencies between what you want it to do and how you say you want it done.

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Weeks of coding can save you hours of planning.”