Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
127 views50 pages

Computer Organization & Architecture: Chapter 2 (Lecture 2)

The document discusses different types of instruction sets including the number of addresses they use, their format, common operations like data transfer, arithmetic, logical and control operations. It also covers addressing modes like immediate, direct, register indirect and more to specify operand addresses in memory.

Uploaded by

Sam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
127 views50 pages

Computer Organization & Architecture: Chapter 2 (Lecture 2)

The document discusses different types of instruction sets including the number of addresses they use, their format, common operations like data transfer, arithmetic, logical and control operations. It also covers addressing modes like immediate, direct, register indirect and more to specify operand addresses in memory.

Uploaded by

Sam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 50

Computer Organization &

Architecture

Chapter 2 (Lecture 2)

Instruction Sets

1
Introduction
• Instructions
—Specify operations to be performed by a computer
—Words of a computer’s language
• Instruction set
—Collection of the instructions of a computer
—Vocabulary of a computer’s language
• Elements of an instruction
Introduction…cntd
• Operation code (opcode)
—Specifies the operation to be performed (e.g. ADD, SUB, MOVE,I/O).
—The operation is specified by a binary code, known as the operation
code, or opcode.
• Addresses (operands)
—Provide more information about the operation
—May include:
– Source operands: The operation may involve one or more source
operands, that is , operands that inputs for the operation.
– Destination operands: specify where results go
– Next instruction reference: tells the CPU where to fetch the next
instruction after the execution of the current instruction is
complete.
Introduction…cntd
• Instructions to be read by a computer contain strings of
1s and 0s (They are numbers) (Machine instructions)
• Symbolic representations of machine instructions are
used for convenience (assembly language)
• Even more convenient (High-level languages)
void main()
{ Compiler
main: Assembler
int a,b,c; 0000 0101 0110 0111
ADD c,a,b
c = a+b;
}
Instruction Format
• Defines the layout of the bits of an instruction in
terms of its constituent fields (What does each
field represent and how many bits is it?)
• Common formats:
Instruction Format…cntd
Instruction Format…cntd
• E.g. Assume a CPU has 80 different operations. Each
operand specifies one of 8 CPU registers. How many bits
(minimum) for each field?
How long should an instruction be?

• Opcode: 7 bits
• Reg.1,Reg. 2,Reg.3: 3 bits each(9 bits total)
• Instruction length: 16 bits
Number of Addresses (a)
• 3 addresses
—Operand 1, Operand 2, Result
—May be a forth - next instruction (usually
implicit)
—Not common
—Example ADD X,A,B
– Where X,A,B are memory locations or particular
registers
– This instruction adds the contents of A and B and
puts the result in location X
Number of Addresses (b)
• 2 addresses
—One address doubles as operand and result
—Reduces length of instruction
—Requires some extra work
– Temporary storage to hold some results
—Example ADD A,B
– Where A and B are memory locations or particular
registers
– The instruction Adds the content of A and B and put
the result in location A
Number of Addresses (c)
• 1 address
—Implicit second address
—Usually a register (accumulator)
—Common on early machines
—Example
– LOAD D, this instruction loads the content of D into
the accumulator register (AC)
– STOR Y, this instruction stores the content of AC into
memory location Y
Number of Addresses (d)
• 0 (zero) addresses
—All addresses implicit
—Uses a stack
—e.g. push a
push b
add
pop c
c=a+b
How Many Addresses
• More addresses
—More complex instructions
—More registers
—Fewer instructions per program
• Fewer addresses
—Less complex instructions
—More instructions per program
—Faster fetch/execution of instructions
Three-Address Instructions
a. X = (A + B) * (C + D)
b. Y= (A-B) / (C+D * E).
____________________________________
_
a. X = (A + B) * (C + D)
Instruction Comment
1.ADD R1, A, B R1  A + B
2. ADD R2, C, D R2  C + D
3.MUL X, R1, R2 X R1 * R2

• There are 3 instructions in the program


(a). Three-Address Instructions…Cntd
b. Y= (A-B) / (C+D * E).
Instruction Comment
1. SUB Y,A,B Y A - B
2. MUL T,D,E T D x E
3. ADD T,T,C T T + C
4. DIV Y,Y,T Y Y ÷ T
Two-Address Instructions
a. X = (A + B) * (C + D)
Instruction Comment
MOV R1, A R1  A
ADD R1, B R1  R1 + B
MOV R2, C R2  C
ADD R2, D R2  R2 + D
MUL R1, R2 R1  R1 * R2
MOV X, R1 X R1
• The first symbol listed in an instruction is assumed to
be both a source and destination where the result of
the operation is transferred.
• The most common in commercial computers
Two-Address Instructions…Cntd
b. Y= (A-B) / (C+D * E).
Instruction Comment
• MOVE Y,A Y A
• SUB Y,B Y Y - B
• MOVE T,D T D
• MUL T,E T T*E
• ADD T,C T T + C
• DIV Y,T Y Y÷T
One-Address Instructions
a. X = (A + B) * (C + D)

Instruction Comment
• LOAD A AC  A
• ADD B AC  AC + B
• STORE T T  AC T is address of tempo memory
location
• LOAD C AC  C
• ADD D AC  AC + D
• MUL T AC  AC * T
• STORE X X  AC
• Use an implied AC register for all data manipulation. All operations are done between
the AC register and memory operand
One-Address Instructions…Cntd
b. Y= (A-B) / (C+D * E).
Instruction Comment
• LOAD D AC D AC( Accumulator)
• MUL E AC AC*E
• ADD C AC AC+C
• STOR Y Y AC
• LOAD A AC A
• SUB B AC AC-B
• DIV Y AC AC÷Y
• STOR Y Y AC
 By using Zero address scheme, write a set of
instruction that would perform the above
Arithmetic Operations
Zero-Address Instructions
a. X = (A + B) * (C + D)
Instruction Comment
PUSH A TOS  A
PUSH B TOS  B
ADD TOS  A + B
PUSH C TOS  C
PUSH D TOS  D
ADD TOS  C + D
MUL TOS  (C + D) * (A + B)
POP X X TOS

• Can be found in a stack-organized computer


• Stack-organized computer does not use an address field for the instructions
ADD, and MUL
• However, PUSH, and POP instructions need an address field to specify the
operand Zero-Address : absence of address in computational
instruction( ADD, MUL )
Group Assignment
• By Using Zero, One, two and three addressing
scheme write a set of instruction that would
perform the following Arithmetic Operations
1. X= (A+B/C) / (C+D * E)
2. Y= (A*B) - (B-D * E).
3. Z= (A/B) / (C+D/A).
4. W= (A+B-D) / (C+E * A).
Types of Instruction Operation

• Common types:
—Data transfer(Data movement)

—Arithmetic

—Logical

—Input/output

—Transfer of control(Program flow control)

—System control
Data Transfer
• Copy values from one location to another
(e.g. MOV, PUSH/POP)
MOV destination, source
Destination: can be register or memory location
Source: can be register, memory location or an
immediate number
place the value 20 in CX register
e.g. MOV CX, 20
(CX←20)
MOV CX, [20]
copy value at memory location 20 to CX
Data Transfer…cntd
• PUSH source
• Used to transfer data to stack
Source: can be register or memory location
e.g. PUSH CX copy CX to stack
Data Transfer…cntd
• POP destination
• Used to retrieve data from stack
Destination: can be register or memory location
e.g. POP BX copy data on top of stack to register BX
Arithmetic
• (e.g. ADD, INC, SUB, DEC,MUL,DIV)
ADD destination, source
Destination: can be register or memory location
Source: can be register, memory location or an
immediate number
e.g. ADD CX, BX (CX←CX+BX)
Arithmetic…cntd
• DEC destination
Destination: can be register or memory location
e.g. DEC CX (CX←CX-1)

• MUL source
Source: can be register or memory location
Destination is an accumulator register, AX
e.g. MUL BL (AX←AL x BL)
Logical
• Operate on a bit-by-bit basis
(e.g. AND, OR, XOR, NOT)
e.g. AND CX, BX (CX←CX AND BX)
Input/output
• Instructions to read data from an input module
and to write data to an output module
(e.g. IN, OUT)
IN accumulator, port OUT port, accumulator
Port: address of the I/O module (8-bits for 8086)
e.g. IN AL, 60H (read keyboard port)
Transfer of control
• Instructions discussed so far execute sequentially
• Transfer of control instructions change the
sequence of execution (update value of the
program counter (PC))
• Common transfer of control instructions
— Branch (Jump) instructions
— Procedure call instruction
— Skip instructions
Transfer of control…cntd
• Branch (Jump) Instruction
—Has address of next instruction as an operand
– Conditional branch: branch is made if a certain condition
is met
Transfer of control…cntd
• Unconditional branch: branch is made without
any condition
e.g. Jmp target (Jump to target address)
Transfer of control…cntd
• Procedure call Instructions
—Instruct the processor to go and execute an entire
procedure and return
—Procedure:
– Small, self-contained program within a larger program
(like function in high-level languages)
– Allows same piece of code to be used many times
e.g. CALL subroutine …..RET
Transfer of control…cntd
Addressing Modes
• Addressing mode refers to the specification of the location of
data required by an operation
• Consider the following instruction format

• The addresses (operands) field may reference (specify)


memory location, register or an immediate value
Addressing Modes…Cntd
• How is the address of an operand specified?
• Common addressing modes
—Immediate
—Direct
—Register
—Register indirect
—Displacement
—Stack
Immediate Addressing
• Operand is specified in the instruction itself

Advantage
• Does not require extra memory reference to fetch
the operand
Drawback
• Only a constant can be supplied
• The number of values is limited by the size of the
operand field (e.g. 0 to 255 if the field is 8 bits)
Immediate Addressing Diagram
Direct Addressing
• A memory address is specified in the address field of the
instruction

• Advantage
• Requires only one memory reference
Drawback
• Can address a limited number of memory locations
(relatively smaller address space) (e.g. If the field is 8 bits
the instruction can only access 256 memory locations)
Direct Addressing Diagram
Register Addressing
• Register address is specified in the address field of the instruction
• A n-bit field can specify any one of 2n registers.
• Mostly Operands are located in registers

• Most common addressing mode in most computers


• Q. If a CPU has 32 registers, how many bits are required for
register address field of an instruction?
Ans: 5
Register Addressing
• No memory access
• Very fast execution
• Very limited address space
Register Addressing Diagram
Register Indirect Addressing
• Register that holds memory address is specified in the address
field of the instruction

• Advantage
• Can address larger number of memory locations compared with
direct addressing
Q. If a CPU has 32 registers (16 bits each), how many memory
locations can be addressed using register indirect addressing?
Register Indirect Addressing…Cntd
• EA = [R2]
• Operand is in memory cell pointed to by
contents of register R2
• Large address space ((2n )=(memory
locations)),n= address bits
Register Indirect Addressing Diagram
Displacement Addressing
• Combines direct addressing and register indirect
addressing
• Main memory address is added with a displacement
value to get the effective address in memory
Displacement Addressing…cntd
Known by a variety of names:
Base-register addressing: Address field of instruction
contains displacement value
Displacement Addressing Diagram
Stack Addressing
• An implied addressing that refers to the top of
a stack
• It is implied that the address is contained in
side a stack pointer register
X86 addressing modes

You might also like