ASSEMBLY LANGUAGE
A processor can understand and execute machine instructions
Such instructions are simply binary numbers stored in the
computer
If a programmer wished to program directly in machine
language, then it would be necessary to enter the program
as binary data
Consider the simple BASIC statement
N=I+J+K
1
Assembly Language (Contd.)
Suppose we wished to program this statement in machine
language and to initialize I, J, and K to 2, 3, and 4, respectively
This is shown in Figure
The program starts in location 101 (hexadecimal)
Memory is reserved for the four variables starting at location
201
The program consists of four instructions:
Load the contents of location 201 into the AC
Add the contents of location 202 to the AC
Add the contents of location 203 to the AC
Store the contents of the AC in location 204
2
Assembly Language (Contd.)
Writing the program in binary is clearly a tedious and very
error-prone process
A slight improvement is to write the program in hexadecimal
rather than binary notation
We could write the program as a series of lines
Each line contains the address of a memory location and the
hexadecimal code of the binary value to be stored in that
location
Then we need a program that will accept this input, translate
each line into a binary number, and store it in the specified
location 3
Computation of the Formula
N=I+J+K
Hexadecimal
Program 4
Assembly Language (Contd.)
For more improvement, we can make use of the symbolic name
or mnemonic of each instruction
This results in the symbolic program
Each line of input still represents one memory location
Each line consists of three fields, separated by spaces
The first field contains the address of a location
5
Assembly Language (Contd.)
For an instruction, the second field contains the three-letter
symbol for the opcode
If it is a memory-referencing instruction, then a third field
contains the address
To store arbitrary data in a location, we invent a pseudo-
instruction with the symbol DAT
This is merely an indication that the third field on the line
contains a hexadecimal number to be stored in the location
specified in the first field
6
Assembly Language (Contd.)
For this type of input we need a slightly more complex program
The program accepts each line of input, generates a binary
number based on the second and third (if present) fields
Stores it in the location specified
7
Computation of the Formula (Contd.)
N=I+J+K
Symbolic Program
8
Assembly Language (Contd.)
The use of a symbolic program makes life much easier but is
still awkward
In particular, we must give an absolute address for each word
This means that the program and data can be loaded into only
one place in memory, and we must know that place ahead of
time
Worse, suppose we wish to change the program some day by
adding or deleting a line. This will change the addresses of all
subsequent words
9
Assembly Language (Contd.)
A much better system, and one commonly used, is to use
symbolic addresses
Each line still consists of three fields
The first field is still for the address, but a symbol is used instead
of an absolute numerical address
Some lines have no address, implying that the address of that line
is one more than the address of the previous line
For memory-reference instructions, the third field also contains a
symbolic address
10
Assembly Language (Contd.)
With this last refinement, we have an assembly language
Programs written in assembly language (assembly programs)
are translated into machine language by an assembler
This program must not only do the symbolic translation but
also assign some form of memory addresses to symbolic
addresses
11
Computation of the Formula (Contd.)
Assembly N=I+J+K
Program 12
CHAPTER # 10
INSTRUCTION SETS:
CHARACTERISTICS AND
FUNCTIONS
13
MACHINE INSTRUCTION
CHARACTERISTICS
The operation of the processor is determined by the
instructions it executes, referred to as machine instructions or
computer instructions
The collection of different instructions that the processor can
execute is referred to as the processors instruction set
14
Elements of a Machine Instruction
Each instruction must contain the information required by the
processor for execution
State diagram shows the steps involved in instruction execution
and, by implication, defines the elements of a machine
instruction
These elements are as follows:
Operation code: Specifies the operation to be performed (e.g.,
ADD, I/O). The operation is specified by a binary code, known
as the operation code, or opcode
15
Elements of a Machine Instruction
(Contd.)
Source operand reference: The operation may involve one or
more source operands, that is, operands that are inputs for the
operation
Result operand reference: The operation may produce a result
Next instruction reference: This tells the processor where to
fetch the next instruction after the execution of this instruction
is complete
16
Elements of a Machine Instruction
(Contd.)
In most cases, the next instruction to be fetched immediately
follows the current instruction
In those cases, there is no explicit reference to the next
instruction
17
Elements of a Machine Instruction
(Contd.)
In most cases, the next instruction to be fetched immediately
follows the current instruction
In those cases, there is no explicit reference to the next
instruction
When an explicit reference is needed, then the main memory
must be supplied
18
Elements of a Machine Instruction
(Contd.)
Source and result operands can be in one of four areas:
Main memory: As with next instruction references, the
main memory address must be supplied
Processor register: With rare exceptions, a processor
contains one or more registers that may be referenced by
machine instructions. If only one register exists, reference
to it may be implicit. If more than one register exists, then
each register is assigned a unique name or number, and
the instruction must contain the number of the desired
register.
19
Elements of a Machine Instruction
(Contd.)
Immediate: The value of the operand is contained in a
field in the instruction being executed
I/O device: The instruction must specify the I/O module
and device for the operation
20
Instruction Representation
Within the computer, each instruction is represented by a
sequence of bits
The instruction is divided into fields, corresponding to the
constituent elements of the instruction
A simple example of an instruction format is shown in next figure
With most instruction sets, more than one format is used
During instruction execution, an instruction is read into an
instruction register (IR) in the processor
The processor must be able to extract the data from the various
instruction fields to perform the required operation
21
Instruction Representation (Contd.)
It is difficult to deal with binary representations of machine
instructions - use a symbolic representation of machine
instructions
Opcodes are represented by abbreviations, called mnemonics,
that indicate the operation
Common examples include
ADD Add SUB Subtract
MUL Multiply DIV Divide
LOAD Load data from memory
STOR Store data to memory
22
A Simple Instruction Format
23
Instruction Representation (Contd.)
Operands are also represented symbolically
For example, the instruction
ADD R, Y
May mean add the value contained in data location Y to the
contents of register R
In this example, Y refers to the address of a location in
memory, and R refers to a particular register
Note that the operation is performed on the contents of a
location, not on its address
24
Instruction Types
Consider a high-level language instruction - for example
X=X+Y
This statement instructs the computer to add the value stored
in Y to the value stored in X and put the result in X
Let us assume that the variables X and Y correspond to
locations 513 and 514
If we assume a simple set of machine instructions, this
operation could be accomplished with three instructions:
1. Load a register with the contents of memory location 513
2. Add the contents of memory location 514 to the register.
3. Store the contents of the register in memory location 513
25
Instruction Types (Contd.)
A high-level language expresses operations in a concise
algebraic form, using variables
A machine language expresses operations in a basic form
involving the movement of data to or from registers
A computer should have a set of instructions that allows the
user to formulate any data processing task
Any program written in a high-level language must be
translated into machine language to be executed. Thus, the
set of machine instructions must be sufficient to express any
of the instructions from a high-level language