Windows 95 Assembly Language Programming


Updated Jan. 29, 1999.
Minor update, Feb. 15, 1999.
Minor update, Aug. 29, 1999.

Welcome to the world of Win32 assembly language programming, Win95 style.

This site is for assembly language programmers who want to create "true" Windows programs.

As an ASM programmer, you will be working mostly with the basic API (application programming interface). The API is sometimes known as the SDK interface because the files, tools, and documents for using it have been a part of Microsoft's Windows SDK (Software Development Kit) since the earliest days of Windows.

Example code has been tested with TASM 4.0 and the linker and libraries from VC++ 4.0.
[See potential differences with MASM.]

Programming

[You can download the source code and Web pages.]
[You can download the source code without the Web pages.]

Further reading

Simon, Gouker & Barnes, Windows 95 Win32 Programming API Bible
    The first book in a three-volume reference by Waite Press. Definitely not a tutorial! For those of us who prefer flipping pages, rather than clicking and dragging, to find information.

Petzold, Programming Windows, Fifth Edition
    Yet another edition. It should be called "Programming Win32" because the first three editions were for Win16 (the fourth edition specifically mentioned Win95). The most often recommended author of Windows GUI programming using the API. Example programs in C. About 1400 pages. Well worth the money.
Rector & Newcomer, Win32 Programming
    Another extensive look at the Windows API in C.
Richter, Advanced Windows, 3rd Edition
    Once you've read Petzold, you need one of Richter's Win32 books to cover other API topics.
Kauler, Windows Assembly Language and Systems Programming, 2nd ed.
    One of the rare books that covers Windows programming for ASM programmers.

Cooper, About Face: The Essentials of User Interface Design
    A thought provoking book on user interface design.

Pietrek, Windows Internals
    See what Win32 had to emulate. This book gives you insight into the workings of message passing, window management, and the GDI.
Pietrek, Windows 95 System Programming Secrets
    Builds on the previous book. Covers some changes to internal data structures. And new topics such as threading,16/32-bit thunking, and the PE/COFF file format. Comes with utilities that give you a lot of detail about the windows, processes, and threads in your running Win95 system.
Davis & Wallace, Windows Undocumented File Formats
    All those new file types in Win95! See what the authors have uncovered.

Web resources

Iczelion's Win32 Assembly Forum
    A Web forum especially for discussing Win32 programming in ASM.
Iczelion's Win32 Assembly Language Page
    Another Win32 ASM tutorial. Takes advantage of MASM features.
    Scroll down to the end of the page for a great set of Win32 ASM links and d/l'able files. Part of a webring.
Mirrored at http://members.xoom.com/Iczel
Platform SDK
    A collection of useful resources that Microsoft allows developers to download, for free. The Build Environment is the basic component. The Toolkit component is probably useful, too.
DDK (Driver Development Kit)
    You can download a free version of  MASM 6 (ML.EXE) from Microsoft. Warning: you'll need to download an entire DDK to get it. There are DDK's for Win95, Win98, and NT. The best version of the assembler is apparently in the NT DDK. Requires (free?) MSDN registration.
Assembly Language Programming
    Randall Hyde's guide and tutorial to Intel programming. The availability of the Webster server is shaky, so if you have problems, you might want to try an alternate site.
Intel Secrets
    Home of "undocumented" Intel.
File Formats at wotsit.org
    A number of common file formats, including Windows files and binaries, are available as links or in downloadable files.

WALK32 v1.00
    An unconventional MASM 6.xx-based linker system for creating Win32 EXE's and DLL's. Includes a more extensive include file for Win32 ASM programmers.

Newsgroups

If you have problems getting your newsreader to work, you can always go to DejaNews, and select "Browse Groups".

comp.lang.asm.x86 -- moderated
   A mix of 80x86 topics which include DOS, Windows, OS/2, and Linux programming.

comp.os.ms-windows.programmer.win32
    For discussion of Win32 (SDK) API programming. Originally for NT, but also relevant for Win95 and Win98 programmers. Most posters are programming in C. As a result, it may be hard to get answers if questions are phrased in ASM. Please post only API questions.

comp.os.ms-windows.programmer.vxd
    VxDs were used earlier by Win3.1. Among the standard services that VxDs provide to Win95 are memory management, thread management, and a quasi-DOS interface. Can be used to build drivers and other low-level services.
    Cannot be used by NT versions before NT 5.0--oops, it's now NT 2000. (Is it still unavailable in NT?)


Comments and criticisms can be sent to Henry Takeuchi, htak@eskimo.com.