The Evolution of Assembly Language!

Now you can enjoy all of the benefits of high-level and low-level languages, all rolled into a single language! HLA, the High-Level Assembler lets you write true low-level code while enjoying the benefits of high-level language programming. Don't let the name fool you; you can do anything with HLA that you can do with a traditional low-level assembler. All the same instructions are present, all the same low-level programming facilities are present. The difference between HLA and low-level assemblers is that you're not stuck using low-level programming paradigms when they're not needed. Watch your productivity soar when using HLA; and write far more efficient programs than you could using high-level languages.

HLA Description

The HLA (High Level Assembly) language was developed as a tool to help teach assembly language programming and machine organization to University students at the University of California, Riverside. The basic idea was to teach students assembly language programming by leveraging their knowledge of high level languages like C/C++ and Pascal/Delphi. At the same time, HLA was designed to allow advanced assembly language programmers write more readable and more powerful assembly language code.

With the publication of "The Art of Assembly Language" from No Starch Press (http://www.nostarch.com), the High Level Assembler has entered the mainstream. Tens of thousands of programmers the world over have discovered how easy it is to learn and write assembly language using HLA. What started out as a tool for teaching assembly language programming has blossomed into a popular Windows and Linux based software development tool.

Today, several third party tool authors are supporting HLA as well. This includes a couple of integrated development environments, a debugger, and other tools. More are on the way!

HLA On-line Documentation and Resources

Documentation Description HTML Link PDF Link
Download HLA This link takes you to the page where you can download HLA and supporting code.
HLA STDLIB v3 This link takes you to the page where you can learn about the brand-new HLA Standard Library (v4.x)
HLA Language Reference Manual This is the HLA "Bible" explaining the language and syntax of HLA v1.x HLA Reference Manual (HTML)
n/a
HLA Standard Library Manual This document describes each of the routines found in the HLA Standard Library HLA Standard Library Reference (HTML)
n/a
RadASM/HLA User's Guide A Guide to the version of HLA created specially for HLA (RadASM is an Integrated Development Environment for HLA). RadASM/HLA User's Guide (HTML) RadASM/HLA User's Guide (PDF)
HLA "Quick Reference" A short guide to HLA for those who already know some assembly language programming. HLA Quick Reference (HTML) HLA Quick Reference (PDF)
HLA Installation Instructions A guide that describes how to manually install the HLA system under Windows. Installation Instructions (HTML)
n/a
HLA Sample Programs Want to take a look at some HLA sample code before downloading the whole package? Try this link! View HLA Sample Programs
HLA FAQ Read the answers to some HLA Frequently Asked Questions The HLA FAQ and "executive summary"
HLA White Papers Read some technical papers about HLA and related subjects
Introduction to HLA A paper that describes HLA's purpose and features. A great overview of why the language was created. Introduction to HLA: "What is HLA All About, Anyway?"
Writing DLLs with HLA A technical paper describing how to write dynamic link libraries with HLA (and how to call DLL routines). Writing DLLs with HLA (HTML) Writing DLLs with HLA (PDF)
Compiling HLA HLA is an open-source, public domain, system. This documentation describes the tools you'll need in order to make modifications to the HLA compiler. Compiling the HLA Source Code
Iczelion Tutorials The Iczelion Tutorials are a world-famouse set of Win32 programming tutorials. Originally written for MASM, these tutorials have been converted to HLA and are available at the following links. Iczelion Tutorials Translated to HLA
Using Structures in Assembly Language Structures (records) are an absolutely crucial data type if you want to write programs for operating systems like Windows and Linux. This article explains how HLA support structures and records. Structures (HTML) Structures (PDF)
Teaching Assembly Language Using HLA. HLA was created to help make teaching assembly language easy (for both instructors and students). This paper describes the features of HLA that make it suitable for teaching assembly language programming. Teaching Assembly Language Using HLA
The Art of Assembly Language The Art of Assembly Language (AoA) is the premier book on x86 assembly language featuring the HLA language. It is available in published as well as electronic form. Published Edition:
http://www.nostarch.com

Windows Edition (electronic)

Linux Edition (electronic)

HLA v2.0 Progress For early adopters! Check out how HLA v2.0 is shaping up! HLA v2.0 Home Page
Creating Your Own Languages Using HLA HLA provides the ability to create "Domain Specific Embedded Languages." The following papers describe how to create your own languages using HLA
Lexical Analysis Within HLA A discussion of how to process textual data appearing in an HLA source file so you can embed your own language directly in an HLA source file. N/A Lexical Analysis in HLA (PDF)
Creating a new WHILE Statement. This paper describes how to create a variant of the WHILE loop, with special properties, using HLA's "context-free macro" facilities. Creating a new WHILE statement (HTML) Creating a new WHILE statement (PDF)
Creating a new IF Statement This paper describes how to create a variant of the IF statement, with special properties, using HLA's "context-free macro" facilities. Creating a new IF statement (HTML) Creating a new IF statement (PDF)
Advanced HLA Programming Not for the weak of heart! These papers describe some advanced HLA programming techniques.
Win32 Programming in HLA This link takes you to Randy Hyde's new e-text "Windows Programming in Assembly Language" as well as other Win32-related programming subjects. Information about Win32 Programming in HLA
Taking Control Over Code Emission HLA has taken some criticism over the years that it adds significant overhead to your assembly code. While it is true that HLA has lots of code available (e.g., the HLA Standard Library) that makes assembly programming easy, perhaps at the expense of effiency, HLA does allow you to write pure assembly code and you can exercise complete control over the code that HLA emits. This paper describes how to write small programs (e.g., a small version of the Hello World program) and take complete control over the code that HLA generates from your source files. Taking Control (HTML) Taking Control (PDF)
Calling HLA code from non-HLA programs with exception handling As "The Art of Assembly Language" warns you, whenever you call HLA code from some other language you must not use HLA's exception handling facilities, or call other code that uses exceptions (like HLA Standard Library routines) unless you know what you're doing and you've set up the exception handling system properly. This paper explains how to properly set up the HLA exception handling system so you can use RAISE, TRY..ENDTRY, and HLA Standard Library calls in assembly code you call from other languages. Calling HLA code (HTML) Calling HLA code (PDF)
Other Tools for HLA Third Party Support for HLA
RadASM RadASM is a powerful integrated development environment (IDE) for HLA. The following link takes you to the RadASM home page. RadASM Home Page
OllyDbg OllyDbg is a machine-level debugger that is compatible with HLA. The link to the right takes you to the OllyDbg home page. OllyDbg Home Page
Newsgroups, Forums, Mailing Lists, and other HLA Support The following information and links provide the names of newsgroups and web sites where you can learn more about HLA.
comp.lang.asm.x86 An internet newsgroup dedicated to x86 assembly language development. This newsgroup is moderated and has a very high "signal to noise" ratio. Use your newsreader or http://groups.google.com
alt.lang.asm An unmoderated and "freewheeling" newsgroup. Lots of noise, but good tidbits now and then. Use your newsreader or http://groups.google.com
HLA/AoA Mailing List A Yahoo Group/Mailing list dedicated specifically to HLA programming. http://groups.yahoo.com/group/
aoaprogramming
Win32ASM Community Bulletin Board A web-based forum dedicated to Win32 assembly language programming. Includes an HLA-specific subforum. http://board.win32asmcommunity.net
MASM32 Support Board Another web-based forum dedicated to Win32 assembly language programming. Also includes an HLA-specific subforum. http://www.masmforum.com
HLA Programs by Sevag Krikorian A web page with several examples of HLA programs and other links http://www.geocities.com/kahlinor/HLA.html