Assembler language is currently undergoing a renaissance, there are more and more programmers who are turning to it to produce fast compact code for the Windows family of operating systems. The openness of the community of programmers and the availability of powerful programming aids makes the once laborious task of writing a program in assembler easier than ever before. The following is a list of useful links for those programmers who wish to learn assembler for the 32 bit Windows environment.
All of the following links are for freeware
Integrated Development Environments
The IDE's listed here are ones that I have tried and they are all very good and absolutely free. RadASM supports multiple assemblers and is the most mature of the ones listed, while the others are specific to a single assembler. Depending on your coding preferences and language, all of these are top notch.
Ketil's RadASM is a multi-language IDE for almost every assembler and many HLL's, it can be found here
Akyprian's WinAsm Studio IDE can be found here
Ramon Sala's Easy Code IDE can be found here
The Fresh IDE for FASM can be found here
Microsoft Macro Assembler (MASM) is available as a free download from Microsoft. This is the most popular of all assemblers by far and a must learn for any assembly language programmer. Microsoft's MASM download page
MASM32 is a set of 32 bit libraries and tools to accompany the Microsoft Macro Assembler (included). Hutch and Iczelion have developed a complete package to start programming in assembler. This is the de-facto standard for programming in 32 bit MASM and has by far the largest user base and library of example code. Hutch's MASM32 Download page
GoAsm is one of the best non-MASM assemblers around. It includes a familiar MASM like syntactical structure as well as support for libraries and SSE/SSE2 instructions. It is powerful, has the best scoping in the business and is blisteringly fast, not many assemblers can hold a candle to it in terms of speed, features or functionality. It has full Win64 and Unicode support as well as an extensive set of up to date headers (available on this site). I urge you to give Jeremy Gordon's GoTools assembler a try.
FASM is Tomasz Grysztar's Flat Assembler, it is multi platform and a very efficient and reliable assembler. It has a large user base and a very active community of programmers. FASM32 can be found at FlatAssembler.net
NASM is the NetWide Assembler, I have to admit that I don't know a lot about it. It is fairly inactive now. It can be found at the NASM page on Sourceforge
Assembler forums to answer your questions:
SpooK's Win32ASM Community
Hutch's Masm Forum
The FASM forum
Switching to assembler from other languages:
Ranma_at has written some very good tutorials for Visual Basic users switching to the RadASM IDE. They will take you step by step through the change over. You can view the tutorials here
Useful downloads and sites
PEView is a PE32 viewer developed by Wayne J. Radburn, this is a must if you wish to really understand how your EXE or DLL is structured.
HLA is a front-end preprocessor that adds (pascal like) high level language and structure to MASM or FASM
GoLink and GoRC, The freeware resource compiler and linker
The MSDN library, The most up to date info direct from the source (new window)
The Mad Wizard, A great Winsock tutorial and beginners guide
Wotsit File format reference
MASM reference Online
x86eas.hlp Intel x86 instruction set reference in WinHelp format