Assembly Language Step-by-Step: Programming with Linux 3rd Edition by Jeff Duntemann (PDF)

7

 

Ebook Info

  • Published: 2009
  • Number of pages: 656 pages
  • Format: PDF
  • File Size: 4.43 MB
  • Authors: Jeff Duntemann

Description

The eagerly anticipated new edition of the bestselling introduction to x86 assembly languageThe 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.

User’s Reviews

Editorial Reviews: From the Inside Flap Learn assembly language, and you learn the machineIn 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 basesUnderstand the evolution of the Intel CPUs and how modern x86 processors operateGrasp the process of programming itself, from editing source code through assembly, linking, and debuggingComprehend x86 32-bit protected-mode memory addressingLearn the x86 instruction set by dissecting numerous complete example programsWork with the wealth of free programming utilities under Ubuntu Linux, including the Kate editor, the NASM assembler, and the GNU toolsetMaster 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 machineIn 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 basesUnderstand the evolution of the Intel CPUs and how modern x86 processors operateGrasp the process of programming itself, from editing source code through assembly, linking, and debuggingComprehend x86 32-bit protected-mode memory addressingLearn the x86 instruction set by dissecting numerous complete example programsWork with the wealth of free programming utilities under Ubuntu Linux, including the Kate editor, the NASM assembler, and the GNU toolsetMaster practical details of Linux programming, including procedures, macros, the INT 80h call gate, and calls to the standard C libraries About the Author 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. Dobb’s Journal, and has edited well-known programming publications like PC Techniques and Visual Developer. After hours, he enjoys blogging, astronomy, amateur radio, and writing science fiction. Read more

Reviews from Amazon users which were colected at the time this book was published on the website:

⭐This book is written with the idea that assembly language is your first programming experience. If you read a lot of reviews about the book being boring or too old that’s precisely why, assembling requires a lot of knowledge about the machine, mainly memory and registers. This book does it in an excellent way. Many people would like that from chapter 1 they taught you to code, perhaps in other languages ​​they are valid, such as Python, but not in assembly. This book is 100% worth it, just be patient.

⭐Many consider assembly language to be dead or dying. My answer to that is that as long as processors with instruction sets are around so will be assembly language. Secondly, programmers worth their salt have an understanding of the underlying hardware and the hardware/software frame of reference they are programming in. And perhaps most importantly, whatever high-level language is being used, at some point it has to be binary for the processor to use it. Being able to use debuggers, disassemblers, file and memory dumpers, and other programmer tools of the trade will require some knowledge of processor instructions and being able to read them in the output of those tools. All of these are addressed in Mr. Duntemann’s current book.Some have criticized the book in taking too long to get to the point. No doubt we all come to this book with varying degrees of experience and expertise. Many want to jump right to the programming; it’s fun! Yes, I admit that in designing software, actually writing the code is the most enjoyable part of the process, but it is not the entire process. It’s been said in software engineering circles that actually writing the code is a minor percentage of the total process of creating professional software. Mr. Duntemann approaches teaching this material in the same way. He lays out the fundamentals in an accurate, easy to follow manner. He provides very detailed explanations and examples. If you are a self-learner, you will appreciate this book. And when you get to writing code, it will be even more fun.Here’s another reality – you most likely got here on this page by searching for books on assembly language. How many did you find, as say compared to C++? How many of the books on assembly language apply to today? And of those that apply to today, how many apply directly to Linux? I know, it sounds a bit like we should be happy with what we have, but here’s the irony – this book is not mediocre or a rehash of someone else’s work or some wiki somewhere. It is a refreshing treatment of a deeply technical topic in an area that abounds with hard to understand manufacturer manuals, terse man pages, and poorly written how-to webpages.I know Mr. Duntemann’s writing from back in my days of programming in DOS, and before that it was CP/M, and before that it was ISIS on the old Intel blue boxes with 8″ floppies and line editors – gag! I remember the first assembly code I wrote. It took four hours pouring over the Intel manuals before I figured out how to get my name printed on the screen. And most of the problem was trying to get the editor, assembler, and linker to do something. I could tell you horror stories, but you know what? It was fun!! The sheer thrill of talking to the microprocessor directly still gets to me today.To Mr. Duntemann – thank you for writing this book, and a special thanks for doing it in Linux! Programming has become fun again, especially assembly language.

⭐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!

⭐I found this book very interesting. The first several chapters give a great introduction to x86 memory layout and addressing which is fundamental to understand for assembly. Therefore writing anything in the language doesn’t start until around chapter 7, roughly mid way through the book. The book covers the basics in a lot of detail, a brief introduction and a summary for each chapter would be beneficial as would numbered subheadings. You will need to find a workaround for using insight debugger, there are available releases which will have to be built manually. Alternatively Evans debugger – edb provides a similar experience.Jeff explains everything and uses a variety of analogies which is very helpful for anyone learning the language first time. I’m currently still progressing through the book and eager to debug larger programs, I can understand it will take time and lots of practice.Great book, Thanks Jeff Duntemann

⭐Excellent book, but way too much space has been wasted on things that could have been explained using half of the words. As a result, the author ran out of space to cover the FPU instructions, which I think is a must even for a beginning programmer, so I consider this book incomplete. Also, there are many errors, some not included in the errata. But it gives you sufficient knowledge to go on researching on your own using Intel documentation, for example. On a positive note, the language is easy to grasp even by so called “dummies”. This book focuses on the Intel syntax, which I find helpful. Explanations are very detailed and there’s plenty of examples. A lot of space has been devoted to setting up working environment and correct methodology, based on author’s experience. Regrettably, the Insight debugger, that examples in this book use, is no longer maintained, so I had to use an old distro. What saved the 5th star is very in-depth coverage of memory addressing.

⭐The comments for ‘C Programming Language’ without comments about links, apply here also. It is unfortunate that the author uses a debugger that appears to have disappeared from the market.With this problem at the start of the book, it could deter anyone to go further into the book. I did find, at the start, that kdbg seemed to meet the debugging requirements.However, after updating ‘kdbg’ I could no longer get a register readout. Using ‘gdb’ is very painful and slow.

⭐Definitely a first book for assembly language programming, this is a valuable and gentle introduction that’s useful new and seasoned programmers alike (the latter will want to skip or skim read some of the early chapters, particularly Chapter 2’s coverage of different number bases). By the time you tackle the first actual program, you’ve read enough to feel confident in understanding what’s going on. The later chapters are well paced, progressing through memory addressing, the stack layout for Linux processes, debugging, calling functions written in C, and brief coverage of the GNU assembler syntax (the Intel syntax used by NASM is used elsewhere).What you won’t find is much material on optimisation, or exhaustive coverage of the x86 instruction set. Neither are appropriate for the introductory level of this book, and its focus remains clear as a result.If there was one thing that I’d like to have seen, it’d be calling assembly language routines from C, but it’s a reasonable omission given that it’s a book on assembler and not C.

⭐In video game programming books, the always botched section is about collision detection.In assembly programming books it is always the stack frame explanations that are botched.The drawings about stack frame are useless and does not even represent any reality.The code is useless because it only shows the code on the caller side, not on the procedure side.So stack frame is described in the book just barely enough to call a c function, but you would not know how the procedure deal with the stack frame and how it creates and access the local variables.Stack frames is the pillar of programming, but the majority of the people on the internet do not fully understand it.Sad that a book like that kind of shows that the author does not fully understand the principles.It should have been a whole chapter about stack frame, not 4 paragraphs with a useless diagram that does not even represent a stack frame.

Keywords

Free Download Assembly Language Step-by-Step: Programming with Linux 3rd Edition in PDF format
Assembly Language Step-by-Step: Programming with Linux 3rd Edition PDF Free Download
Download Assembly Language Step-by-Step: Programming with Linux 3rd Edition 2009 PDF Free
Assembly Language Step-by-Step: Programming with Linux 3rd Edition 2009 PDF Free Download
Download Assembly Language Step-by-Step: Programming with Linux 3rd Edition PDF
Free Download Ebook Assembly Language Step-by-Step: Programming with Linux 3rd Edition

Previous articleMIPS Assembly Language Programming by Robert Britton Professor Emeritus (PDF)
Next articlePeter Norton’s Intro to Computers 6/e by Peter Norton (PDF)