Buy new:
-32% $43.99
Delivery Thursday, August 22
Ships from: Amazon.com
Sold by: Amazon.com
$43.99 with 32 percent savings
List Price: $65.00

The List Price is the suggested retail price of a new product as provided by a manufacturer, supplier, or seller. Except for books, Amazon will display a List Price if the product was purchased by customers on Amazon or offered by other retailers at or above the List Price in at least the past 90 days. List prices may not necessarily reflect the product's prevailing market price.
Learn more
FREE Returns
No Import Fees Deposit & $13.04 Shipping to Germany Details

Shipping & Fee Details

Price $43.99
AmazonGlobal Shipping $13.04
Estimated Import Fees Deposit $0.00
Total $57.03

Delivery Thursday, August 22. Order within 22 hrs 49 mins
Or fastest delivery Monday, August 19
Only 7 left in stock (more on the way).
$$43.99 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$43.99
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Ships from
Amazon.com
Ships from
Amazon.com
Sold by
Amazon.com
Sold by
Amazon.com
Returns
30-day refund/replacement
30-day refund/replacement
This item can be returned in its original condition for a full refund or replacement within 30 days of receipt.
Returns
30-day refund/replacement
This item can be returned in its original condition for a full refund or replacement within 30 days of receipt.
Payment
Secure transaction
Your transaction is secure
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
Payment
Secure transaction
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
$29.96
FREE Returns
[FREE of marks] - Book is used but cosmetically in great condition, binding is tight. Supplemental materials may not be valid. 100% Money Back Guarantee. Ships fast from Amazon! [FREE of marks] - Book is used but cosmetically in great condition, binding is tight. Supplemental materials may not be valid. 100% Money Back Guarantee. Ships fast from Amazon! See less
Delivery Monday, August 26. Order within 4 hrs 34 mins
Or fastest delivery Monday, August 19
Only 1 left in stock - order soon.
$$43.99 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$43.99
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Access codes and supplements are not guaranteed with used items.
Added to

Sorry, there was a problem.

There was an error retrieving your Wish Lists. Please try again.

Sorry, there was a problem.

List unavailable.
Other sellers on Amazon
Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

Follow the author

Something went wrong. Please try your request again later.

Assembly Language Step-by-Step: Programming with Linux 3rd Edition

4.3 4.3 out of 5 stars 149 ratings

There is a newer edition of this item:

{"desktop_buybox_group_1":[{"displayPrice":"$43.99","priceAmount":43.99,"currencySymbol":"$","integerValue":"43","decimalSeparator":".","fractionalValue":"99","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"CCxLKS01s%2Fg7SzYtpSN6iiSROdhhfJG1qYXAlaY%2F1%2BClqePgzdvjhhPH5w5e7z3Foc6etKdGOrkIDGDw73pIQQsvwiFfgeoPZH55u0WpvK21VdsXiphZpKggnGiiDZXcvuoSOoxUM94%3D","locale":"en-US","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"$29.96","priceAmount":29.96,"currencySymbol":"$","integerValue":"29","decimalSeparator":".","fractionalValue":"96","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"CCxLKS01s%2Fg7SzYtpSN6iiSROdhhfJG1fykE3P2FSyzFMOq69jNi7KQML4E4N2MwnTdnaJBEqGqUT%2FheEY7%2BRCDOINDA3eZU8G80NZk8fZDo%2FoJmRmPHcITcYOb1wmNjKys4ZQN%2Fl0OX4mgTKgA0Bdoot2yhXD6VzDyqig8LLISXElcbRJw3Tw%3D%3D","locale":"en-US","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}

Purchase options and add-ons

The eagerly anticipated new edition of the bestselling introduction to x86 assembly language

The long-awaited third edition of this bestselling introduction to assembly language has been completely rewritten to focus on 32-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.

  • Serves as an ideal introduction to x86 computing concepts, as demonstrated by the only language directly understood by the CPU itself
  • Uses an approachable, conversational style that assumes no prior experience in programming of any kind
  • Presents x86 architecture and assembly concepts through a cumulative tutorial approach that is ideal for self-paced instruction
  • Focuses entirely on free, open-source software, including Ubuntu Linux, the NASM assembler, the Kate editor, and the Gdb/Insight debugger
  • Includes an x86 instruction set reference for the most common machine instructions, specifically tailored for use by programming beginners
  • Woven into the presentation are plenty of assembly code examples, plus practical tips on software design, coding, testing, and debugging, all using free, open-source software that may be downloaded without charge from the Internet.

Frequently bought together

This item: Assembly Language Step-by-Step: Programming with Linux
$43.99
Only 7 left in stock (more on the way).
Ships from and sold by Amazon.com.
+
$55.99
In Stock
Ships from and sold by Amazon.com.
+
$56.99
In Stock
Ships from and sold by Amazon.com.
Total price:
To see our price, add these items to your cart.
Details
Added to Cart
spCSRF_Control
Some of these items ship sooner than the others.
Choose items to buy together.

Editorial Reviews

From the Inside Flap

Learn assembly language, and you learn the machine

In this third edition of his bestselling guide to Intel x86 assembly language under Linux, Jeff Duntemann positions assembly not as unapproachable geek arcana but as a first programming language, suitable for readers who have no previous programming experience. As the fundamental language of the CPU, assembly lays the groundwork for all other programming languages, especially native-code C, C++, and Pascal. By mastering assembly, programmers will learn how x86 computers operate all the way down to the bare silicon, at a level of detail that no other approach can equal.

Assembly Language Step by Step, Third Edition, helps you:

  • Review the fundamental concepts behind computing and programming, including the hexadecimal and binary number bases

  • Understand the evolution of the Intel CPUs and how modern x86 processors operate

  • Grasp the process of programming itself, from editing source code through assembly, linking, and debugging

  • Comprehend x86 32-bit protected-mode memory addressing

  • Learn the x86 instruction set by dissecting numerous complete example programs

  • Work with the wealth of free programming utilities under Ubuntu Linux, including the Kate editor, the NASM assembler, and the GNU toolset

  • Master practical details of Linux programming, including procedures, macros, the INT 80h call gate, and calls to the standard C libraries

From the Back Cover

Learn assembly language, and you learn the machine

In this third edition of his bestselling guide to Intel x86 assembly language under Linux, Jeff Duntemann positions assembly not as unapproachable geek arcana but as a first programming language, suitable for readers who have no previous programming experience. As the fundamental language of the CPU, assembly lays the groundwork for all other programming languages, especially native-code C, C++, and Pascal. By mastering assembly, programmers will learn how x86 computers operate all the way down to “the bare silicon,” at a level of detail that no other approach can equal.

Assembly Language Step by Step, Third Edition, helps you:

  • Review the fundamental concepts behind computing and programming, including the hexadecimal and binary number bases
  • Understand the evolution of the Intel CPUs and how modern x86 processors operate
  • Grasp the process of programming itself, from editing source code through assembly, linking, and debugging
  • Comprehend x86 32-bit protected-mode memory addressing
  • Learn the x86 instruction set by dissecting numerous complete example programs
  • Work with the wealth of free programming utilities under Ubuntu Linux, including the Kate editor, the NASM assembler, and the GNU toolset
  • Master practical details of Linux programming, including procedures, macros, the INT 80h call gate, and calls to the standard C libraries

Product details

  • Publisher ‏ : ‎ Wiley; 3rd edition (October 5, 2009)
  • Language ‏ : ‎ English
  • Paperback ‏ : ‎ 656 pages
  • ISBN-10 ‏ : ‎ 0470497025
  • ISBN-13 ‏ : ‎ 978-0470497029
  • Item Weight ‏ : ‎ 2.31 pounds
  • Dimensions ‏ : ‎ 7.3 x 1.6 x 8.9 inches
  • Customer Reviews:
    4.3 4.3 out of 5 stars 149 ratings

About the author

Follow authors to get new release updates, plus improved recommendations.
Jeff Duntemann
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

I am a writer, editor, technologist and contrarian living in Scottsdale, Arizona. Although I've worked as a programmer, I've been in the technical publishing industry (both magazines and books) from 1985 until I retired in 2015. I co-founded Coriolis Group Books in 1989 and ran editorial until the company closed in 2002. Most of my book-length work has been on computer technology. (See ASSEMBLY LANGUAGE STEP BY STEP and LEARN COMPUTER ARCHITECTURE WITH RASPBERRY PI, as well as many more titles now out of print but available used.)

In my loose moments I'm an amateur radio operator (callsign K7JPD), amateur astronomer, and SF writer. My first SF novel, THE CUNNING BLOOD, appeared in 2005 but I have been selling SF stories to magazines and anthologies for 45 years, and was on the final Hugo Awards ballot in 1981.I now have seven volumes of SF and fantasy on KDP Select.

My wife Carol and I met in high school and have been married for 45 years. We live in Scottsdale with two Bichon Frise dogs.

There's more about me on my Web sites: contrapositivediary.com (my blog) junkbox.com (tech projects) and duntemann.com, which is a quick index to all that I've published online.


Customer reviews

4.3 out of 5 stars
149 global ratings

Customers say

Customers find the book great for learning assembly language and IA-32 architecture. They also say it provides nearly the same information, only more clearly, with numerous metaphors to make them obvious. Readers describe the writing quality as well written. However, some find the insights hard to find and the originality out of date.

AI-generated from the text of customer reviews

35 customers mention "Assembly language"27 positive8 negative

Customers find the book great for learning assembly language and IA-32 architecture. They say the programs are concrete, refreshing, and easy to pick up on. Readers also say the content is on point and covers much ground addressing issues. They also say it's a great complement to a book on C and provides nearly the same information, only more clearly.

"...for the beginning assembly newbie and also provides a very nice setup for experimentation..." Read more

"...an assembly language programmer may need, he provides clear explanations of the basics so that the reader can understand enough to look up any..." Read more

"...organization class in college, I can say that this book provides nearly the same information, only more clearly, for a much cheaper price...." Read more

"...grasp the *concepts* of assembly language and provides numerous metaphors to make them obvious...." Read more

12 customers mention "Writing quality"12 positive0 negative

Customers find the writing quality of the book well written, clear, and thorough. They also say it's a smart book for a 13-year-old.

"...Also, very nice use of diagrams not usually found in a topic as terse as assembly language!..." Read more

"...His writing is easy to understand and follow along with, but sometimes he gets too far off on his metaphors (in the first few chapters) to the point..." Read more

"...* The book is readable; i.e., I love just reading the book and learning from it, unlike many textbook style formats that inundate you with detail..." Read more

"...I was pleasantly surprised to find the text clear and well laid out, so I decided to read it cover to cover...." Read more

3 customers mention "Insights"0 positive3 negative

Customers find the insights in the book too much fluff and hard to find real insights. They also say the content is lacking.

"...It's really the content that is lacking...." Read more

"I am disappointed that this book took huge part telling unnecessary stories, not too mush contents in talking about the language." Read more

"Talks too much about himself, too much fluff, hard to find real insights in this book, best used for firewood..." Read more

3 customers mention "Originality"0 positive3 negative

Customers find the book out of date and poorly written. They also say the lack of updating to a new edition does not correct the flaws.

"...Writing this review in May 2016, the book is a bit outdated with respect to the referenced Ubuntu version and (presumably) other software used in..." Read more

"...bin of history... while it was an honorable attempt, the lack of updating to a new edition to correct the flaws, or providing errata as to how to..." Read more

"...Unfortunately, this book is out of date and poorly written." Read more

Top reviews from the United States

Reviewed in the United States on February 25, 2010
This is a very good introductory book on IA-32 Assembly programming on Linux (well, Ubuntu distro specifically but adaptable to other distros too). Uses NASM and a stack of tools that are likely available for all distros (but again definitely if you have an Ubuntu variant).

If you're really ready to take your time and are shooting for a well-grounded point of departure than this book is for you. If you've already mastered things like IA-32 architecture, number theory, adding in hex, fundamentals of assembly, registers, eflags, etc., than this might move too slow for you. That being said, you may just find some interesting nuggets in this book.

One thing I really liked about this book is he moves at a very realistic gradient for the beginning assembly newbie and also provides a very nice setup for experimentation (that is, he suggests a certain toolset which, once setup, will allow you to step through your program and inspect the registers instruction by instruction). I found this quite helpful in making abstract concepts more concrete and to confirm my understanding. Also, very nice use of diagrams not usually found in a topic as terse as assembly language!

Some have complained on earlier editions that they don't like his writing style and that he takes too long to get you to the meat of assembly. I wasn't too crazy about the Martians FooBitidy whatever analogy that he uses, and he definitely can take a bit long to get to the point from time to time. However, this can come in useful for complicated sections as he really takes his time to lay it all out in such a way to where you'd have to be asleep not to "get it". As a programmer who has learned to do a lot of reading on the side, I don't much care if 100 pages could have been stripped down - I'm more concerned with whether I can actually learn from a book. If you require K&R style writing you my not like this. However, my suggestion - deal with a bit of annoying fluff and you'll be thankful in the end. I just don't see another resource that gets you this kind of grounding IMO.

You definitely should be ready to take your time with this one. For example, he will ask you to put down the book and learn to add up to 0Fh + 0Fx, and expects you to commit this to memory. I made flash cards and put the book down for a few days until I had that down pat (this only happens once in the book though) - so yes, there's some commitment involved on the reader's part. But it won't dump you on the side of the road half way in so you'll be happy you made the effort. Note that he many times will present a code example with a few new concepts and THEN explain those concepts shortly thereafter. He seems to like to show some things in context and this requires some forward references - nothing that leaves you too miffed though.

Overall, wish I had this book earlier in my career! Well down My Duntemann!
40 people found this helpful
Report
Reviewed in the United States on August 25, 2010
The author is a very experienced assembly language programmer, and he covers topics in a very organized way so that the reader can fully understand at each step of the way. This is a bit boring for programmers who are familiar with assembly language, even those vastly different from Intel's, but those readers can skip the first three chapters and skim parts of the others.

The author does a fantastic job of focusing on the most important information needed for assembly language programming. He does not present a comprehensive explanation of every instruction, but instead explains each type of instruction and the most used instructions. He covers the use of tools including debuggers and make, and explains how to interface with C programs and how to make Linux kernel calls. After reading each chapter, I was able to use references available on the Internet to find any information that wasn't in the book, such as a comprehensive list of kernel calls and Intel assembly language instructions.

The instructions given in the book for setting up the tools are for Ubuntu, but yum works well on Fedora:
yum install unzip bless nasm make gcc kdbg insight kdesdk kdebase

One problem with the book is that it sticks to 32-bit assembly language and doesn't explain what differs on 64-bit systems. I found that I had to change nasm's output format from elf to elf64 (-f elf64) and use the 64-bit registers (rax, rbx, rbp, etc.) The book describes pushad and popad to push and pop all general purpose registers, but these do not work with the 64-bit registers. Indicating that a memory reference is 64 bits is done with qword. I couldn't output command line arguments as set up by the Linux runtime without copying them into a different buffer.

On 64-bit Linux, the glibc calling conventions are completely different than those described in the book. I was able to figure out how to call printf by writing a C program and disassembling it with objdump, which I found more readable then gcc's assembly listing. The glibc calling convention for 64-bit is that the arguments are passed in registers, with the first argument in rdi, second in rsi, third in rdx, and fourth in rcx; also the rax register must be set to zero for variable-argument functions. The registers rbx, rbp, rsp, r12, r13, 14, and 15 must be saved by the called function.

The fact that I was able to program on a 64-bit system even though the book doesn't cover 64-bit systems is a testament to how well the author covers the basics. Instead of trying to provide every little piece of information an assembly language programmer may need, he provides clear explanations of the basics so that the reader can understand enough to look up any additional information needed. I recommend this book over all others for programmers who want to learn Intel assembly language.
23 people found this helpful
Report
Reviewed in the United States on May 19, 2018
Duntemann likes to give us all the background needed before we get into coding assembly. It's helpful, but it feels like he goes a little too over the top in giving us the foundation right off the bat. It takes him until the very end of Chapter 5 to start actually teaching assembly.

I will say that all of the foundation he gives in the first 5 chapters is interesting and necessary (although maybe not right off the bat). Reading this book after taking an assembly / computer organization class in college, I can say that this book provides nearly the same information, only more clearly, for a much cheaper price. His writing is easy to understand and follow along with, but sometimes he gets too far off on his metaphors (in the first few chapters) to the point where you're actually just focusing on trying to learn his metaphors rather than the real information he's trying to convey. One such example is his "Alien Bases" Chapter 2, where he is trying to compare base number systems to martian counting with unintelligible symbols and less fingers on their hands than us. It's a good metaphor, but it's taken too far.

I recommend this book to someone who is willing to learn assembly from the ground up, and wants to understand all of the inter-workings of the computer and how it processes the assembly that you will be writing. However, if you want to learn the assembly instructions themselves, I would recommend that you get at least one more supplemental book on Assembly Language, that is more specific to that purpose, to read after the completion of this book. This book is not the quick and easy way to learn assembly, but it IS the right way to start out.
22 people found this helpful
Report

Top reviews from other countries

Translate all reviews to English
mae tamayo
5.0 out of 5 stars Good reference
Reviewed in Canada on February 19, 2024
Needed to review and was a good reference book
Taher Borsadwala
5.0 out of 5 stars Brilliant!
Reviewed in India on June 12, 2020
Author focuses on the basics and takes more than enough time for setting the premise. If you are looking to jump into code right from day 1 then this is NOT the book for you. This book explains the "why" of all (well, most of it, Assembly is after all a machine level lingo and hence the scope is way too broad) that is needed before getting to the code. Beautiful approach. Highly recommend.
Janita Seiffer
5.0 out of 5 stars Lesenswert für Programmiereinsteiger und Fortgeschrittene
Reviewed in Germany on July 21, 2017
Was man als erstes wissens sollte: Dieses Buch wurde so geschrieben, dass ein Programmiereinsteiger zurecht kommt. Voraussetzung sind Kenntnisse in Linux, insbesondere sicherer Umgang mit dem Terminal ist recht wichtig.

Der größte Nachteil:
Das Buch ist leicht veraltet, für das Assemblieren im 32 Bit Modus muss man spezielle Kommandozeilenparameter verwenden, die man auf der Website vom Buch oder auf Stackoverflow findet. Der Debugger wird nicht mehr offiziel von Ubuntu unterstützt, daher verwende ich den anderen vom Buch vorgeschlagenen: Kdbg

Vorteile:
Man lernt wie ein Rechner intern funktioniert. Für jeden der sich für Computersicherheit und Betriebssystemprogrammierung interessert ein absolutes muss. Dieses Buch überspringt dabei nicht die wesentlichen Grundlagen, die für das Verstehen und Erlernen von i386 Assembler notwendig sind, das hier ist kein Crash Kurs, aber auch keine Dokumentation.
Mir gefällt auch der Learning by Doing Charakter, ohne dass man die Aufgaben erst am Ende eines Kapitels hat, wie es typischerweise bei anderen IT Büchern ist.

Solltet ihr schon Assembler können, oder sucht ihr einen Quick and Dirty Einstieg: lasst die Finger von dem Buch. Dafür gibt es geeignetere Online Ressourcen.

Ganz nebenbei gefällt mir auch der Witz von dem Buch, der Autor ist mir sehr sympathisch und die Inhalte werden lebendig dargestellt.
3 people found this helpful
Report
Jean de Terre
5.0 out of 5 stars Excellent Intro to x86 Assembly even in 2020
Reviewed in Australia on June 25, 2020
The other reviews sum it up. With a hard, detail oriented topic like Assembly a slow paced book is exactly what is needed. There are a couple of caveats: nowadays most PCs are using 64bit assembly, but this book covers 32bit. Plus the debugger recommended is no longer supported. But don't let this deter you. You can just run 32bit linux (ubuntu or debian) on oracle's virtual box (which is free). Instead of using the insight debugger, the kdbg debugger works fine (and he shows you how to use it anyway). Plus the x86 is designed to be backwards compatible, so 32bit principles still apply with 64bit.

One small thing: maybe I missed it, but the author didn't say why the instruction addresses aren't evenly spaced: it's because the instructions have different byte lengths. I reckon the bit on hex could have shorter or different. But otherwise I think is really a top book and you can see why it's been in 3 editions.

Another interesting feature of the book is the author's backstory and perspective. He's been playing with computers since the early seventies, and was clearly a big Pascal fan (something which maybe died in the early 90s, but still lives on in Delphi). This contributes to an outsider's perspective on UNIX and C culture which is refreshing.
One person found this helpful
Report
marco r.
5.0 out of 5 stars Suggested book for low level programming newbies
Reviewed in Italy on December 1, 2016
Suggested book for low level programming newbies, but if you are not... you can go ahead some chapters.
Good job Jeff! :) the best book about assembly.
2 people found this helpful
Report