CDN$ 37.61
  • List Price: CDN$ 59.99
  • You Save: CDN$ 22.38 (37%)
Only 1 left in stock (more on the way).
Ships from and sold by
Gift-wrap available.
Add to Cart
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Professional Assembly Language Paperback – Feb 11 2005

Amazon Price New from Used from
"Please retry"
CDN$ 37.61
CDN$ 28.50 CDN$ 34.77

Join Amazon Student in Canada


Product Details

  • Paperback: 576 pages
  • Publisher: Wrox; 1 edition (Feb. 11 2005)
  • Language: English
  • ISBN-10: 0764579010
  • ISBN-13: 978-0764579011
  • Product Dimensions: 23.8 x 18.3 x 3.2 cm
  • Shipping Weight: 962 g
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (1 customer review)
  • Amazon Bestsellers Rank: #337,654 in Books (See Top 100 in Books)
  • See Complete Table of Contents

Inside This Book (Learn More)
First Sentence
One of the first hurdles to learning assembly language programming is understanding just what assembly language is. Read the first page
Explore More
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index | Back Cover
Search inside this book:

Customer Reviews

5.0 out of 5 stars
5 star
4 star
3 star
2 star
1 star
See the customer review
Share your thoughts with other customers

Most helpful customer reviews

2 of 4 people found the following review helpful By Benton Lam on Aug. 31 2006
Format: Paperback
Blum does an excellent job in covering the assembly instructions found in a typical x86 processor, and presenting it quickly and concisely to a typical C programmer. Most of the x86 asm quirks are due to backwards compatibility to older processors, and Blum even mentions why this is the case. He also mentions how an assembly program can access Linux and Standard C library calls, command line arguments, and environment variables. Also, he devoted a chapter in inline assembly in C using gcc, and how to write assembly functions that are compatible with C function calls, so that you could create libraries that can be linked against C programs.

The book is valuable to those who need to learn assembly (but otherwise haven't really seen it before), and would be helpful for C programmers to understand how the language gets translated to assembly language.

It's a shame that for a book published in 2005, it didn't cover much of the newer AMD64 assembly, and there are a few fairly glaring erratas. It remains a bit of a blemish for an otherwise excellent book on a difficult topic.

Also, the chapter on MMX and SSE instructions feels a bit rushed, as some of the operations may seem a bit non-obvious. e.g. psadbw - Packed Sum of Absolute Difference will take the absolute difference of packed 8-bit integers in the source and destination operands, and sum the lower 8 abs-difference, sum them up, and put it as a low order 64-bit integer, and do the same thing to the higher 8 abs-difference.
Read more ›
Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again.

Most Helpful Customer Reviews on (beta) 29 reviews
36 of 36 people found the following review helpful
Good at explaining the basics May 12 2006
By Yuri Slobodyanyuk - Published on
Format: Paperback
About the syntax used - yes,through all the book only the AT&T assembly syntax is used. The obvious reason is that most popular compiler on Linux is GCC, which has GAS (GNU Assembler) as the behind the scenes assembler invoked by GCC every time you compile your code. And native to GAS is the AT&T syntax and not the Intel syntax, which is deemed more readable.

Now to the book contents. As there is no previous knowledge of assembly assumed, the reader is first given a quite detailed view of the Intel processors architecture, including coverage of modern features like the Netburst design, present in modern Pentium series processors.Then basics of the tools of the trade are presented.

With this preliminary knowledge the reader is prepared to begin the major part of the book - the assembly language itself.

The learning curve is flattened as much as possible by the author, guiding us through all the major domains of assembly programming - working with processor registers, stack and heap manipulation, floating point arithmetic,handling various data types (strings, integers, floating point numbers) and more.

All the chapters contain stand alone code examples ready to be compiled and run. Most of the example code is 30-40 lines long and relates to the particular point being explained, i.e. there's no intentional cross-reference between code samples in different chapters.

Starting at the chapter 12, "Linux System Calls", begins what this book was written for - how to apply gathered so far knowledge to the real world. This includes: inline assembly in C/C++ code, programs combining C/C++ source code

and assembly functions, writing static/dynamic libraries in assembly that can be used by any high-level language (here C/C++), optimization tips and tricks, how to work with files.

Finally, the last chapter deals with advanced features like MMX, SSE, and SSE2 instructions .

So, to conclude - It has all a

programmer never exposed to assembly needs to learn to start writing fully functional stand alone or integrated into high-level language assembly code . The author covers all fundamentals of assembly programming and he does it in a plain and accessible language.

However there's something you should be aware of - if you're (like me) a fan of the Wrox "Professional.." series,- don't misunderstand the word in this context. It is only an introductory text on assembly,and it will not bring you to the level of professional assembly programmer, yet.
17 of 17 people found the following review helpful
Excellent Coverage of ATT (GNU) Assembly Oct. 9 2006
By Don O'van - Published on
Format: Paperback
I recently had to port an assembly language program written in Microsoft assembly language (MASM) to Linux (GNU AS). This book saved alot of time by helping me to: (1) understand the differences between MASM & GNU AS, (2) efficiently compile a mixture of "C", inline assembly and pure assembly, and (3) use gdb to debug my port. Each chapter covers a topic in depth with numerous examples that include step-by-step walk throughs with gdb. Anyone who's interested in programming in assembly language on Linux will find this book a very useful reference and a great value. Highly recommended!
36 of 41 people found the following review helpful
For the High Level Programmer Going Low Down Feb. 11 2005
By John Matlock - Published on
Format: Paperback
Be aware that this book is very Intel oriented, specifically the 32 bit Intel Pentium family sometimes called X86 or more officially IA-32 (Intel Architecture - 32 Bit). If you're working on a Motorola, Sparc or any other architectured machine, go buy a different book.

Having said that, within the Intel world, this book is an excellent introduction on how the IA-32 architecture has developed over time. It is a good introduction to the basic concepts of assembly language programming. It's a fairly high level book, aimed at the programmer who works in C++ or something like that who might want to optimize his code or at least understand what the compiler did to him.

To go with the book, you probably want to go to the Intel web site and download the Software Developer Manuals for the processor you are using (it's about 12 meg for the Pentium 4) or you can order them on a CD. But start with this book, it provides a basis, a foundation that will make the Intel manuals a lot easier to get around.

Good book to start out with assemblers.
15 of 16 people found the following review helpful
One for the "real" world. Feb. 23 2006
By P. J. Lee - Published on
Format: Paperback
I mean, if you are a computer science student, there's plenty of voluminous tomes on processor architecture, algorithms and Assembly language. But I'm not a student; I do recognise the value of understanding in detail the nuts and bolts of how processors work, but I don't need to know that right now (and I suspect that I just might not have enough grey matter to ever fully comprehend it); I don't want to learn yet another hybridised Assembly/3GL language, I already know C, and (to paraphrase the furry blue guy) that's "good enough for me"; I want to see examples I can apply immediately to my day job; and I would like to learn more about the development environment, too.

Finally, it appears that my long search is over. This book is an excellent "how-to" for experienced programmers who want to enhance their applications with inline Assembly, for occasional coders who need access to specific machine instructions (why, I have no idea, but I'm sure you're out there somewhere), and for security analysts who need some assistance understanding shellcode. However, I think this book will be of enormous benefit for newcomers to programming and Assembly, as it shows in great detail how to develop and debug Assembly programs using the GNU gcc tools. It's one thing to learn instructions and algorithms; it's another entirely to go from an empty source file to a debugged and linked executable.

Don't be discouraged if you're strictly Microsoft; there are plenty of easy-to-use Linux distributions readily available for your pleasure. You can even remain true to Redmond by using a live CD distribution, such as Knoppix, to practise on, without ever having to install one of these nasty open source operating systems. Linux/BSD afficionados, of course, should feel right at home here.
42 of 51 people found the following review helpful
Not for MS, and barely for Linux/Unix Dec 10 2005
By Todd Longfellow - Published on
Format: Paperback
I have to take exception with the first 7 reviewers; while this book does have a few redeeming features, it is not a professional level assembly language book. First of all, if you are looking for a professional level assembly language book for operating systems other than Linux or Unix, this book is not for you. It uses AT&T syntax which is different from Intel syntax. If you are experienced, you will have little difficulty translating from one syntax to the other. If you are wanting to learn assembly language for MS OS's, this is not your book.

Blum uses Linux as his development plateform which sounds promising for those of us interested in learning how to use assembly language for Linux. However, he puts off using system calls until chapter 12. He shows one example of printing text on the screen then moves to using printf from the C library. The lack of coverage on system calls puts this book into the barely useful category.

What is useful is his coverage on the major instructions. And, you will get a good workout using the gdb debugger, as he depends upon that for input/output rather than show you how to write basic input/output routines. Linking with other libraries is also useful.

Since there are few books on assembly language for Linux, it is doubly disappointing in how far this book misses the mark. Every seasoned assembly language programmer knows that having a good reference to the OS's basic routines is fundamental. If I wanted to use C functions, I would write in C.

Product Images from Customers