Updates
Latest Tweet
What's New?
Check out for latest innovation, a computer based training video collection
Like this Page
The Art of Assembly Language Review by Michael Ernest
Not a General Purpose Guide to Learning Assembly
I started reading assembly language by looking at object output from various C compilers. I learned a fair amount by writing gradually more complex programs and reading the corresponding assembler. But eventually I wanted a concept-driven perspective to help me understand more of the whys and wherefores. So I turned to Randall Hyde because I'd read two other books of his, Write Great Code: Volume 1: Understanding the Machine and Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level. Vol. 2 inspired me in particular because its contents matched the subtitle well, and the book led me in a very likely direction for my interests.
I blithely assumed Art of Assembly would take things a step further, but it is not that book. It covers High Level Assembly, a software package of Hyde's invention that probably makes it easier for high-level language programmers to adapt to assembly code. The reader could learn enough HLA, Hyde proposes, to write low-level assembly directly. I think this point is questionable, and easily lost on some number of readers who are drawn in by the title. Not because it can't be done, but because most people adopting technologies on the go don't have the time or the need for small first steps into a complex, technically demanding topic. And why would you do this with HLA anyway, when you could immediately start doing this with C and the proper compiler switch?
The technical discussion is sometimes overwrought, as if to assuage the nervous reader that things are ok. I found this style distracting, sometimes to the point of irritation. The technical understanding expected also appears quite uneven, as if much of the book was cobbled together from technical notes with lots of brainstorming marginalia. One minute we're looking at each element of a simple HLA program, then adding and noting unsurprising "new concepts." The next minute we're reading a very brief overview of the Intel 80x86, then a table of acceptable operands to the mov instruction. Then back to HLA and its control structures. Where are we going? The question came up more than a few times for me throughout the book.
This book could benefit from some sentence editing and section re-ordering, yes. But it mostly needs a clear, singular vision on teaching the subject at hand, and principles to guide that vision with exceptions only when straying off-course is the only way to make an essential point.
I think the bulk of objections I have read from others could be removed by two means. One, clarify who the audience really is. It can't be both serious programmers and people who need to be told where the Start button is on a Windows machine, or how to get to a command-line console. If the book is meant to address someone with non-academic experience on a computer, why not start with object code they can generate with a simple compiler switch? To me that's much easier that learning a sugaring language, then eventually working one's way down an arguably broader path. Two, call this book what it is: it is a guide to learning HLA. That really belongs in the title of this book.