There are only two things required to get started with assembly language. An ordinary text editor to enable you to write your assembly language programs and an assembler.
There are numerous good, free assemblers available on the web. Here are some of them:
Throughout these tutorials we will be making use of Flat Assembler (FASM). It is to be highly recommended, as it takes much of the pain out of writing Win32 applications in assembly language and it is flexible enough to do everything else you would want, even OpenGL.top
Technically you need a program called a linker as well. However, most decent assemblers come with a linker as part of the package.
Basically a linker is used for large projects where there is more than one file to be assembled. Each of the assembly language files might contain references to code elements in the other files. A linker is the program that ties all the loose ends together and makes a single program out of the pieces.
Thus, technically, an assembler converts assembly language files to object files (basically machine code with some loose ends), and a linker connects all the object files together and makes a single executable program out of them.
Some powerful standalone linkers are also available free. Although we won't be needing one, as FASM comes with its own built in linker, here is a linker which has decent features:
Actually, a linker is not just specific to assembly language programing. It is used fairly much regardless of the language in which you are programming.