Assembly Gui Programming

Welcome!

This area on Webster is dedicated to Win32 assembly language programming topics. Specifically, this section deals with the Win32 API, HOWL (the HLA Object Windows Library), and GUI-based programming in assembly language.

Windows Programming in Assembly Language

Several years ago, Randy Hyde began translating Charles Peztold's 'Windows Programming' into assembly language. This book teaches Win32 GUI application programming using the Win32 API. For copyright reasons, plus the fact that the material was just not the right way to write Win32 assembly code, Randy abandoned that project. However, the first several chapters are available on-line and still provide a great reference for programmers who want to write low-level Win32 code.

Preview the PDF or HTML versions of this new book by clicking on the links to the right.

HOWL (HLA Object Windows Library) has arrived! HOWL makes Win32 assembly language programming easier than ever before. By providing an 'Application Framework' (much like Microsoft's MFC or Borland's VCL), HOWL takes care of all the grunt work required by low-level Win32 API programming and lets you concentrate on writing your applications.

This is the right way to write Win32 GUI applications in assembly language.

Note that the tutorial source code is available as part of the HLA Examples download (get it here). If you're going to work through these tutorials, you should download the entire HLA examples zip file. You'll find the HOWL examples in the win32howl subdirectory.

Also note that the HOWL documentation is part of the HLA Standard Library documentation. You can find the HOWL documentation here.

The example source files to the right generally appear in pairs: a 'standard' version and an 'x_*' version. The standard version uses the HOWL Declarative Language (HDL) to define all the widgets (controls) on a form (window). Those with the 'x_' prefix eschew the HDL and make manual calls to the HOWL library code. The tutorials mainly discuss the standard versions of these sample programs; those who are interested in seeing the lower-level implementation of the code might want to take a peek at the 'x_*' versions of these applications.

1:Hello World
This tutorial teaches the basic principles behind creating, compiling, and running a HOWL application.

2: Buttons
This tutorial teaches you how to use Push Buttons in a HOWL application.

3: Check Boxes
This tutorial teaches you how to use Check Box buttons in a HOWL application.

4: Radio Buttons
This tutorial teaches you how to use Radio Button sets in a HOWL application.

5: Labels
This tutorial teaches you how to place static text objects on a form in a HOWL application.

6: Menus
This tutorial teaches you how to add menus to a form in your HOWL application.

7: Graphic Objects

This tutorial teaches you how to draw various graphic objects on a form including rectangles, round rectangles, pie wedges, ellipses and circles, and polygons.

This tutorial also teaches you how to overlay various graphic objects using a transparent background color and how to create clickable graphics objects. It demonstrates how to move, resize, show/hide, and change the color of these graphic objects.

1: Hello World
tutorial
helloworld.hla
x_helloworld.hla
2: Buttons
tutorial
button1.hla
x_button1.hla
button2.hla
x_button2.hla
button3.hla
x_button3.hla
3: Check Boxes
tutorial
checkbox1.hla
x_checkbox1.hla
checkbox2.hla
x_checkbox2.hla
checkbox3.hla
x_checkbox3.hla
checkbox4.hla
x_checkbox4.hla
4: Radio Buttons
tutorial
radioSet1.hla
x_radioset1.hla
radioset2.hla
x_radioset2.hla
radioset3.hla
x_radioset3.hla
5: Labels
tutorial
label1.hla
x_label1.hla
label2.hla
x_label2.hla
6: Menus
tutorial
menu1.hla
x_menu1.hla
7: Graphic Objects
tutorial
graphics1.hla
x_graphics1.hla
graphics2.hla
x_graphics2.hla
graphics3.hla
x_graphics3.hla
graphics4.hla
x_graphics4.hla
graphics5.hla
x_graphics5.hla

Assembly language (also known as ASM) is a programming language for computers and other devices, and it's generally considered a low-level variant when compared to more advanced languages that offer additional functionality. Once you've written the code, an assembler converts it into machine code (1s and 0s). Masm32 - A complete package for programming Windows™ using its API code and Assembly language. This uses Microsoft's® Assembler program MASM (included), but gets its usefulness from a number of macros, include and library files and examples which a team of people have worked on. Flat assembler is a fast assembly language compiler for the x86 architecture processors, which does multiple passes to optimize the size of generated machine code. It is self-compilable and versions for different operating systems are provided.

ProgrammingWhatProgramming

Java Gui Programming Tutorial

Win32 API Documentation Project

Got Ink?

You'll need it! The following files contain the documentation for the Windows API gleened from the MSDN system and organized for those who prefer to read manuals rather than point and click. Be forewarned, these files are rather long.

Note that as of HLA v1.40, the win32 API declarations are now a part of the HLA distribution (both the header files and the documenation are included with the HLA download). The following documentation is now intended for use by individuals who wish to utilize this information with other assemblers.

  • Zipped file of all the Win32 API documentation (zipped PDF)
  • How to call Win32 API functions from HLA
    PDF VersionHTML Version

Gui Programming Language

The following are some of the reknown Iczelion win32 tutorials with their text and code updated for HLA (the original tutorials used MASM). Check back here frequently because new translations will appear on a regular basis.

Note: because of changes in the HLA language over the past two years, it's not a good idea to enter the HLA code that appears in the following documents. Instead, download the HLA source code (the zip file) and work from that. The source code for the Iczelion Tutorials (converted to HLA) can be found on the HLA download page.

  • Tutorial #1: the Basics
    PDF VersionHTML Version
  • Tutorial #2: MessageBox
    PDF VersionHTML Version
  • Tutorial #3: A Simple Window
    PDF VersionHTML Version
  • Tutorial #4: Painting With Text
    PDF VersionHTML Version
  • Tutorial #5: More About Text
    PDF VersionHTML Version
  • Tutorial #6: Keyboard Input
    PDF VersionHTML Version
  • Tutorial #7: Mouse Input
    PDF VersionHTML Version
  • Tutorial #8: Menus
    PDF VersionHTML Version
  • Tutorial #9: Controls
    PDF VersionHTML Version

Assembly Gui Programming Example

Assembly gui programming tutorial

Java Gui Programming Example