This is not meant to be an in-depth tutorial on x86 Assembly but it is simply a follow up of the article on programming Windows 32 using MASM32. The mentioned article can be found here.
I can already see a lot of people wondering why they should just want to learn x86 Assembly let alone go ahead and learn it. See today programming get along their business of writing software quite happily without lay down a iota of Assembly code and still end up being quite productive. There really must be some reason as to why you’d want to learn Assembly.
Without going into too much I think its fare to know that Assembly is the defacto language when you want to do some really cool stuff as close as possible to the computer hardware as you can get.
For instance if you want to access some features directly on the processors such as Intel’s and AMD’s processors then the only way is through Assembly. Okay maybe you want to reverse Engineer a program. Again, there you go. Assembly is the way forward. Other low level tasks like Boot Loaders are also coded in Assembly. It is also used in a more negative way to crack Software, or patching software and software updates etc.
The if Assembly can do such neat things and more then why do most software developers shun developing applications using Assembly? Some would say that it’s probably too difficult to start with. I do not agree. I’d say rather than being difficult Assembly is pretty different. Anyway. As far as I am concerned there is basically one downfall to developing in Assembly. It is just too time consuming and I would not recommend doing entire projects using Assembly.
My best bet is to develop in a language like C or C++ and just code the specific functions or rather algorithms that you’d want to squeeze our every ounce of speed in Assembly. It is also good to know that there are compilers that can take an entire program coded in a high level language and compiled into assembly which can be further optimized by hand. However! As far as compilers go I think they do a pretty good job in optimizing the code in the first place so doing it by hand may not pull in any significant advantage.
Okay, now that we’ve got that cleared out of the way I can begin to talk about x86 Assembly. X86 Assembly is the flavor, so to speak of Assembly language that adheres to an instruction set architecture of a class of processors popularly used today for all modern computers. As of 2009, x86 primarily refers to IA-32 and/or x86-64 seeing we no longer have processors that are primarily 16 bit as far as computers are concerned.
The original x86 Microprocessor came way back in 1978. That was the 8086. The naming convention change in 1993 to Pentium which is used to this day with other variations coming in 1998 popularly know as Celeron and in 2006 Core, Core 2, Core duo. Also on this list is the Xeon normally used on Servers. All these are Intel microprocessors.
The AMD range of microprocessors include Athlon, Turion, Durion, Sempron and Opteron. The Opteron is a rival to Xeon and Sempron can be equated to Celeron.
To start off x86 Assembly Architectures possesses 8 General-Purpose Registers (GPR), 6 Segment Registers, 1 Flags Register and a single Instruction Pointer.
Related posts:
- Benefits of knowing x86 Assembly Language
- How To Program Windows 32 Using The Microsoft Assembler
- Upgrading From Nokia PC Suite to Nokia Ovi Suite (The Conclusion)
- How To Backup a MySQL Database With SQLyog






[...] Read: A Brief Understanding of x86 Assembly Language [...]