Free Downloads
Assembly Language Step-by-Step: Programming With Linux

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.

File Size: 5650 KB

Print Length: 648 pages

Publisher: Wiley; 3 edition (March 3, 2011)

Publication Date: March 3, 2011

Sold by:  Digital Services LLC

Language: English

ASIN: B004QWZXFA

Text-to-Speech: Enabled

X-Ray: Not Enabled

Word Wise: Not Enabled

Lending: Not Enabled

Enhanced Typesetting: Not Enabled

Best Sellers Rank: #83,751 Paid in Kindle Store (See Top 100 Paid in Kindle Store) #3 in Books > Computers & Technology > Programming > Languages & Tools > Assembly Language Programming #24 in Books > Computers & Technology > Operating Systems > Linux > Programming #41 in Kindle Store > Kindle eBooks > Computers & Technology > Programming > Software Design > Software Development

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".

A long time ago, in a basement far far away, I was sitting in front of a long-suffering television set, banging away on a Commodore 64, trying to dive beyond BASIC programming to where the cool kids played, down below the user interface, down in the guts of the machine itself. Stripped of the training wheels, you could write programs on that ancient machine that would fly. The cool kids wrote programs in assembly language. I tried. But I never got there. By the time I hit college, they didn't teach it anymore, and gradually, I moved past it to other programming, and ultimately to more satisfying careers doing other things.But I never forgot.Given that background, I didn't have high hopes for Assembly Language Step by Step. I know Jeff. I've read and enjoyed his science fiction, and he's blurbed mine, and to disclaim a moment, I know him well enough that he wouldn't let me pay for my copy of this new, near total rewrite of his classic text on the matter. I knew if anyone could explain assembly to me, it would be him, but I still expected to hit the point where my eyes glazed over and I didn't care anymore.Instead, by five chapters into the book, I had refreshed my knowledge of binary and hexadecimal math. I'd looked into computer architecture to a depth I never reached before, and begun to understand, really understand the true center of assembly programming, the addressing of memory. And it's not like it was in the days when I tried to learn assembly before. Modern operating systems treat memory differently, and it's this new, more complex memory mapping that I understand now.

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 kdebaseOne 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.

LINUX: Linux Command Line, Cover all essential Linux commands. A complete introduction to Linux Operating System, Linux Kernel, For Beginners, Learn Linux in easy steps, Fast! A Beginner's Guide Linux: Linux Guide for Beginners: Command Line, System and Operation (Linux Guide, Linux System, Beginners Operation Guide, Learn Linux Step-by-Step) Programming #8:C Programming Success in a Day & Android Programming In a Day! (C Programming, C++programming, C++ programming language, Android , Android Programming, Android Games) Programming #57: C++ Programming Professional Made Easy & Android Programming in a Day (C++ Programming, C++ Language, C++for beginners, C++, Programming ... Programming, Android, C, C Programming) Assembly Language Step-by-Step: Programming with Linux Programming #45: Python Programming Professional Made Easy & Android Programming In a Day! (Python Programming, Python Language, Python for beginners, ... Programming Languages, Android Programming) Raspberry Pi 2: Raspberry Pi 2 Programming Made Easy (Raspberry Pi, Android Programming, Programming, Linux, Unix, C Programming, C+ Programming) DOS: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of DOS programming (DOS, ADA, Programming, DOS Programming, ADA ... LINUX, RPG, ADA Programming, Android, JAVA) Some Assembly Required: Assembly Language Programming with the AVR Microcontroller PC Assembly Language: learn how computer work easy ways to learn assembly language Linux: Linux Mastery. The Ultimate Linux Operating System and Command Line Mastery (Operating System, Linux) C#: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of C# programming (C#, C# Programming, C++ Programming, C++, C, C Programming, C# Language, C# Guide, C# Coding) R Programming: Learn R Programming In A DAY! - The Ultimate Crash Course to Learning the Basics of R Programming Language In No Time (R, R Programming, ... Course, R Programming Development Book 1) Body Language: Body Language Training - Attract Women & Command Respect, by Mastering Your High Status Body Language (Body Language Attraction, Body Language ... Language Secrets, Nonverbal Communication) The Linux Programming Interface: A Linux and UNIX System Programming Handbook Programming: Computer Programming for Beginners: Learn the Basics of Java, SQL & C++ - 3. Edition (Coding, C Programming, Java Programming, SQL Programming, JavaScript, Python, PHP) Android: Programming in a Day! The Power Guide for Beginners In Android App Programming (Android, Android Programming, App Development, Android App Development, ... App Programming, Rails, Ruby Programming) ASP.NET: Programming success in a day: Beginners guide to fast, easy and efficient learning of ASP.NET programming (ASP.NET, ASP.NET Programming, ASP.NET ... ADA, Web Programming, Programming) FORTRAN Programming success in a day:Beginners guide to fast, easy and efficient learning of FORTRAN programming (Fortran, Css, C++, C, C programming, ... Programming, MYSQL, SQL Programming) Prolog Programming; Success in a Day: Beginners Guide to Fast, Easy and Efficient Learning of Prolog Programming (Prolog, Prolog Programming, Prolog Logic, ... Programming, Programming Code, Java)