| ||||||||||||||||||
![]() Trade In this Item for up to £14.10
Trade in The Art of Assembly Language 2nd Edition for an Amazon.co.uk gift card of up to £14.10, which you can then spend on millions of items across the site. Trade-in values may vary (terms apply). Find more products eligible for trade-in.
|
Product details
|
Assembly is a low-level programming language that's one step above a computer's native machine language. Although assembly language is commonly used for writing device drivers, emulators, and video games, many programmers find its somewhat unfriendly syntax intimidating to learn and use.
Since 1996, Randall Hyde's The Art of Assembly Language has provided a comprehensive, plain-English, and patient introduction to 32-bit x86 assembly for non-assembly programmers. Hyde's primary teaching tool, High Level Assembler (or HLA), incorporates many of the features found in high-level languages (like C, C++, and Java) to help you quickly grasp basic assembly concepts. HLA lets you write true low-level code while enjoying the benefits of high-level language programming.
As you read The Art of Assembly Language, you'll learn the low-level theory fundamental to computer science and turn that understanding into real, functional code.
You'll learn how to:
This much anticipated second edition of The Art of Assembly Language has been updated to reflect recent changes to HLA and to support Linux, Mac OS X, and FreeBSD. Whether you're new to programming or you have experience with high-level languages, The Art of Assembly Language, 2nd Edition is your essential guide to learning this complex, low-level language.
Randall Hyde is the author of Write Great Code Volumes 1 and 2 (No Starch Press) and the co-author of MASM 6.0 Bible (The Waite Group). He has written for Dr. Dobb ™s Journal, Byte, and various professional journals. Hyde taught assembly language at the University of California, Riverside for over a decade.
Tags Customers Associate with This Product(What's this?)Click on a tag to find related items, discussions, and people.
|
The book uses the concept of an assembler compile combination, abstracting the distance between opcode and assembler one step further -- this was not to my liking, and may not be everyone else's cup of tea either.
That said, the book is well written and will surely teach a novice the art of assembly language.
First off, what is Assembly Language? It is an attempt to make the actual machine instructions more readable to us humans, back when I first learned assembly language on the 6502, I programmed using hexademical instructions, so for example, changing the background color on the good old C64 would be:
$a9,$00,$8d,$21,$d0
Now, this isn't exactly readable as far as code goes, so later I got hold of an assembler, and the above code was written as:
lda #$00
sta $d021
This was suddenly alot more readable, and generated exactly the same code. Onwards assemblers have evolved, including things like macros, local labels, etc. HLA is one such evolution, it contains for example alot of control structures to avoid the need of labels, but that does not mean that you have to use them. For readability, it's lot easier for you to make a function call as:
Foo(1,2,3);
But if you really want to, you can write the code yourself,
push 3;
push 2;
push 1;
call Foo;
Still, this is exactly the code that will be generated by the above Foo(1,2,3), so it's really just a matter of taste.
Likewise, the high-level constructs such as IF... THEN works just the same way:
if(eax == 1) then
endif
could be written by yourself as:
cmp eax, 1
jne Label
But again, this is the same code that the high-level construct will generate. There are most likely situations where high-level constructs may generate code that could be written slightly more efficiently by hand, but it's entirely up to the programmer to use them or not. For beginners in assembly they are likely a godsend, and for experienced programmers they are simply an option.
Now, valid criticism towards this book is that the focus on HLA, although helpful, may also confuse the beginners, since it detracts somewhat from the low-level fundamentals that is the basis of assembly programming. For instance, although excellently explained, the way the stack operates could easily drown in the information sea of HLA's STATIC, VAR, READONLY, STORAGE sections described in the chapter beforehand, and make it hard for a beginner to grasp.
That said, the book still covers all basics of assembly language, from system bus to the individual cpu instructions.
And if you actually read the book, rather than firing up the examples directly, you'll have a good grasp of what these high level constructs do, and how to write your own code without using these constructs if you so please. And do not believe the above reviews stating that this is C-programming rather than assembly, if your programs consist of nothing but function calls then yes it will look like a C-program, but if your program actually does something rather than calls, you will use mov, and, or, add, sub, inc, dec, mul, div, shl, etc. like in any other assembly program, and these instructions are explained perfectly within this book.
The reason I don't give this book 5 stars is simply that I feel the focus on HLA should be mentioned in the books title, like "the Art of Assembly Language using HLA", since people using other assemblers will have to wade through alot of HLA specific content of which they have very little, if any interest.
|
|
|