I accidentally found Eric's Website and he has written an Assembler A86 and a debugger D86 for the 8086 type machines. He also has versions A386 and D386 that includes the additional instructions up through Pentium III and AMD Athalon's; but those are not shareware.
For my money, Eric is: "The Assembly Man".
I have used Microsoft's MASM which was on a par with EDLIN as an editor. (Both good candidates for the worst possible.) Then I switched to Borland's TASM which was the best I had found, and what I used until essentially a year ago. (TASM put in an IDEAL mode to get around many of the faults of MASM.) I believe the reason so few people are programming in assembly today is because MASM was so bad! I started programming in 1961 and have used assemblers for: Cyclone, IBM 1401, IBM 360, PDP-8 and PDP-11, CDC 3600 1600 and 6600, Interdata 7/16, and Motorola 6800 and 6809. MASM was by far the worst I have seen, bar none. What a shame!
But Eric's A86 is far smaller, far faster, and far easier to use than MASM or TASM. It doesn't need a LINK to produce a .COM program. To create a .COM program using Microsofts assembler you had to run: MASM.EXE then LINK.EXE, and finally EXE2BIN.EXE all of which were insanely complicated. To produce a .EXE using Eric's you do have to run LINK after A86. While A86 is not perfect, it is by far the best assembler I know of for the Intel 8086 and its descendants. A86 still has an ungodly long list of reserved words. Thanks to Intel/Microsoft.
With Eric's assembler you get a good manual, a few sample programs; and some good tips, and wisdom about assembly programming. You can print the manual. It comes with the shareware version! Or, he sells a bound version. (Hey, it is well worth the price; and Eric makes his living doing this. So, try it then buy it.) His manual doesn't go into the details of each instruction. For that you need a reference manual, which Intel has to have but at the moment I don't know the name or price. I have a few links below. Hopefully, somebody will give me some suggestions. The manual I use most is an old October 1979 one from Intel. In those days they were giving them away, but I doubt that is true today.
If anyone wants to really "Program" they need to know their processor. Specifically: Its registers, its instructions and a little about interfacing to the operating system.
Typing the following into Google gets you a lot links to PDF (some HTML) format Intel manuals: Intel Architecture Software Developer's Manual Frankly, I prefer to get information directly from Intel Manuals. That is the source. Other authors can really only paraphrase and confuse.
Here are some interesting links relating mostly to assembly language
programming; but I have not given them enough attention to recommend or
fault. Many probably go into the confusion of MASM which is painful and
unnecessary if you get Eric's assembler and debugger. The following have
information about Assembly Language programming.
http://www.programmersheaven.com/zone5/cat21/ is about programming in
general. Has some links to Assembly related pages. I think I got to
the following from this.
http://webster.cs.ucr.edu/indexIE.html
Intro page for a lot of stuff about assembly language.
http://webster.cs.ucr.edu/Page_TechDocs/Doc386/TOC.HTM
80386 data.
http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C17.HTM
This has links for details about each of the 80386 instructions.
Latter I hope to provide a list of the ones that are used for
general programming to distinguish them from the special ones the
operating system won't let you use.
Probably best to start programming with a little general knowledge of the 8086/80386 registers. Again I prefer the Intel manuals. And would advise concentrating on the 8086 instructions first. For a couple reasons: A86 (the shareware version) only works for 8086 instructions. 2nd. except when you really need 32 bit registers instead of the 16 bit ones in the 8086 you will find that all the work is done with the 8086 instructions; and a significant part of that is done with the 8-bit registers. The 8086 instructions work exactly the same on all the Intel processors up through the Pentium 4. If you use only the 8086 instructions, your programs will run on any "IBM compatible PC"; even the very first ones. I use the 386 instructions only when there is significant gain using 32-bit registers. At least 95% of my programs don't use any 80368 instructions, although I realize that virtually every PC today has them.
While you can write programs for Windows, it is much easier and simpler to run in a DOS environment which can be under Win 9x or ME. ?? I don't know about Win NT or 2000?
Most programs work on files, and to be sure you know what you are working on and/or creating: I have a few little DOS programs to help examine files FSEE.ZIP. You may want to download and try them.
If you would like source code (that you could assemble with Eric's assembler) for a little program that converts telephone numbers that have text like: 1-800-I fly SWA to all numbers; send me an email and I will send it with a listing in a .ZIP file. The executable: PAN.COM is only 77 bytes long. If you can make it shorter I would be interested.