A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations (computation) automatically. Modern digital electronic computers can perform generic sets of operations known as programs.
My computing experience dates back to the early 1960s, when higher-level languages were fairly new.It is therefore no wonder that my introduction to computers and computing came through assembler language; specifically, the IBM 7040 assembler language.After programming in assembler exclusively (and enthusiastically) for more than a year, I finally studied Fortran.However, my love affair with assemblers has continued, and I very quickly discovered the lack of literature in this field.In strict contrast to compilers, for which a wide range of literature exists, very little has ever been written on assemblers and loaders.References [1,2,3,64] are the best ones known to me, that describe and discuss the principles of operation of assemblers and loaders.Assembler language textbooks are—of course—very common, but they only talk about what assemblers do, not about how they do it.
One reason for this situation is that, for many years—from the mid 1950s to the mid 1970s—assemblers were in decline.The development of Fortran and other higher-level languages in the early 1950s overshadowed assemblers.The growth of higher-level languages was taken by many a programmer to signal the demise of assemblers, with the result that the use of assemblers dwindled.The advent of the microprocessor, around 1975, caused a significant change, however.
Initially, there were no compilers available, so programmers had to use assemblers, even primitive ones.This situation did not last long, of course, and today, in the early 1990s, there are many compilers available for microcomputers, but assemblers have not been neglected.Virtually all software development systems availablefor modern computers include an assembler.The assemblers described in Ch.8 are typical examples.