This post presents results of my research regarding to assembler history, my thoughts and speculations on assembler syntax.
The way assemblers look now is rather tradition that comes from 40-s/50-s of the last century. The earliest instruction set definition for a digital computer I have found on the network (code for A.R.C)1includes binary form (example) and a “human readable” semantic expressed in math symbolic extended with arrows for register injection. This kind of “human readable” semantic is still in use.
Coding with this kind of “language” was difficult and error prone. Although, the theory of computing languages already existed at that time, computers were not yet powerful enough to run a compiler. Thus scientists were searching for more convenient way to program a computer. As results of these researches “X-1 assembly system” was published in 1956 and “Symbolic Assembler” was defined in the late 1950s and published in 1962(?), EDSSAC assembly language (reference and the first programmed game).
It seems, real breakthrough has happened with NYAP Autocode for IBM 704 developed at NY University, which, I guess, then become Autocoder for IBM 1401 ??“ perhaps, the first assembler in the industry.
Although I have not done fundamental research on instruction sets of first computers, it seems that one approach (introduced by ?) has become dominating over the others. With this approach every instruction has an operation code at most significant bits while remaining bits are used to keep the operand(s). Thus an instruction can be logically divided onto fields: <opcode>[<operand>??¦]. This approach led to simplification of hardware design and presumably has influence on instruction set mnemonics provided with the computers. Making a language from instruction set mnemonics seems to be a very logical step ??“ the language reference was available, published and recognized by the community
Since that time the core language principles are remaining unchanged and spread over all families and generations of processors and microcontrollers. There are only few exceptions from this rule, such as ADI assembler1 which uses ‘=’ operator for register injection or AT&T syntax style with its variation for operands.
Research on history of macro language
Links on Assembler History
THE SODA MACHINE AND THE SODA LANGUAGE
An Illustrated History of Computers
Timeline of programming languages
Timeline of programming languages by Jorn Barger
A Brief History of Computing Languages
Evolution of the Major Programming Languages
IBM 1401 From Wikipedia
IBM 1401 in Computer Collection
The Art of Assembly Language Programming
AUTOCODER – IBM generalised autocode
NYAP – NYU Compiler System
X-1 – Experimental Assembler For Univac II
FLOW-MATIC – Possibly the first English-like DP language
Automatic Coding For Digital Computer by Dr. Grace Murray Hopper
1Thanks folks from Microchip forum for helping in my research on this matter (original thread)
Special thanks to Leon Heller for sharing link on language for the ARC and pointing to ADI assembler.