05 Instructionsetarchitecture 150216185057 Conversion Gate02

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

Instruction Set

Architecture
CS2052 Computer Architecture
Computer Science & Engineering
University of Moratuwa

Dilum Bandara
Dilum.Bandara@uom.lk
Blocks of a Microprocessor
Program Execution Section Register Processing Section
Literal
Address
RAM &
Operation
Data IO
Accumulator Registers
Instruction
Program Register
Internal data bus
Memory

Address
ALU
Instruction
STACK Program Counter Decoder IO
FLAG &
Special
Set up Function
Modify Set up
Registers
Clock
Reset Timing, Control and Register selection
Interrupts 2

Source: Makis Malliris & Sabir Ghauri, UWE


Instruction Set Architecture (ISA)

Software

Instruction Set

Hardware

Source: Computer Architecture: A Quantitative Approach, J. L. Hennessy & D. A. Patterson, 3rd Edition.
3
ISA (Cont.)
Part of computer architecture related to
programming
Include native data types, instructions, registers,
addressing modes, memory architecture,
interrupt & exception handling, & external I/O
e.g., R1, R2, , PC
e.g., MOV, ADD, INC, AND
ISA specifies the set of opcodes (machine
language), & native commands implemented by
a particular processor
4
Well Known ISAs
x86
Based on Intel 8086 CPU in 1978
Intel family, also followed by AMD
X86-64
64-bit extensions
Proposed by AMD, also followed by Intel
ARM
32-bit & 64-bit
Initially by Acorn RISC Machine
ARM Holding
MIPS
32-bit & 64-bit
By Microprocessor without Interlocked Pipeline Stages (MIPS)
Technologies 5
Well Known ISAs (Cont.)
SPARC
32-bit & 64-bit
By Sun Microsystems
PIC
8-bit to 32-bit
By Microchip
Z80
8-bit
By Zilog in 1976
Many extensions
Intel MMX, SSE, SSE2, AVX
AMD 3D Now!
6
A Good ISA
Lasts through many implementations
Portability, compatibility
Used in many different ways
Servers, desktop, laptop, mobile, tablet
Provides convenient functions to higher layer
Permit efficient implementation at lower layer

7
Example Instructions
Microprocessor that we are going to build will
support following 2 instructions
ADD

LOAD

8
Activating Necessary Blocks

9
Source: www.transtutors.com/homework-help/computer-
science/computer-architecture/cpu/general-register-organization/
Micro-operations
Digital modules are best described by
Registers they contain
Micro-operations performed on data stored on those
registers
Elementary operations done on data in registers
Register Transfer Language
Concise symbolic expressions
ADD
ADD RC, RA, RB RC RA + RB
PC PC + 1
LOAD
LOAD RA, d RA d
PC PC + 1 10
How to Describe a Computer
Set of registers & their functions
Sequence of micro-operations
Controls that initiates & maintains sequence of
micro-operations

Today, from a programming point of view,


Assembly is the lowest level we use to define
these registers, instructions, & their order of
execution

11
Programming in Assembly
To program in Assembly we need
1. Knowledge about hardware design
Registers
Memory addressing
I/O
2. Knowledge about instruction set

12
Registers (Review)
Type of memory located inside CPU
Can hold a single piece of data
Useful in both data processing & control
functionalities
Types
Special purpose registers
Program counter (PC)
Instruction register (IR)
Accumulator or working register (A or W)
Flag register (FLAG or STATUS)
General purpose registers
No special name, typically A, B, C, ... Or R1, R2, R3, ... 13
Format of an Assembly Statement
[Identifier / Operation/ [Operand(s)] [;Comment]
Label] Command/
Op code
Labeling code or What instruction to Data or register Explanatory text.
to indicate a be carried out by contents to be used Optional but very
program CPU in instruction useful, as
destination Only valid Some instructions Assembly
address for instructions are dont need operands programs are
jumps allowed hard to
understand

L20: ADD RC, RA, RB ;RC RA + RB

14
Example Instruction Set
Well use instruction set from PIC 16F87x for our
discussion
Textbook doesnt use a specific set
Most other textbooks may use MIPS or x86
They are still too complex to start with
When you are more familiar, you can learn/use any
new instruction set

15
F file register
W working register
B bit
L literal (number)
Z conditional
execution
d destination bit
d=0 store in W
d=1 store in f
use , w or ,f instead

Source: Makis Malliris &


Sabir Ghauri, UWE

16
Opcode
Determines the
instruction
Registers, bits,
literals depend on
the opcode field

Source: PIC16F87X Data Sheet by


Microchip Technology Inc.
17
Assembler
Assembler translates human readable code into
binary
Binary code specifies opcode & operands
ADDLW 135 means add literal 135 to W register
Assembler converts this to 11 1110 1000 0111
This is what the machine understands

18
Program Operations
Load a register with a given number
Copy data from register to another
Carry out arithmetic & logical operations on a
data word or a pair of data words
Test a bit or word & jump, or not, depending on
result of the test
Jump to a point in the program
Jump to a subroutine
Carry out a special control operation

19
Instruction Classification
Instruction Types Instruction Function
Data transfers Move
Arithmetic, logic Register
Rotates, shifts Arithmetic
Bit set, bit reset, & bit test Logic
General-purpose, CPU Test & Skip
control Jump
Jumps
Calls, returns

20
Data Transfer Instructions
Used to transfer data from one location to
another
Register to Register, Register to Memory, Memory to
Register
MOV
MOVLW 3 ; W 03h
MOVWF R1 ; R1 03h
MOV is same as LDA (Load) in textbook

21
Arithmetic Instructions
Used in arithmetic operations
ADD ADDWF R1 ; W W + R1
ADD ADDLW 3 ; W W + 3
SUB SUBLW 5 ; W W - 5
INC INCF R1 ; R1 R1 + 1

22
ALU (Review)
Data processing
unit
Arithmetic unit Accumulator

Performs
arithmetic
operations
Logic unit
Performs logical
operations
Source: Introduction to PIC Microcontroller Part 1 by Khan Wahid

23
Example Arithmetic Instructions
Write an assembly program to add 5 & 10
Steps
How many registers?
What registers to use?
What instructions are required?
MOV MOVLW 5 ; W 05h
ADD ADDLW 0xA ; W 05h + Ah

24
Logic Operations
Used in bitwise logic operations
AND ANDLW 3 ; W W & 0011
OR IORLW 3 ; W W | 0011
XOR XORLW 3 ; W W 1001
NOT COMF 0x20,1 ;(0x20) (0x20)/

25
Example Logic Operations
Example
Write an assembly program to convert a given
character from uppercase to lowercase & vice versa
If we consider ASCII, this can be achieved by
changing the 5th bit
A = 65 =0x41 = 01000001
a = 97 =0x61 = 01100001

Get XOR with 00100000 = 32 = 0x20

26
Transfer Instructions (Jump
Instructions)
Can be used to jump here & there within program
Can be used to control loops
GOTO GOTO loop ;go to loop label
CALL CALL delay ;call delay subroutine

27
Example Transfer Instructions
Example
Write a program to calculate the total of all integers
from 1 to 10
High-level program

int total = 0;
for (int i=1 ; i<=10; i++)
{
total += i;
}

28
Example Transfer Instructions
(Cont.)
Steps
Are there any conditions/loops?
How many registers?
What registers to use?
What instructions to use?
ADDLW
Increment/decrement instruction INCF, DECF
Lets use memory address 0020h

29
Transfer Instructions (Cont.)
int total = 0;
for (int i=10 ; i!=0; i--)
{
total += i;
}
start movlw 0xa ; w 10
movwf 0x20 ; (0x20) w
movlw 0 ; total
loop addwf 0x0020,0 ; Add
decf 0x0020,1 ; Dec counter
btfss STATUS,Z ; is counter 0?
goto loop ; repeat
nop 30

end
Homework
Example
Write an assembly program to multiply 3 & 4
Steps:
How many registers?
What registers to use?
What instructions to use?
MOV MOVLW 3 ; W 03h
MUL ???

31
Shift Operators >> <<
Move all bits in a value by given no of positions to left or
right
10011011 01110110 10010011
>> 1 >> 3 >> 3
01001101 00001110 00010010

10011011 01110110
<<1 <<3
00110110 10110000
Multiply by powers of 2 value << n (value * 2n)
e.g., 4 << 3 ; (4 * 8) =32
Divide by powers of 2 value >>=n (value / 2n)
e.g., 75 >> 4; 75 / 16 =4
32
Rotate Through Carry

RLF Rotate Left f through Carry


Suppose carry was 1
RLF 9B 1 = 37
RLF 9B 2 = 6F
RRF Rotate Right f through Carry
Suppose carry was 1
RRF 9B 1 = CD
RRF 9B 2 = E6 33
Comparison Operations
Comparing 2 numbers need to be treated with
care due to non-intuitive nature of Carry flag
movlw 2 ; W = 2
subwf Q, W ; W = Q - 2
btfss STATUS, C ; check carry flag
goto Gr_eq ; Q >= 2
goto Less ; Q < 2

34

You might also like