X86
Architecture, low-level
programming,
freeware

Page
partially
updated
July 20,
2002

I finally got around to upgrading this page!
For people who have my book, Windows assembly language & systems programming (see http://www.cmpbooks.com/cgi-bin/shopspecific/store/products/087930474X.htm) 2nd ed. 1997, this page is an excellent supplement. In particular, I've put together a complete package of tools for programming with MASM.
Over the years I've accumulated some superb x86-family links, and I plan to keep updating as I find more. So, make this page one of your bookmarks!

bar_e_1.gif

My own HOWTO pages

Try an utterly different tiny operating system

How to load GIF, JPG, BMP and WMF files and display them in a window (Windows 95+)

GNU C/C++ and MASM (for Win32 programming)
Combining MASM and C files, see my GNU C and MASM page.

bar_e_1.gif

Compilers/assemblers/libraries/editors

C compiler

 

Borland C++Builder compiler 5.5. The commandline compiler part of C++Builder is free. http://www.borland.com/bcppbuilder/freecompiler. Note also, the famous Turbo Debugger is now free.

 

LCC-Win32.  This is a great freeware C compiler for 32-bit Windows programming. Has everything: editor, compiler, assembler, linker, resource editor, resource compiler, header files, libraries. Even a rudimentary debugger. The author has worked intensely on this project for seven years. http://www.cs.virginia.edu/~lcc-win32/

 

DJGPP. freeware 32-bit C/C++ compiler for DOS. http://www.delorie.com/djgpp/

 

GNU GCC. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html
Also see DEV-CPP integrated development environment below. 

 

Digital Mars free C/C++ compiler. http://www.digitalmars.com/.

 

ACC 32-bit small C compiler for DOS. http://www.goosee.com/meneutos/macc.htm

 

Sphinx C-- 32-bit compiler for DOS and Windows. http://www.goosee.com/menuetos/cmm.htm

 

XSCompiler, 32-bit C compiler for DOS and Windows. http://web.cs.pub.ro/~vycxs/xs/

Assembler

 

IASM. A basic freeware 32-bit assembler. http://www.dcc.ufmg.br/~augusto/project/

 

NASM. The Netwide Assembler Project. Free. http://www.web-sites.co.uk/nasm/ , or, http://www.cryogen.com/Nasm.

 

LCC-Win32 assembler. Free, included with LCC C above. Unfortunately it has a very strange syntax. (if anyone has worked out how to use NASM with LCCWin32, let me know!)

 

Pass32. http://www.geocities.com/SiliconValley/Bay/9159/pass32.html

 

MASM. See the Help/Reference/Microsoft DDK section below. Also MASM is in winmasm.zip on this site, see below.

 

FASM free open source project.

 

GoAsm

Libraries

 

Virtual Windows Class Library. Freeware class library for C++ Win32. http://www.toddtown.com/

 

DLLs for Win95: http://www.simtel.net/pub/win95/dll/

Text editors
(overlaps
somewhat with
IDEs)

 

Looking for the perfect editor? This has been an on-going thing with me. Well, I recently discovered one that comes close, and I now use it for everything. It is called ConTEXT, and is FREE and is to be found at: http://www.fixedsys.com/context.
One small detail -- I'm not sure if it's something that I did wrong, but when I opened one of my files, all the tab characters got converted to 8 spaces and after I saved the file I realised that all my spacing was messed up -- because I had previously composed that file based on tab being only 4 spaces. So, I changed the setting in ConTEXT to 1 tab = 4 spaces. But one of my files got messed up before I realised, so just a warning. Other than that, great product. Color coding for asm, C, most languages.

 

Programmer's File Editor (PFE). Free. Versions for Windows 3.1, 95. NT. http://www.lancs.ac.uk/people/cpaap/pfe/, download: http://www.winsite.com/info/pc/win95/misc/pfe101i.zip

 

Paws. http://www.godevtool.com/  Another great product from Jeremy Gordon.

 

AsmEdit: http://asmedit.massmind.org/
It comes with a resource editor that can be used as a stand-alone app.

 

RadAsm: http://radasm.sonshinesoftware.com/

Integrated
development
environments (IDEs)

 

ASMIDE. http://www.idb.hist.no/~kurtg/ <<<LINK BROKEN , download: http://www.inx.de/~nkomin/files/asmide.arj

 

Visualasm Win32 IDE. http://visualasm.cjb.net/

 

Micro Asm. http://www.microasm.com/

 

TASM IDE. http://tasm.freeservers.com/

 

DEV-CPP: http://sourceforge.net/projects/dev-cpp/ and http://www.bloodshed.net/devcpp.html.
A real nice IDE, uses GNU C/C++ and MINGW, generates Win32 executables. 

 

VIDE: http://www.objectcentral.com

Tools/utilities

Make

 

Free nmake.exe from Microsoft. http://www.hutch.ukshells.co.uk/iczelion/files/nmake15.exe Also see Microsoft Help/Reference sites, below.

Debugger

 

Free Microsoft Win32 debugger. http://www.microsoft.com/msdownload/platformsdk/windbg.htm
I don't know why, but I never got this to work properly. I think GoBug is much better (below). 

 

Free GoBug symbolic debugger: http://www.godevtool.com/.
Jeremy Gordon has developed an excellent free symbolic debugger, that works with executables generated by MASM and Microsoft's LINK, plus others. Go to his site to download "GoBug". To see a make file with switches set to generate symbol information within the executable: bugx.mak. GoBug makes a nice companion to my winmasm toolset. Currently only for Win9x/Me.

 

Free Borland Turbo Debugger: http://www.borland.com/bcppbuilder/freecompiler.
This only works with the Borland TASM and TLINK. It doesn't understand the symbols generated with Microsoft MASM and LINK. 

Link

 

ALINK. Free link program. http://alink.home.dhs.org/ and http://anthonyw.cjb.net/

 

Microsoft linker, see Help/Reference sites, below.

Resource compiler

 

GoRC. Free resource compiler from Jeremy Gordon. http://www.godevtool.com/

 

Microsoft RC, see Help/Reference sites, below.

Hex editor

 

Free hex editor XVI32: http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm

Help

Reference sites

 

Win32 API reference (a big Windows help file). ftp://ftp.borland.com/pub/delphi/techpubs/delphi2/win32.zip

 

Microsoft device development kit (DDK). This also has MASM/LINK/NMAKE/RC. http://www.microsoft.com/hwdev/ddk/ddk98.htm

 

 

FAQs

 

Asm FAQ, by Ray Moon. http://www2.dgsys.com/~raymoon/moonware.html, download: http://www.www2.dgsys.com/~raymoon/faq/asmfaq.zip

Tutorials

 

Assembly language tutor. http://thsun1.jnr.ru/~alvladim/man/asm.html ---LINK BROKEN

 

Win32 assembly beginner tutor. http://www.opferman.net/Tutorials/win32.shtml ---LINK BROKEN

 

The art of assembly language (online book). http://webster.cs.ucr.edu/Page_asm/ArtOfAsm.html ---HIGHLY RECOMMENDED

 

University of Guadalajara tutorial. http://udgftp.cencar.udg.mx/ingles/tutor/Assembler.html

 

Gavin Estey's tutorial. http://www.strangecreations.com/library/assembly/tutor/asm1.htm ---LINK BROKEN

Win32 - GNU C: http://www.geocities.com/Tokyo/Towers/6162/win32/ ---LINK BROKEN

Journals

 

Asm Journal. http://asmjournal.freeservers.com/

Input/output

Device drivers

 

WinRT. Device driver toolkit (commercial product). http://www.bluewatersystems.com/

Hardware
access

 

TVICPORT, TVICHW32. Shareware. Direct access to memory and I/O from a 32-bit application in Windows 95/98/NT, without needing to write your own device driver. Good price. http://www.entechtaiwan.com/tools.htm  

 

Port I/O under Win 98. http://www.internals.com/

 

 

 

Hardware

x86 CPU

 

Intel secrets home page. http://www.x86.org/

PC

 

Tomi Engdahl's PC hardware page. http://www.us-epanorama.net/pc/

Motherboard

 

Intel motherboard manuals. http://www.x86.org/intel.doc/intelmotherboards.htm

 

Motherboard drivers. http://www.driverguide.com

More interesting x86 stuff

Windows clone
/emulate

 

Wine (runs on Linux). http://www.winehq.com/

 

Reactos. http://www.reactos.com, or http://www.sid-dis.com/reactos/

Links
/home pages

 

 

 

Assembler for PCs. All about assembly language programming on the PC. http://www.inx.de/~nkomin/html/assembe.htm

 

Paul Hsieh's x86 Assembler page. http://www.azillionmonkeys.com/qed/asm.html

 

Asm page. http://www.worldonline.nl/~jaapharm/index.html ---BROKEN

 

Iczelion's Win32 assembly page. http://win32asm.cjb.net/

 

Hutch's 32 bit MASM page. http://www.movsd.com/index.htm 

 

NASM page. http://www.execpc.com/~geezer/os/index.htm

 

Win32Nasm page. http://rs1.szif.hu/~tomcat/win32/

Jeremy Collake: http://www.collakesoftware.com/

Forums, lists

 

Hiroshimator's board, web-based board for Assembly (albeit heavily MASM oriented). Hutch is one of the moderators there along with eWayne & Ketil Olsen.
http://board.win32asmcommunity.net/

Windows source code

 

www.programmersheaven.com, www.sysinternals.com, www.codeproject.com, www.winprog.org, www.relisoft.com, www.torry.net.

 

bar_e_1.gif

Example asm code

TASM

There is an example application that tests the extensibility -- external control and expandability -- of the GOOFEE Diagrammer (my book Flow design for embedded systems 2nd ed. has this on the companion disk). It is written in assembly language, but whatever language you are familiar with, you should find this one readable if you know basic Windows programming and the API. It is a Win95 32-bit application. Download:

w32demo.asm source file, demo GOOFEE Diagrammer companion (Win95)
w32demo.exe the executable.

MASM

My book mostly gave example code for Windows asm programming using Borland TASM. However, all the tools for Microsoft MASM programming are now free, and I like MASM better anyhow. So, I've bundled together a complete minimal package of tools, including MASM version 6.14, linker, make, resource compiler and libraries, plus an example skeleton application. All of the tools and libraries were downloaded free from the Internet, and I've included copyright notices where appropriate -- please read them and make sure you agree with Microsoft's conditions before using the tools.

winmasm.zip
(802Kb)

Be sure to retain the directory structure when you unzip this. It will unzip into a folder called winmasm, with various sub-folders.

Symbolic debugger:
http://www.godevtool.com/

Jeremy Gordon has developed an excellent free symbolic debugger, that works with executables generated by MASM and Microsoft's LINK. Go to his site to download "GoBug". To see a make file with switches set to generate symbol information within the executable: bugx.mak. GoBug makes a nice companion to my winmasm toolset.

Dialog editor

I need a good free dialog editor to complete this download package. You use this to graphically design dialog boxes. This app will generate a ".rc" file that the resource compiler "rc.exe" can compile.

 Try an utterly different tiny operating system

How to load GIF, JPG, BMP and WMF files and display them in a window (Windows 95+) MASM code.

GNU C/C++ and MASM (for Win32 programming)
Combining MASM and C files, see my GNU C and MASM page.



(c) Copyright 2002 Barry Kauler
Main page:
http://www.goosee.com/explorer/