That's how I feel whenever a new OS or API comes out these days (or years).

Back when your typical PC came with a whopping 128 K of RAM (and an optional 10 Meg hard drive), the programmer had all the information he needed. We had the BIOS interrupts and the DOS interrupts, all (well most) documented. It was not unusual for us to control the hardware directly (e.g., writing to video memory bypassing BIOS, and certainly bypassing DOS).

All the information an assembly language programmer needed was readily available, including numerous books on how to use assembly language.

When DESQview came out, its API was first documented in assembly language. The C API came out only later.

Alas, tempora mutantur! When Windows with its 95 version became a must have for a programmer, it was absolutely impossible to find any information on how to program for it in assembly language. It was as if assembly language did not exist. Or, perhaps, as if Microsoft did not want you to know. They stopped upgrading MASM at the same time.

All books about assembly language suddenly seemed to be out of print. Then Microsoft starting pushing C++ and Visual Basic. The whole system got so complex that even after years of Windows programming, I still have to consult my programming reference. It is just not possible to remember it all.

Worst thing was that I felt forced to program in C. Don't get me wrong. I think C is a great language. I use it a lot (especially under Unix). I just don't like for someone in Redmond to decide for me what language to use. But it appeared assembly language was unusable for Windows.

Now, of course, anything that can be done on a computer can be done in assembly language. But there was no information about how to link an ASM program for Windows. The best I could do was write a WinMain() in C, and the rest in ASM.

Then, one day, I downloaded a program from the web. A Windows program written in 100% pure unadulterated assembly language.


How did you do that? I emailed the author. He kindly sent me some source code that showed me how to program for Windows in assembly language. I immediately started a geocities page on Windows assembly language programming (it's still there if you're curious: I posted some code, and then some more.

Soon, similar sites started popping up all over the web. I'm glad to see the renewed interest in assembly language programming, especially among young programmers.

Windows software tends to be bloated: It is slow and requires tons of memory. That is completely unnecessary. Rewriting it in assembly language speeds it up at least hundrefolds. And lowers the memory requirements considerably (for an example of some small but powerful and fast ASM software see

So, yes, folks. Give me assembly language, or give me death!

Lethal: You're missing the point. I am not saying everyone should only program in assembly language. I am saying the information on how to do it should be released by companies like Microsoft. It's about choice. As for making life easier: I find it equally as easy to program in assembly language as in C. But the user of my software has his life easier if my software does not require tons of memory and runs fast. Incidentally, I use OOP in assembly language. I always pass the this pointer in ECX, so I can start each procedure with a jecxz to avoid null pointers.