An User's View of Computer Systems
An user's view of a computer system depends on the degree of abstraction provided by the underlying software. Shows a hierarchy of levels at which users can interact with a computer system. Moving to the top of the hierarchy shields the user from the lower-level details. At the highest level, the user interaction is simply limited to the interface provided by an application software such as spreadsheet, word processor, etc. The user is expected to have only a rudimentary knowledge of how to operate the system. Problem solving at this level, for example, might be composing a letter by using a word processor application software.
At the next level, problem solving is done in one of the high-level languages such as C, PASCAL, FORTRAN, BASIC, etc. A user interacting with the system at this level should have a detailed knowledge of software development using a high-level language. Typically, these users are application programmers. Level 4 users are knowledgeable about the application and the high-level language that they would use to write the application software. They may not, however, have a very detailed knowledge about the system (unless they are also involved in developing system software such as device drivers, assemblers, or operating systems).
Both levels 4 and 5 are system independent, i.e., independent of the particular processor (CPU) used in the system. For example, an application program written in C can be executed on a system based on an Intel 8OX86 CPU or on a Motorola 680X0 CPU without any modification to the source code. Al you have to do is recompile the program with a C compiler native to the target system. In contrast, software development done at all levels below level 4 is system dependent.
Assembly language programming is also referred to as low-level progranmming because each assembly language instruction performs a much lower-level task compared to an instruction in a high-level language. As a consequence, to perform the same task, assembly language code tends to be much larger than the equivalent high-level language code. Assembly language instructions are native to the particular CPU used in the system. For example, a program written in the 80X86 assembly language cannot be executed on a system based on a 680XO CPU. Programming in assembly language also requires a detailed knowledge about the system components such as the CPU, memory, and so on.
Machine language is a close relative of the assembly language. 1ypically, there is a one-to-one correspondence between the instructions of assembly language and the corresponding machine language. The CPU only understands the machine language, whose instructions consist of a string of 1's and 0's. More on the assembly and machine languages will be said in the next section.
A user's view of various levels of a computer system.
Even though assembly language is considered to be a low-level language, programming in assembly language will not expose you to all the nuts and bolts of the system. Your operating system (e.g., DOS) hides several of thelow-level details so that the assembly language programmer can breath easy.
For example, if you want to read the input given from the system keyboard, you can rely on the services provided by your operating system to do the job. Well, ultimately there has to be something to execute the machine language instructions. This is the system hardware, which consists of digital logic circuits and the associated support electronics. A detailed discussion of this topic is beyond the scope.