Results 1 to 5 of 5

Thread: Book Review: The Art of Assembly Language, 2nd Edition

  1. #1
    Imported blog (Hex-Rays)
    Join Date
    Nov 2007

    Book Review: The Art of Assembly Language, 2nd Edition

    Have you ever tried to teach x86 assembly language programming to someone coming from high level language programming background and discovered that it was hard?
    Before being able to write a simple "Hello World" program one needs to know a fair deal about the x86 architecture, the assembler language and the operating system. Obviously this is not the case with high level languages such as C for example.

    I was reading The Art of Asssembly Language, 2nd edition book by Randall Hyde the other day and really enjoyed his approach to teaching the assembly language programming.

    In his book, Randall introduces the reader to the HLA (High Level Assembler) compiler which will be used as a tool to learn the x86 assembly language.

    The syntax of HLA can be thought of as a hybrid of Pascal and assembly language. Here's a sample "Hello world" HLA program:
    program helloWorld; #include( "stdlib.hhf" ); begin helloWorld; stdout.put( "Hello, World of Assembly Language", nl ); end helloWorld;
    You may argue that this was not an assembly language program, but what about this:
    program h; #include("stdlib.hhf"); static s: string := "Hello World!"; procedure chksum_str; @returns( "eax" ); begin chksum_str; mov(s, edi); xor(ebx, ebx); xor(eax, eax); while( mov( [edi], al ) #0 ) do inc(edi); // advance str ptr add(eax, ebx); endwhile; mov(ebx, eax); end chksum_str; begin h; stdout.put("The checksum of '", s, " is: 0x"); chksum_str(); stdout.put(eax); if ( eax == 1234 ) then stdout.put("Special chksum!", nl); endif; end h;
    Although this is also not pure assembler syntax, the newcomer will enjoy learning about the x86 architecture and instruction set with the help of the features provided by HLA:
    • Ability to create user types
    • Exception handling
    • Control and repetition structures (and other constructs found in high level languages)
    • Classes and objects
    • Various libaries: stl, file i/o, os, array manipulation, math, etc...etc...
    Throughout the book, before a programming concept is introduced, Randall talks about the necessary background information (architecture and instruction set) and then explains how to put the concept into practive using HLA.
    For example, in Chapter 5 (Procedures and Units), he explains in detail how the stack is set up during a procedure call, how local variables are allocated and how to access the arguments, followed by explanation on how to use HLA to write procedures. Similarly in Chapter 6, when talking about FPU arithmetics, the author carefully explains about the FPU data and controls registers, related instruction set and finally how to use HLA to do FPU arithmetics.

    If your aim is to learn assembly language in order to start reverse engineering, this book is probably not for you, however I highly recommend this book for programmers:
    • That always wanted to learn the x86 assembly language but found it difficult to start with. This book is well organized and easy to read
    • That want to teach the basics of the x86 architecture and assembly languageThat want to put together an x86 assembly program quickly. HLA compiler and the built-in libraries give you the convenience of a high-level programming language and the power of a low level language. If you use the standard libraries provided by HLA then your program is portable

  2. #2


    I wonder if Ilfak programs in HLA (pfffft!)

    Much likely TASM or C/C variants.

    HLA is good. But its NOT assembler. And its confusing students who STUDY Mr. Hyde's courses then go out to face the "real-world" assembler applications....

    One wonders if industrial machines and NASA uses HLA.

    My two cents review: stay away from this junk.

    Hmmm... Peace.

    Have Phun
    Blame Microsoft, get l337 !!

  3. #3
    Teach, Not Flame Kayaker's Avatar
    Join Date
    Oct 2000
    Blog Entries
    Yah, I remember it confusing the hell out of me when I was learning ASM. But hey, it was always a good flame war starter topic in the old win32asm forums

  4. #4
    lol i like comment :P

    My two cents review: stay away from this junk.

    hahahah so funny to see when someone is promoting the book ....

    book in my opinion isnt good but not for learning ASM

  5. #5
    I didn't particularly find this book that useful, my opinion on a well written programming book is one you can use as a reference as well and teach you some of the mechanics of the language itself, not some round-about method to accommodate for the 'slower' learners ( not assuming anyone who reads this is slow of course ) In the long run it will be a cripple imo if you're doing some no-shit assembly programming. As a beginners guide to understanding, sure it does the job for the high level language programmers who have a hard time grasping the asm concepts.

Similar Threads

  1. [ New Tool ] IDA Plugin for Chinese Language Translation
    By Gunther in forum Tools of Our Trade (TOT) Messageboard
    Replies: 0
    Last Post: May 16th, 2014, 12:00
  2. Book review: IDA Pro Book, 2nd Edition
    By Hex Blog in forum Blogs Forum
    Replies: 0
    Last Post: August 3rd, 2011, 04:23
  3. x64 Debugging Review
    By Nynaeve in forum Blogs Forum
    Replies: 0
    Last Post: April 23rd, 2008, 10:01
  4. PE Header in C Language. Please Help!!!
    By cdiaz0712 in forum The Newbie Forum
    Replies: 1
    Last Post: April 5th, 2008, 01:34
  5. Replies: 4
    Last Post: March 20th, 2001, 03:38


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts