The Art of Assembly Language Programming

Welcome! The Art of Assembly Language Programming is now available in a special edition for Windows. This edition employs the HLA (High Level Assembler) language that makes learning assembly language easier than ever before. If you're comfortable with C/C++ or Pascal, you'll be writing assembly in no time.

The document is available in several forms:

  • The entire text is available as a single PDF/ZIP file for download optimized for printing at 600 DPI.
  • Individual chapters are available for on-line viewing or download. 96-DPI screen resolution versions are available.

Hopefully, one of these formats is perfect for you. If you intend to print all or part of the text, you should download a printer resolution version. It will display on the screen just fine (maybe a little slower). The screen-optimized version, on the other hand, produces a low-resolution print-out and is generally not acceptable for printer output; however, it downloads a bit faster when you're interested in looking at an individual chapter.

Note that the entire book consumes about five megabytes while the individual chapters consume about 100K-200K each (on the average). It is far more cost-effective to download the entire text and view it off-line than to read the text on-line; the individual chapters are really intended for those who need to look up one thing quickly on-line or have a high-bandwidth connection to the internet (i.e., a typical user will want to download the entire book in one chunk).

The software for this text is available from the HLA page on Webster. To use this text you will need to download the HLA compiler (executables) and the example code. The AoA software appears in the Examples module. Of course, you'll probably want to download other HLA modules as well, but these two are the minimum you'll need for use with AoA. See the link below to grab the software associated with this text.

Download Software Associated with HLA/Win32 Edition

To read the PDF documents you will need a copy of Adobe Acrobat 3.0. You may obtain a copy at http://www.adobe.com.

Note: file sizes are approximate and may vary as I update various files (and forget to update this page).

The Published Edition is now Available!

The Art of Assembly Language is now available from No Starch Press (http://www.nostarch.com) The professionally edited edition is better organized and much easier to read than ever before. The published edition contains a CD-ROM with HLA, example code, additional documentation, and lots of other extras. For those who prefer the Art of Assembly in hard copy form, your ship has come in! (note that the unedited version of AoA will remain available on Webster in electronic form for those who prefer to read the text on-line.)

Download the Entire Text in PDF/ZIP Format

AoA Optimized for Printing (600 DPI)

Download the full text (4.2 MB)

ZIP File

Individual Chapters in PDF Format for On-Line Viewing

AoA Optimized for On-Line Viewing

Read or Download Individual Chapters
Note: to read one of the following chapters simply click on the link.

To Download:

IE and AOL users: Right click on link.

Netscape users: Hold the shift key and click on the link

Mac users: Hold the option key and click on the link


Table of Contents and Index
Short Table of Contents (44KB)
PDF File
Full Table of Contents (408KB)
PDF File
Index (724KB)
PDF File

Volume One - Data Representation (40K)
Chapter One: Foreward (60K)
PDF File
Chapter Two: Hello, World of Assembly (316 K)
PDF File
Chapter Three: Data Representation (304K)
PDF File
Chapter Four: More Data Representation (284)
PDF File
Chapter Five: Questions, Projects, and Lab Exercises (136K)
PDF File

Volume Two - Introduction to Machine Architecture (28K)
Chapter One: System Organization (164K)
PDF File
Chapter Two: Memory Access and Organization (340K)
PDF File
Chapter Three: Introduction to Digital Design (336K)
PDF File
Chapter Four: CPU Architecture (244K)
PDF File
Chapter Five: Instruction Set Architecture (212K)
PDF File
Chapter Six: Memory Architecture (164K)
PDF File
Chapter Seven: The I/O Subsystem (188K)
PDF File
Chapter Eight: Questions, Projects, and Lab Exercises (264K)
PDF File

Volume Three - Basic Assembly Language Programming (28K)
Chapter One: Constants, Variables, and Data Types (216K)
PDF File
Chapter Two: Character Strings (176K)
PDF File
Chapter Three: Characters and Character Sets (204K)
PDF File
Chapter Four: Arrays (172K)
PDF File
Chapter Five: Records, Unions, and Namespaces (156K)
PDF File
Chapter Six: Dates and Times (144K)
PDF File
Chapter Seven: File I/O (188K)
PDF File
Chapter Eight: Introduction to Procedures (224K)
PDF File
Chapter Nine: Managing Large Programs (144K)
PDF File
Chapter Ten: Integer Arithmetic (216K)
PDF File
Chapter Eleven: Real Arithmetic (412K)
PDF File
Chapter Twelve: Calculation Via Table Lookup (152K)
PDF File
Chapter Thirteen: Questions, Projects, and Lab Exercises (480 K)
PDF File
Volume Four - Intermediate Assembly Language Programming (28K)
Chapter One: Advanced High Level Control Structures (180 KB)
PDF File
Chapter Two: Low Level Control Structures (428 KB)
PDF File
Chapter Three: Intermediate Procedures (348 KB)
PDF File
Chapter Four: Advanced Arithmetic (436K)
PDF File
Chapter Five: Bit Manipulation (220 KB)
PDF File
Chapter Six: String Instructions (120 KB)
PDF File
Chapter Seven: The HLA Compile-Time Language (164 KB)
PDF File
Chapter Eight: Macros(272 KB)
PDF File
Chapter Nine: Domain Specific Languages (436 KB)
PDF File
Chapter Ten: Classes and Objects (408 KB)
PDF File
Chapter Eleven: The MMX Instruction Set (280 KB)
PDF File
Chapter Twelve: Mixed Language Programming (328 KB)
PDF File
Chapter Thirteen: Questions, Projects, and Lab Exercises (612 KB)
PDF File
Volume Five - Advanced Procedures (28K)
Chapter One: Thunks (208 KB)
PDF File
Chapter Two: Iterators (200 KB)
PDF File
Chapter Three: Coroutines (100 KB)
PDF File
Chapter Four: Low Level Parameter Implementation (240 KB)
PDF File
Chapter Five: Lexical Nesting (184 KB)
PDF File
Chapter Six: Questions, Projects, and Lab Exercises (56KB)
PDF File
Appendices
Appendix A: Solutions to Selected Exercises (20KB)
N/A
Appendix B: Console Graphic Characters (24KB)
PDF File
Appendix C: HLA Programming Style Guidelines (264KB)
PDF File
Appendix D: The 80x86 Instruction Set (224KB)
PDF File
Appendix E: HLA Language Reference (16KB)
N/A
Appendix F: HLA Standard Library Reference (16KB)
N/A
Appendix G: HLA Exceptions (52KB)
PDF File
Appendix H: HLA Compile-Time Functions (224KB)
PDF File
Appendix I: Installing HLA on Your System (192KB)
PDF File
Appendix J: Debugging HLA Programs (60KB)
PDF File
Appendix K: Comparison of HLA and MASM (16KB)
N/A
Appendix L: Code Generation for HLA High Level Statements 104KB)
PDF File

Notes:

This electronic edition is the original 32-bit edition I've written (for Windows). This information is static and is no longer being updated. The reason is quite simple: I've carefully edited this material and a corrected version is now available in published form from No Starch Press (http://www.nostarch.com). The CD-ROM accompanying that text provides an updated version of AoA in electronic form. For an updated version, you should consider obtaining a copy of the published edition.

General questions about HLA, AoA, and Win32 assembly language programming should be posted to either the comp.lang.asm.x86 or alt.lang.asm newsgroups. I frequently check these newsgroups and reply to questions posted there. Sending your programming questions to one of these newsgroups is far more considerate than a simple email as other may benefit from the response and I can often avoid answering the same question over and over again. Your kind consideration of this matter is greatly appreciated.