# Microassembler

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Microassembler
> Markdown URL: https://mediated.wiki/source/Microassembler.md
> Source: https://en.wikipedia.org/wiki/Microassembler
> Source revision: 1164512878
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{More citations needed|date=October 2014}}
A '''microassembler''' is a [computer program](/source/computer_program) that helps prepare a [microprogram](/source/microcode), called ''firmware'', to control the low level operation of a computer in much the same way an [assembler](/source/Assembly_language) helps prepare higher level code for a [processor](/source/central_processing_unit). The difference is that the microprogram is usually only developed by the processor manufacturer and works intimately with the [computer hardware](/source/computer_hardware). On a microprogrammed computer the microprogram implements the operations of the [instruction set](/source/instruction_set) in which any normal program (including both [application programs](/source/application_software) and [operating system](/source/operating_system)s) 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 set](/source/instruction_set)s. After it is assembled, the microprogram is then loaded to a [control store](/source/control_store) to become part of the logic of a [CPU](/source/Central_processing_unit)'s [control unit](/source/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](/source/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](/source/Control_store), the microassembler is usually provided to customers as a means of writing customized microcode.

In the process of [microcode](/source/microcode) assembly it is helpful to verify the microprogram with emulation  tools before distribution. Nowadays, microcoding has experienced a revival, since it is possible to correct and optimize the firmware of processing units already manufactured or sold, in order to adapt to specific [operating system](/source/operating_system)s or to fix hardware bugs. However, a commonly usable microassembler for today's CPUs is not available to manipulate the microcode. Knowledge of a processor's microcode is usually considered proprietary information so it is difficult to obtain information about how to modify it.

==External links==
*{{cite web|url=http://www.mikrocodesimulator.de/index_eng.php |title=Mikrocodesimulator MikroSim 2010|publisher=0/1-SimWare |access-date=2010-10-03}}
*{{cite web|url=http://www.cs.clemson.edu/~mark/uprog.html
 |title=A Brief History of Microprogramming|publisher=M. Smotherman |year=2010 |access-date=2010-10-03}}
*{{cite web|url=http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures_Principles_and_Examples/csp0167.htm
 |title=Computer Structures: Principles and Examples, Part 2, REGIONS OF COMPUTER SPACE, Section 1, MICROPROGRAM-BASED PROCESSORS, Seite 151 ff. |publisher=McGraw-Hill Computer Science Series |access-date=2010-10-03}}
*{{cite web|url=http://www.intel.com/Assets/PDF/manual/253668.pdf |title=Intel(R) 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1, Chapter 8.11: "Microcode update facilities"|publisher=Intel Corporation |date=December 2009 |access-date=2010-10-03}}

{{-}}
{{CPU technologies}}

Category:Assemblers

---
Adapted from the Wikipedia article [Microassembler](https://en.wikipedia.org/wiki/Microassembler) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Microassembler?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
