The Art of Assembly Language

( 3 )

Overview

Presents assembly language from the high-level programmer's point of view, so you can start writing meaningful programs within days. The High Level Assembler (HLA) that accompanies the book is the first assembler that allows you to write portable assembly language programs that run under either Linux or Windows with nothing more than a recompile. The CD-ROM includes the HLA and the HLA Standard Library, all the source code from the book, and over 50,000 lines of additional sample code, all well-documented and ...

See more details below
Paperback (Second Edition)
$39.69
BN.com price
(Save 33%)$59.95 List Price

Pick Up In Store

Reserve and pick up in 60 minutes at your local store

Other sellers (Paperback)
  • All (37) from $24.74   
  • New (17) from $30.78   
  • Used (20) from $24.74   
Art of Assembly Language, 2nd Edition

Available on NOOK devices and apps  
  • NOOK Devices
  • NOOK HD/HD+ Tablet
  • NOOK
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK Study
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$27.49
BN.com price
(Save 42%)$47.95 List Price

Overview

Presents assembly language from the high-level programmer's point of view, so you can start writing meaningful programs within days. The High Level Assembler (HLA) that accompanies the book is the first assembler that allows you to write portable assembly language programs that run under either Linux or Windows with nothing more than a recompile. The CD-ROM includes the HLA and the HLA Standard Library, all the source code from the book, and over 50,000 lines of additional sample code, all well-documented and tested. The code compiles and runs as-is under Windows and Linux.

Read More Show Less

Product Details

  • ISBN-13: 9781593272074
  • Publisher: No Starch Press San Francisco, CA
  • Publication date: 3/29/2010
  • Edition description: Second Edition
  • Edition number: 2
  • Pages: 760
  • Sales rank: 687,360
  • Product dimensions: 7.00 (w) x 9.20 (h) x 2.00 (d)

Meet the Author

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.

Read More Show Less

Table of Contents

PRAISE FOR THE FIRST EDITION OF THE ART OF ASSEMBLY LANGUAGE;
ACKNOWLEDGMENTS;
;
Chapter 1: HELLO, WORLD OF ASSEMBLY LANGUAGE;
1.1 1.1 The Anatomy of an HLA Program;
1.2 1.2 Running Your First HLA Program;
1.3 1.3 Some Basic HLA Data Declarations;
1.4 1.4 Boolean Values;
1.5 1.5 Character Values;
1.6 1.6 An Introduction to the Intel 80x86 CPU Family;
1.7 1.7 The Memory Subsystem;
1.8 1.8 Some Basic Machine Instructions;
1.9 1.9 Some Basic HLA Control Structures;
1.10 1.10 Introduction to the HLA Standard Library;
1.11 1.11 Additional Details About try..endtry;
1.12 1.12 High-Level Assembly Language vs. Low-Level Assembly Language;
1.13 1.13 For More Information;
Chapter 2: DATA REPRESENTATION;
2.1 2.1 Numbering Systems;
2.2 2.2 The Hexadecimal Numbering System;
2.3 2.3 Data Organization;
2.4 2.4 Arithmetic Operations on Binary and Hexadecimal Numbers;
2.5 2.5 A Note About Numbers vs. Representation;
2.6 2.6 Logical Operations on Bits;
2.7 2.7 Logical Operations on Binary Numbers and Bit Strings;
2.8 2.8 Signed and Unsigned Numbers;
2.9 2.9 Sign Extension, Zero Extension, Contraction, and Saturation;
2.10 2.10 Shifts and Rotates;
2.11 2.11 Bit Fields and Packed Data;
2.12 2.12 An Introduction to Floating-Point Arithmetic;
2.13 2.13 Binary-Coded Decimal Representation;
2.14 2.14 Characters;
2.15 2.15 The Unicode Character Set;
2.16 2.16 For More Information;
Chapter 3: MEMORY ACCESS AND ORGANIZATION;
3.1 3.1 The 80x86 Addressing Modes;
3.2 3.2 Runtime Memory Organization;
3.3 3.3 How HLA Allocates Memory for Variables;
3.4 3.4 HLA Support for Data Alignment;
3.5 3.5 Address Expressions;
3.6 3.6 Type Coercion;
3.7 3.7 Register Type Coercion;
3.8 3.8 The stack Segment and the push and pop Instructions;
3.9 3.9 The Stack Is a LIFO Data Structure;
3.10 3.10 Accessing Data You've Pushed onto the Stack Without Popping It;
3.11 3.11 Dynamic Memory Allocation and the Heap Segment;
3.12 3.12 The inc and dec Instructions;
3.13 3.13 Obtaining the Address of a Memory Object;
3.14 3.14 For More Information;
Chapter 4: CONSTANTS, VARIABLES, AND DATA TYPES;
4.1 4.1 Some Additional Instructions: intmul, bound, into;
4.2 4.2 HLA Constant and Value Declarations;
4.3 4.3 The HLA Type Section;
4.4 4.4 enum and HLA Enumerated Data Types;
4.5 4.5 Pointer Data Types;
4.6 4.6 Composite Data Types;
4.7 4.7 Character Strings;
4.8 4.8 HLA Strings;
4.9 4.9 Accessing the Characters Within a String;
4.10 4.10 The HLA String Module and Other String-Related Routines;
4.11 4.11 In-Memory Conversions;
4.12 4.12 Character Sets;
4.13 4.13 Character Set Implementation in HLA;
4.14 4.14 HLA Character Set Constants and Character Set Expressions;
4.15 4.15 Character Set Support in the HLA Standard Library;
4.16 4.16 Using Character Sets in Your HLA Programs;
4.17 4.17 Arrays;
4.18 4.18 Declaring Arrays in Your HLA Programs;
4.19 4.19 HLA Array Constants;
4.20 4.20 Accessing Elements of a Single-Dimensional Array;
4.21 4.21 Sorting an Array of Values;
4.22 4.22 Multidimensional Arrays;
4.23 4.23 Allocating Storage for Multidimensional Arrays;
4.24 4.24 Accessing Multidimensional Array Elements in Assembly Language;
4.25 4.25 Records;
4.26 4.26 Record Constants;
4.27 4.27 Arrays of Records;
4.28 4.28 Arrays/Records as Record Fields;
4.29 4.29 Aligning Fields Within a Record;
4.30 4.30 Pointers to Records;
4.31 4.31 Unions;
4.32 4.32 Anonymous Unions;
4.33 4.33 Variant Types;
4.34 4.34 Namespaces;
4.35 4.35 Dynamic Arrays in Assembly Language;
4.36 4.36 For More Information;
Chapter 5: PROCEDURES AND UNITS;
5.1 5.1 Procedures;
5.2 5.2 Saving the State of the Machine;
5.3 5.3 Prematurely Returning from a Procedure;
5.4 5.4 Local Variables;
5.5 5.5 Other Local and Global Symbol Types;
5.6 5.6 Parameters;
5.7 5.7 Functions and Function Results;
5.8 5.8 Recursion;
5.9 5.9 Forward Procedures;
5.10 5.10 HLA v2.0 Procedure Declarations;
5.11 5.11 Low-Level Procedures and the call Instruction;
5.12 5.12 Procedures and the Stack;
5.13 5.13 Activation Records;
5.14 5.14 The Standard Entry Sequence;
5.15 5.15 The Standard Exit Sequence;
5.16 5.16 Low-Level Implementation of Automatic (Local) Variables;
5.17 5.17 Low-Level Parameter Implementation;
5.18 5.18 Procedure Pointers;
5.19 5.19 Procedural Parameters;
5.20 5.20 Untyped Reference Parameters;
5.21 5.21 Managing Large Programs;
5.22 5.22 The #include Directive;
5.23 5.23 Ignoring Duplicate #include Operations;
5.24 5.24 Units and the external Directive;
5.25 5.25 Namespace Pollution;
5.26 5.26 For More Information;
Chapter 6: ARITHMETIC;
6.1 6.1 80x86 Integer Arithmetic Instructions;
6.2 6.2 Arithmetic Expressions;
6.3 6.3 Logical (Boolean) Expressions;
6.4 6.4 Machine and Arithmetic Idioms;
6.5 6.5 Floating-Point Arithmetic;
6.6 6.6 Converting Floating-Point Expressions to Assembly Language;
6.7 6.7 HLA Standard Library Support for Floating-Point Arithmetic;
6.8 6.8 For More Information;
Chapter 7: LOW-LEVEL CONTROL STRUCTURES;
7.1 7.1 Low-Level Control Structures;
7.2 7.2 Statement Labels;
7.3 7.3 Unconditional Transfer of Control (jmp);
7.4 7.4 The Conditional Jump Instructions;
7.5 7.5 "Medium-Level" Control Structures: jt and jf;
7.6 7.6 Implementing Common Control Structures in Assembly Language;
7.7 7.7 Introduction to Decisions;
7.8 7.8 State Machines and Indirect Jumps;
7.9 7.9 Spaghetti Code;
7.10 7.10 Loops;
7.11 7.11 Performance Improvements;
7.12 7.12 Hybrid Control Structures in HLA;
7.13 7.13 For More Information;
Chapter 8: ADVANCED ARITHMETIC;
8.1 8.1 Multiprecision Operations;
8.2 8.2 Operating on Different-Size Operands;
8.3 8.3 Decimal Arithmetic;
8.4 8.4 Tables;
8.5 8.5 For More Information;
Chapter 9: MACROS AND THE HLA COMPILE-TIME LANGUAGE;
9.1 9.1 Introduction to the Compile-Time Language (CTL);
9.2 9.2 The #print and #error Statements;
9.3 9.3 Compile-Time Constants and Variables;
9.4 9.4 Compile-Time Expressions and Operators;
9.5 9.5 Compile-Time Functions;
9.6 9.6 Conditional Compilation (Compile-Time Decisions);
9.7 9.7 Repetitive Compilation (Compile-Time Loops);
9.8 9.8 Macros (Compile-Time Procedures);
9.9 9.9 Writing Compile-Time "Programs";
9.10 9.10 Using Macros in Different Source Files;
9.11 9.11 For More Information;
Chapter 10: BIT MANIPULATION;
10.1 10.1 What Is Bit Data, Anyway?;
10.2 10.2 Instructions That Manipulate Bits;
10.3 10.3 The Carry Flag as a Bit Accumulator;
10.4 10.4 Packing and Unpacking Bit Strings;
10.5 10.5 Coalescing Bit Sets and Distributing Bit Strings;
10.6 10.6 Packed Arrays of Bit Strings;
10.7 10.7 Searching for a Bit;
10.8 10.8 Counting Bits;
10.9 10.9 Reversing a Bit String;
10.10 10.10 Merging Bit Strings;
10.11 10.11 Extracting Bit Strings;
10.12 10.12 Searching for a Bit Pattern;
10.13 10.13 The HLA Standard Library Bits Module;
10.14 10.14 For More Information;
Chapter 11: THE STRING INSTRUCTIONS;
11.1 11.1 The 80x86 String Instructions;
11.2 11.2 Performance of the 80x86 String Instructions;
11.3 11.3 For More Information;
Chapter 12: CLASSES AND OBJECTS;
12.1 12.1 General Principles;
12.2 12.2 Classes in HLA;
12.3 12.3 Objects;
12.4 12.4 Inheritance;
12.5 12.5 Overriding;
12.6 12.6 Virtual Methods vs. Static Procedures;
12.7 12.7 Writing Class Methods and Procedures;
12.8 12.8 Object Implementation;
12.9 12.9 Constructors and Object Initialization;
12.10 12.10 Destructors;
12.11 12.11 HLA's _initialize_ and _finalize_ Strings;
12.12 12.12 Abstract Methods;
12.13 12.13 Runtime Type Information;
12.14 12.14 Calling Base Class Methods;
12.15 12.15 For More Information;
ASCII CHARACTER SET;
COLOPHON;
UPDATES;

Read More Show Less

Customer Reviews

Average Rating 2.5
( 3 )
Rating Distribution

5 Star

(1)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(2)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 3 Customer Reviews
  • Anonymous

    Posted January 6, 2005

    Misleading Title

    This book is not about assembly language per se, and as such I feel the title was misleading. HLA is a high level language like previously commented on by another reviewer. If I wanted a high level version of assembly, I'd just use ANSI C. There are better books out there for assembly, because 'knowing the language' is much less important than knowing how a CPU operates with the hardware. Assembly language changes by assembler (gas uses AT&T syntax, NASM doesn't, MASM is different as well). Look into Duntemann's book for a good 'newbie' book on assembly. Even though he doesn't cover a lot of the actual mnemonics, he does a good job of explaining the theory and how assembly language works in both DOS and *nix. The DOS background is a plus (assembly in Windows- a nightmare) and if you have any C experience in a *nix environment, you'll love his treatment of *nix. I'd recommend that book over this one any day of the week.

    1 out of 1 people found this review helpful.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted June 25, 2004

    NOT ASSEMBLY LANGUAGE

    If you are actually trying to learn REAL assembly language do not buy this book. The whole thing is based on HLA (High level Assembly) and you might as well learn c or c++. The first 5 pages are interesting, but when you realize what you have purchased you will be outraged. I would recommend finding a new book.

    1 out of 1 people found this review helpful.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted October 28, 2003

    Very Comprehensive

    This is, without question, the best book available on Pentium/x86 assembly programming. Covers more material that any two other books on this same subject! Definitely a good choice for those who don't already know assembly but would like to learn it.

    0 out of 1 people found this review helpful.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing all of 3 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)