A microassembler is a computer program that helps prepare a microprogram to control the low level operation of a computer in much the same way an assembler helps prepare higher level code for a processor. The difference is that the microprogram is usually only developed by the processor manufacturer and works intimately with the computer hardware. The microprogram implements the operations of the instruction set in which any normal program (including both application programs and operating systems) is written. The use of a microprogram allows the manufacturer to fix certain mistakes, including working around hardware design errors, without modifying the hardware. Another means of employing microassembler-generated microprograms is in allowing the same hardware to run different instruction sets. After it is assembled, the microprogram is then loaded to a control store to become part of the logic of a CPU's control unit.
Some microassemblers are more generalized and are not targeted at a single computer architecture. For example, through the use of macro-assembler-like capabilities, Digital Equipment Corporation used their MICRO2 microassembler for a very wide range of computer architectures and implementations.
If a given computer implementation supports a writeable control store, the microassembler is usually provided to customers as a means of writing customized microcode.
In the process of microcode assembly it is helpful to verify the microprogram with emulating tools before distribution. Nowadays, microcoding has experienced a revival, since it is possible to correct and optimize the firmware (i.e. the microcode) of processing units sold, in order for adaptation to operating systems or for bug fixing means. However, a commonly usable microassembler for today's CPUs is not available to manipulate the microcode. Unfortunately, it is difficult to obtain open knowledge about changing the microcode because of intellectual property reasons.
How microcode can be assembled with a microassembler to control a CPU with own created machine codes on microprogramming basis, can be understood and simulated with e-learning tools like Mikrocodesimulator MikroSim on a didactial point of view.
- "Mikrocodesimulator MikroSim 2010". 0/1-SimWare. Retrieved 2010-10-03.
- "P6 Family Processor Microcode Update, Feature Review". J. Molina, W. Arbaugh. 2000. Retrieved 2010-10-03.
- "A Brief History of Microprogramming". M. Smotherman. 2010. Retrieved 2010-10-03.
- "Computer Structures: Principles and Examples, Part 2, REGIONS OF COMPUTER SPACE, Section 1, MICROPROGRAM-BASED PROCESSORS, Seite 151 ff.". McGraw-Hill Computer Science Series. Retrieved 2010-10-03.
- "Intel(R) 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1, Chapter 8.11: "Microcode update facilities"". Intel Cooperation. December 2009. Retrieved 2010-10-03.