The long-awaited third edition of this bestselling introduction to assembly language has been completely rewritten to focus on bit protected-mode Linux and the free NASM assembler. Assembly is the fundamental language bridging human ideas and the pure silicon hearts of computers, and popular author Jeff Dunteman retains his distinctive lighthearted style as he presents a step-by-step approach to this difficult technical discipline. He starts at the very beginning, explaining the basic ideas of programmable computing, the binary and hexadecimal number systems, the Intel x86 computer architecture, and the process of software development under Linux. From that foundation he systematically treats the x86 instruction set, memory addressing, procedures, macros, and interface to the C-language code libraries upon which Linux itself is built.
|Published (Last):||20 January 2008|
|PDF File Size:||4.79 Mb|
|ePub File Size:||2.89 Mb|
|Price:||Free* [*Free Regsitration Required]|
The Green Giant Kites. The D-Stix Tetrahedral Kite. Compactron Tubes. Vintage Data Sheets. Finding Old Radio Parts. Junkbox Telescope Gallery. Important Note! The Insight debugger front end package has been pulled from all Debian distributions, which means that you won't find it in Ubuntu starting with V I'll discuss this issue in more detail below.
John Wiley Publishing, ISBN 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. How does it work? I start at the beginning, the real beginning, and explain what computers are and what they do.
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. Just click here. 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. DOS is gone, except as a historical footnote on the horrors of real-mode segmented model. The whole book now focuses on 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.
What hasn't changed is the overall approach: A slow and patient cumulative tutorial method that above all else emphasizes how things work. 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. 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:. If you're buying a used copy of the edition, make very sure that you're ordering the right edition! I had hoped to get some bit coverage in there, but the publisher set a hard limit on the length of the book for cost reasons.
I'm going to try and twist their arms to give me another pages for the next edition, but in the meantime, it's a bit book. That said, bit PCs are now all over the place, and there's an issue involving the nature of an executable code file.
On a bit PC, the linker expects a bit elf64 file by default, and will complain if you hand it a bit elf file without warning. Creating a bit executable on a bit PC requires that you "warn" the linker that a bit elf file is coming:. Creating a bit executable requires that you tell NASM explicitly to generate a bit linkable file:. Here, using elf64 instead of elf tells NASM to generate a bit linkable file.
The linker invocation is the same as the one in the book because on a bit PC, ld expects that the. Is there any advantage in creating bit executables? Not for the small programs you'll write while you're learning assembly especially since bit executables are a little larger than bit executables but once you're doing ambitious programming in assembly you'll have the entire bit x architecture at your command, with additional bit registers, bit instruction modes, and "long mode" memory addressing.
Many thanks to Gary Albers for alerting me to this problem, since I wrote all my example code on a bit box and didn't give sufficient thought to what might happen using default assembler and linker invocations on a bit PC. He's set up a whole page discussing the issue, and it's worth a close read:.
With any luck at all, I'll have the space to cover bit assembly programming in the next edition of the book. Gary also discusses his experiences using Kdbg instead of Insight. Which brings us to one of the lousiest pieces of bad timing I've ever experienced:. This took me completely by surprise. Late in and not long after the book was published! So you will no longer find Insight preinstalled in Ubuntu, starting with V If you bring up a terminal and try to run it, Ubuntu won't find it.
This is a weird problem, especially since I've had no luck recompiling Insight from source. There must be some deeper issue, but if the developers of the package aren't maintaining it, there may not be much any of us can do going forward.
Now, installing Kate isn't quite enough. You also have to install Konsole, because Kate invokes Konsole when you click Kate's "Terminal" button to run a program that you're editing in Kate. Just as Kate is part of a larger package called kdesdk, Konsole is part of a larger package called kdebase. This actually pulls in quite a lot of stuff most of it that you won't need, alas but it will install Konsole.
Insight isn't really a part of any larger group of programs, so it installs quickly. The bottom line is that Insight likely isn't coming back to Debian, and thus it's not coming back to Ubuntu. If I can discover a reliable way to install Insight manually under Ubuntu In the meantime, your best bet is installing a copy of Ubuntu 9.
Again, Gary Albers has much to say about the Insight problem on his Web page. Downloading the Listings Archive Downloading the Table of Contents What's New? All code examples are written for execution on the Linux console in a terminal window. The editing platform used for discussion is the Kate editor, which has file and session management, limited assembly syntax highlighting and a built-in terminal window.
Other development tools discussed in detail include the Linux linker ld, the gcc compiler, make, and touch. Most examples are "pure" assembly, and communicate with the console through the int 80h call gate. The final chapter discusses the linking of assembly language programs with C library functions. What's Old? How About A Sample Chapter? Where to Buy the Book 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: New or used, from Amazon. Look for used copies on ABE Books. There are two ways to go on a bit PC: Generate a bit executable file, which will run on either a bit or a bit PC. Generate a bit executable file, which will run only on a bit PC. Creating a bit executable on a bit PC requires that you "warn" the linker that a bit elf file is coming: nasm -f elf -g -F stabs eat.
Creating a bit executable requires that you tell NASM explicitly to generate a bit linkable file: nasm -f elf64 -g -F stabs eat. Which brings us to one of the lousiest pieces of bad timing I've ever experienced: Insight Is Now Missing from Ubuntu!
At this point, you have several options: Create a new partition on one of your machines, and install Ubuntu 9. That's the last version that I know includes Insight. You don't need a huge amount of free disk space to do this, assuming that you don't install a lot of software in the Ubuntu 9. Install VirtualBox a free virtual machine manager, obtainable from the Ubuntu Software center and install Ubuntu 9.
Then use the VM for all your assembly projects associated with the book. This isn't ideal, but it will certainly work. Even though it may seem peculiar to install an older version of an operating system under a newer version of the same operating system, people do this all the time to support "legacy" versions of software that won't run under the current version. A lot of people installed Windows XP in a virtual machine under Vista, after it was found that Vista would not run a lot of older Windows packages correctly.
Download and install Wubi 9. Wubi is an installer for Linux that runs from Windows and makes Ubuntu just another very big software install. Wubi 9.
Assembly Language: Step-By-Step
The Green Giant Kites. The D-Stix Tetrahedral Kite. Compactron Tubes. Vintage Data Sheets. Finding Old Radio Parts. Junkbox Telescope Gallery.
Assembly Language Step-by-Step: Programming with Linux, 3rd Edition
Jeff Duntemann has been writing about computing for over thirty years, and is the author of numerous books on programming, wireless networking, and system administration. He has been a columnist in Dr. After hours, he enjoys blogging, astronomy, amateur radio, and writing science fiction. Chapter 2 Alien Bases.
Assembly Language Step-by-Step: Programming with Linux®, Third Edition
Goodreads helps you keep track of books you want to read. Want to Read saving…. Want to Read Currently Reading Read. Other editions.