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.