Assembly is a programming language, and, like other programming languages, you have plain text source codes that can be edited by all text editors out there.
The confusion comes from the fact that, as it is the lowest level programming language just above machine language, other programming language's compilers will generate assembly source-code from their language source codes. As a matter of fact, that's pretty much the definition of compilers: to produce assembly language code from their original language source codes. Wikipedia has a good article about compilers you should take a look to understand this process a little better.
Now once you have assembly source codes, you use an assembler to produce machine code. The assembly source code is specific to the computer architecture, in RPi's case, ARM.
GNU's gcc (the most common compiler you use for compiling C source codes in Linux) has also the assembler that will get an assembly source code and generate the executable machine code from it.
Coding in assembly is very hard and not something to be taken lightly. This comes from the fact that it is mapped 1-to-1 to machine code, so you need to know every nuts and bolts details of the architecture you are developing for. An assembly source code for the PC can be completely different from the same application code for the ARM, for example. They are not interchangeable. Second part: all the libraries out there you use to make your developer-life easier (not only the higher level ones, I am talking libc here) aren't readily available for assembly programming. You cannot call functions like printf() or scanf() that easily. It is doable, but not the same way you would do in C for example.
Coding in assembly is somehow limited to very small footprint applications and embedded devices nowadays. Only applications with very limited resources (like very small embedded systems) justify the hassle and effort needed to write assembly code. And not to consider the fact that it is also very hard to debug and maintain. I myself have written an assembly program one morning and the next day I would have no idea how to make simple changes on the source code. You need to document it A LOT.
Now answering your question:
If you write a source code in C (something simple, please!) and use the following gcc command, you will have the assembly code as the output:
gcc -Wall -S test.c
Check the test.s file.
Now if you want to generate the machine-language object from that assembly file, just go with:
gcc -c test.s
And then to generate the executable:
Your executable will be in the a.out file.
If you remove the "-c" option from the "test.s" assembly command, it will generate the executable directly.