
Boy. It took literally ten years, but the job is done, and the book is out: Assembly Language Step By Step, Third Edition. (John Wiley Publishing, 2009. ISBN 978-0-470-49702-9. 610 pp.) Far from a minor touchup, the third edition (3E, as we say in the trade) was a near-total rewrite. DOS is gone for good, and the entire book now focuses on assembly programming for x86 Linux, using free and open source tools that include the NASM assembler, the ld linker, the Kate editor, the Bless hex editor, and the Insight graphical front end to the foundational GNU debugger, gdb. (The gcc compiler is also involved when we start linking C libraries into your assembly programs.)
The idea behind the book, nutty as it might seem, is to teach assembly language as your first programming language. No previous programming experience required. When I wrote the very first edition of the book way back in 1988, I thought it was a bit of a reach, but 175,000 copies and countless fan letters later, I guess it actually worked.
How does it work? I start at the beginning, the real beginning, and explain what computers are and what they do. Assembly language must take the hardware into account (at least as far as memory addressing is concerned) so I talk at length about the Intel/AMD x86 hardware architecture. And when I finally get down to teaching assembly language itself, the emphasis is on memory addressing. In assembly language, if you know where your operands are, you're three quarters of the way to anywhere else you might want to go.
This is a radically different approach from most "intro" assembly books, which begin by teaching you the MOV instruction, and then perhaps the ADD instruction, with little or no discussion of the context in which assembly language operates. This is dumb. Instructions are probably 35% of the trick in assembly language. 50% is memory addressing, and the remaining 15% is odds'n'ends.
...is easy. Just click here. The zip file is not large (180K) and should come down in just a few seconds on a broadband connection. Alas, my hosting service does not support anonymous FTP for security reasons, so you have to bring it down using HTTP and your Web browser.
...is just as easy. I've posted the detailed table of contents for the book (in PDF format; 68K) to this site. To get it, click here. (There's a separate link to a sample chapter below.)
Although the mission of the book hasn't changed, all of it has been heavily revised, and about 60% is brand-new material. DOS is gone, except as a historical footnote on the horrors of real-mode segmented model. The whole book now focuses on 32-bit protected-mode assembly language for x86 Linux. Although nothing in the book is distro-specific, some descriptions of the tools (and associated screen shots) assume the GNOME graphical shell. I am a Ubuntu user, so the book was written using a Ubuntu installation, but there's nothing Ubuntu-specific in the tutorial material.
Some highlights of the new edition:
What hasn't changed is the overall approach: A slow and patient cumulative tutorial method that above all else emphasizes how things work. ("Cumulative" means that it works best treated as a linear course: Start at the beginning and work through it until the end.) The first three chapters will be familiar to those who have used earlier editions of the book. The Game of Big Bux and the base-4 doo-wop Martians are all still here. The text is conversational and ever-so-slightly wry: You hear the book in your head pretty much the same way you'd hear it if I were at the front of your classroom, having the sort of fun a guy can only have teaching something that he has known and loved for most of his life.
Sure thing. The publisher has given me a PDF of one of the chapters to distribute without charge. Click here to get it. (291K PDF) Again, my hosting service does not allow anonymous FTP, so you'll have to bring it down with your Web browser.
Your larger bookstores will probably carry the book, and certainly the bigger technical shops like SoftPro Books will have it. If you can't find it locally, definitely look online:
Note well that there are three earlier versions of this book: Assembly Language From Square One (1989; from Scott, Foresman and not Wiley), Assembly Language Step By Step (1992), and Assembly Language Step By Step, Second Edition (2000). If you're buying a used copy of the 2009 edition, make very sure that you're ordering the right edition!
Well, whenever we begin finding typos or other errors that may have crept into the 2009 edition, I'll list them here.