Quick guide to the basics
- What is an Assembler?
An assembler turns your assembly code into machine code, so it is a very important piece of software(unless you would like to do this by hand). It will either turn your code into a pure binary file(a .com file on DOS-based systems) or and object file(commonly COFF) which then can be linked with other object files/ libaries into an executable(PE format on windows).
- What is a Linker and do I need one?
If you are only interested in creating .com files(unlikely) you do not need a linker, however to create a Portable Executable(PE) file you will need a linker to link your object file(s) and libaries.
- What is a Debugger and do I need one?
A debugger is a program that can step into/over your executable files to help you find logic errors in your program. If your program assembles fine it can be hard to spot the source of any problems. A debugger like OllyDbg allows you to executate one instruction at a time as it provides a real time examination of memory and registers allowing you to find otherwise hard to spot errors in your code. Of course this optional, but can cut down on debugging time drastically.
- What is an IDE and do I need one?
An IDE or integrated design environment is (usually) a program with a graphical user interface and intergrated tools such as syntax highlighting and line numbering to make development easier. Some IDEs also consist of debugging tools.
- Is there a *best* assembler?
It's a matter of personal preference, and what's availble to you. I advise that you pick one and stick with it, it would just complicate matters switching between assemblers.
- What is an API?
Quote(wikipedia):"An application programming interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them."
In short an API is simply a layer of abstraction between you and the underlying system. You can implement this to do many functions already described by the API.