Art of Assembly Language Programming and HLA by Randall Hyde

|  |  | 32-bit Windows Edition Featuring HLA |

| Web Site Hits Since Jan 1, 2000 |
| Last Updated On Fri, Mar 15, 2002 |

WEBster
NAVIGATOR

| Webster Home |
| HLA Page |
| DOS Assembly |
| Assembly Links |
| Christian Resources |
| HLA Basic |
| RatC for C / C++ Programmers |
| Software Engineering |

| This site is maintained by Randall Hyde. Comments and suggestions should be sent to rhyde@cs.ucr.edu |

##### This site is always ad free!

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).

| 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: |

Currently this is a special BETA edition of the text. That means that you can expect to find several glitches in this document. Mostly they will be typographical errors or poorly worded sentences, but a few technical errors have probably found their way into the text as well. Note that all full programs appearing in this text have been compiled and tested, so hopefully you won't run into many code examples that fail to work.

Those who are familiar with the DOS/16-bit version of AoA will notice some similarities. About a third of the material found in this version was taken from that older version and enhanced/updated for HLA/Win32. The rest of the material is brand new. Hopefully you will enjoy the new material as much as thousands of readers have liked the old version of AoA.

If you find any problems in the text, I would appreciate a notification of the problem. I request that you cut and paste the paragraph(s) in question and email it to me at the following address with a brief description of the problem.

rhyde@cs.ucr.edu

Please put "AoA Correction" in the message title so the message will receive appropriate consideration. Due to the volume of email I receive daily, I regret that I cannot guarantee that I will respond to all emails.

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.

To those who want an HTML version: there was almost nothing in the way of space savings in the HTML version I created. Further, within a few hours of posting the original HTML version people were already posting snippets of it elsewhere. Since I want to keep control of this document until it settles down a bit, and there was very little need for the HTML version anyway, I decided to remove the HTML version. If you're one of the 10 users out there who cannot read PDF files, my sincere apologies. The HTML version was not very good anyway (the formatting was messed up). Yes, I realize you could have fixed this, but that's exactly what I'm trying to prevent right now - people wasting time on a document that will be considerably different next week.