Alright, this is going to be somewhat lengthy. The use of the two terms is as controversial as the programming vs scripting issue, although not as much. Here is the currently recommended terminology:
Assembly: The act of assembling a program written in Asm.
Assembler: The program which translates Asm source code into binary output.
Now, the issue is that some programmers and educators are referring to the language itself using the above two terms, which further causes confusion among the community. As such, "writing in assembly" and "writing in assembler" are both commonly encountered, although neither usage should really have been allowed. The recommended term to use is "Asm" for the name of the language, and usage of "Assembly" and "Assembler" should be restricted to those noted above.
("Assembly" is also the name of a demoscene party that is also known as "ASM" -- for more info, see
http://www.assembly.org/ )
----
I found some guides in the internet and different forums, and most of the people is speaking about the processor and "This assembler is not for this processor" I mean assembly is not for writing programs? then wth it got to do with processor type??
There are many dialects of Asm specific to specific processor architectures. These can be grouped into several large families, the largest of which is currently the Intel IA32/IA64 (which includes the base 16-bit x86). Others include M68K, Z80/x80/x85, PPC, etc.
@FragFrog: With the gradual convergence to one architecture (see what happened to the Mac?) in the PC industry, this argument may be losing effectiveness. However, outside the PC industry, in devices such as PDAs and phones, etc. where the hardware still has not standardised, this argument still holds.