Assembly language programming for the Intel x86 chips is not necessarily a difficult task. However, it can be made more difficult than it need be, depending upon a number of factors. One of the most critical of these factors is the programmer's choice of assembler.
There are three main assemblers in use today (I stand open to correction on this as I have only ever heard of these three). These are MASM, (MicroSoft's Assembler), TASM (Borland's Turbo Assembler) and A86 Assembler. (It has been recently pointed out to me that, as well as these, there is the GNU assembler which is released under the GNU public licence and is freely available for use with a number of operating systems. It comes as part of the binutils package on linux distributions.)
Of these assemblers, I use A86, which is an excellent assembler and, though not free software, it is shareware and so can be downloaded from the internet. It is written by Eric Isaacson, and comes with a hefty manual in the shape of 19 text-files. I am including the entire package on my web-site, zipped, as well as the complete manual.
For these tutorials I will assume that you are using A86, as with it there is no need to use the initial heading details required by other assemblers. You just simply type up your assembler instructions into a file and assemble it and see how your program runs. So prepare a directory and put A86.com and A86.lib into it, and you are ready to go!
The example programs included in these tutorials and have been tested by me before posting them on my site. However, this does not mean that they are bug free and so feel free to email me with bugs you have identified in the code. I would like to thank those few people who have already pointed out a number of bugs to me.