Assemblers generate executable code from assembly language programs. The generated code is usually loaded into the flash program memory of the target microcontroller. Similarly, compilers generate executable code from high-level language programs.