Sunday, 23 September, 2001

More Windows Assembly Language Programming

In 1983 I wrote a hex file dump program in Pascal MT+ for my CP/M computer.  Over the next four years, I added a few features to the program and turned it into a hex dump and patch utility.  The program's interface has been pretty much static since 1987, but I've re-implemented it in many different languages on several different operating systems.  Whenever I start learning a new programming language or start programming for a new operating system, I port this program. I've coded the program in Turbo Pascal, BDS C, Turbo C, 8086 assembly language for DOS, FORTRAN, COBOL, Prime Macro Assembler, Delphi (32-bit Windows console application), and most recently 80386 assembly language for Windows (again a console application).  I've started Windows GUI conversions at least three times, but the program just doesn't seem to want to be a GUI application.  Oh well.

So why do I keep writing the same program?  Simple.  When I'm learning a new programming language or operating system, I need to focus on the system rather than on the problem I'm solving.  "Hello, world" and similar one-concept programs are fine as far as they go, but at some point you have to tackle a real program before you can feel comfortable working in a new environment.  My dump/patch program is such a program.  It forces me to learn how to obtain the command line parameters, work with the screen, position the cursor, allocate memory, and perform file I/O.  The nice thing is that I understand the algorithms so I can concentrate on learning the language or operating system without having to worry about solving the underlying algorithmic problem.  One thing at a time when you're learning.

You can find the 16-bit DOS and 32-bit Windows console versions, with assembly language source, on my downloads page.

Next stop:  a Linux version, first in C and then in assembly language.