Computer Organization and Assembly Language: Lecture 11 & 12 Instruction Sets: Characteristics and Functions
Computer Organization and Assembly Language: Lecture 11 & 12 Instruction Sets: Characteristics and Functions
Computer Organization and Assembly Language: Lecture 11 & 12 Instruction Sets: Characteristics and Functions
Lecture 11 & 12
Instruction Sets: Characteristics and Functions
Machine Instruction Characteristics
Types of Operands
Course Instructor: Engr. Aisha Danish
What is an Instruction Set?
The complete collection of instructions that are
understood by a CPU
Machine Code
Binary
Usually represented by assembly codes
Elements of an Instruction
Operation code (Op code)
Do this
Source Operand reference
To this
Result Operand reference
Put the answer here
Next Instruction Reference
When you have done that, do this...
Instruction Cycle State Diagram
Instruction Representation
In machine code each instruction has a unique bit
pattern
For human consumption (well, programmers
anyway) a symbolic representation is used
e.g. ADD, SUB, LOAD
Operands can also be represented in this way
ADD A,B
Simple Instruction Format
Instruction Types
Data processing
Data storage (main memory)
Data movement (I/O)
Program flow control
Number of Addresses (a)
3 addresses
Operand 1, Operand 2, Result
a = b + c;
May be a forth - next instruction (usually implicit)
Not common
Needs very long words to hold everything
Number of Addresses (b)
2 addresses
One address doubles as operand and result
a=a+b
Reduces length of instruction
Requires some extra work
Temporary storage to hold some results
Number of Addresses (c)
1 address
Implicit second address
Usually a register (accumulator)
Common on early machines
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 (powerful?) instructions
More registers
Inter-register operations are quicker
Fewer instructions per program
Fewer addresses
Less complex (powerful?) instructions
More instructions per program
Faster fetch/execution of instructions
Design Decisions (1)
Operation repertoire
How many ops?
What can they do?
How complex are they?
Data types
Instruction formats
Length of op code field
Number of addresses
Design Decisions (2)
Registers
Number of CPU registers available
Which operations can be performed on which
registers?
Addressing modes (later…)
RISC v CISC
Types of Operand
Addresses
Numbers
Integer/floating point
Characters
ASCII etc.
Logical Data
Bits or flags
(Aside: Is there any difference between numbers and characters? Ask a C
programmer!)
x86 Data Types
8 bit Byte
16 bit word
32 bit double word
64 bit quad word
128 bit double quadword
Addressing is by 8 bit unit
Words do not need to align at even-numbered
address
Data accessed across 32 bit bus in units of double
word read at addresses divisible by 4
Little endian
x86 Numeric Data Formats