According to Wikipedia, first ever assembler / assembly language was implemented for the IBM 701 by [Nathaniel Rochester][1] in circa 1948. Prior to that, all programming was done in machine language. So it follows that the first assembler was written in machine code. This pattern (writing initial versions of assemblers in machine code) probably continued for a number of years. However, these days assemblers and compilers are written in higher level languages, and an assembler or compiler for a new machine architecture is typically developed on a different architecture and cross-compiled. (FWIW - writing and debugging non-trivial programs in machine code is an exceedingly laborious process. Someone developing an assembler in machine code would most likely bootstrap to an assembler written in assembler as soon as possible.) This Wikipedia page on [bootstrapping compilers and assemblers][2] is worth a read ... if this is all baffling to you. [1]: http://en.wikipedia.org/wiki/Nathaniel_Rochester_%28computer_scientist%29 [2]: http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29