As a piece of advice: Theres virtually no reason to learn/code assembler unless you have a very, very specific need. For example, my old university taught assembly for mainframes because a local company needed assembly language programmers to maintain old apps.
assembly is also machine specific. To do anything interesting with assembly, it will probably be OS specific as well.
If you want a free compiler, look at
nasm. Microsoft and IBM also make compilers, but nasm seems the most popular.
-ner