Lecture 1 - Rabie A. Ramadan

Download Report

Transcript Lecture 1 - Rabie A. Ramadan

Computer organization &
Assembly Language
Programming
Rabie A. Ramadan
http://www.rabieramadan.org/
[email protected]
http://www.rabieramadan.org/class
es/2014-2015/ICS232/
Class Style

Do not think of the exam


Feel free to stop me at any time


Just think of the class materials and how much
you learn from it
I do not care how much I teach in class as long
as you understand what I am saying
There will be an interactive sessions
in class

you solve some of the problems with my help
Chapter 2 — Instructions: Language of the Computer — 2
When the time is up , just let me know….
Chapter 2 — Instructions: Language of the Computer — 3
Textbook
S. Dandamudi, “Introduction to Assembly
Language Programming,” Second Edition,
Springer, 2005.
Grading
Course Objectives

To introduce basic concepts of computer
organization.

To illustrate the computer organization
concepts by Assembly Language
programming.

To teach Assembly language of most recent
processor such as Intel Pentium processor.



Outline
A user’s view of computer systems  Why program in assembly
language?
What is assembly language?


Relationship to machine language
Advantages of high-level languages



Faster program development
Easier maintenance
Portability





Time-efficiency
Space-efficiency
Accessibility to hardware
Typical applications
Why learn assembly language?
Performance: C versus assembly
language

Multiplication example
Chapter 1: Page 7
What is a Machine ?
Process
Directives
Raw
Material
Final
Product
Machine
In General: Device that processes a series
of raw materials into the desired product
following a well-defined process
Types of Machines
Device
Raw Material
Products
Food Processing
Factory
Natural Fruits,
Vegetables, Meats,
Dairy and Spices
Manufactured
(Packaged) Food
Products
Airport
Planes, Travelers,
Goods
Planes, Travelers,
Goods
Application Files
Decisions
Data
Data
Administrative
Office
Computer
Computer Machine Model
Machine
=
Computer
Process
Directives
=
Program
Program
=
Suite of
Instructions
Instruction
=
Simple Operation
Basic Computer Organization (1)






Need a Unit to Execute
Instructions
Need a Unit to Contain
Programs
Need a Unit to Contain Input
Data
Need a Unit to Contain
Intermediate Stage Data
Need a Unit to Input Data
Need a Unit to Output Data
Central
Processing
Unit (CPU)
Memory
IO
Basic Computer Organization (3)
Memory
Cpu
I/O
Buses
Buses:
Groups of Electrical Signals or Wires That
Establish The Communication Between The
Different Computer System Components
Memory
Similar to a set
of Storage Bins
Each Bin is Called:
A Memory Location
0
Data 1
1
Data 2
2
Each Location has a Content
And an Index
The Content is The Data
and the Index is The Address
Data is Written in Memory
And Read from The MEmory
The CPU Reads Data From Memory
And Writes Data Into Memory
Basic Computer Organization (3)
Memory
Cpu
Address Bus
Data Bus
Control Bus
I/O
Address Bus: Specifies the Address of the Data being Accessed
Data Bus:
Carries the Data to be Transferred
Control Bus: Specifies the Nature of the Transfer:
(Memory Read/Write or I/O)
Memory





Storage Device
2
n
Stores Programs and
Data coded in binary
n
format.
Technically “similar” Address
to a two-dimensional
array of “switches”
A “switch” called a bit
(abbr. for binary digit)
n Address lines
means 2n words of m
1
bits each
0
m
Data
Memory

2 Operations:


COE 205
Read: Copy Data
stored in word of
Address (on
Address lines) to
Data Bus
Write: Store Data
on Data Bus into
word of Address
(on Address lines)
n
Addr
Memory
Read
Write
m
Data
Concept of Address




It is an index in the memory
It represents a “geographic” location of a
word in the memory
Number of Address lines and Word size
determine Memory Capacity (Size)
Most of the time:

COE 205
Memory size = 2n words = 2n * m bits
RAM





RAM: Random Access Memory
Although the name is about the way memory is
accessed. Historically, volatile memory has been
called RAM.
Volatile (do not retain information on power off)
Used mainly as Central Memory for CPUs
Two types of RAM


COE 205
Static: Continuous Retention of Information
Dynamic (DRAM): needs refresh cycle to maintain
information
ROM



Non Volatile
Used to store data (programs) that do not change
often (fixed)
Many types






Mask ROM: Values set at fabrication stage. Values
cannot be changed
Fuse PROM: Values set at burning phase. Values
cannot be changed
EPROM: Can be erased (UV)
EEPROM: Electrically erased
Flash EEPROM: Easily reprogrammable.
New: NVRAM (Non Volatile RAM): Fast access time.
Disk Drives


Hard Drive: suite of
magnetic disks.
Mechanically read and
write data by moving a set
of magnetic head over the
disks
CD-ROM, DVD-ROM:
Suite of optical disks read
by measuring the time of
laser reflexion between “1”
and “0”
N
S
“1”
“0”
Program Execution




A Program is a suite of
instructions
Program Execution is
Sequential
Program is stored in
Memory
Program is executed
by CPU
COE 205
Instruction 1
Instruction 2
Instruction 3
Instruction n
CPU





Executes Programs Stored in Memory
Executes Instructions ONE by ONE
Only “knows” instructions: Instruction Set
DO NOT know any notion of Program as a
single entity.
Everything is a suite of instructions
COE 205
CPU Structure (1)
Is Mainly a Data Processing Unit Controlled
by a Control Unit.
 Data Processing Unit: Datapath




Registers (Scratch pad working space or
temporary data storage)
ALU: Arithmetic and Logic Unit
Internal Buses
Control Unit: Generates Commands to
“drive” Datapath operations
COE 205
CPU Structure (2)
Data Path is Similar to a Pipe Structure where valves
are controlled by the Control Unit
COE 205
Register
Register
ALU
Datapath
Control Unit
Master Clock


Instructions Executed step by step
Need a “Rhythm” Generator to move forward in the
steps:
Time
Clock Cycle
Clock Frequency = 1/Clock Cycle Period : MHz
Every CPU needs a Clock to control the
transition from one execution step to the
next
COE 205
Instruction Set





Instruction Set is the Catalog of the CPU
Defines what are ALL the possible
operations that the CPU can execute
Only Instructions are recognized by CPU.
CPU does NOT “understand” High Level
Language (text).
CPU understands instructions coded in
numbers called machine code.
COE 205
Instruction parameters

Each Instruction specifies an action or a suite of
actions:



Action(s) “identifier” or Operation Code or Opcode
Action arguments or operands
Methods specifying how to access the operands,
called addressing modes
Instruction specified as:
<Opcode> <Operand 1, addr_mode1> <Operand 2, addr_mod
COE 205
Number of Operands




Many types of Instruction Sets
Instruction Set with One Operand: Implicit
Register Called Accumulator. Everything
goes to and from the accumulator:
Instruction Set with Two Operands: Many
registers can be used as accumulators
Instruction Set with Three Operands:
Mainly Register Based.
COE 205
Fetch – Decode - Execute
Cpu
Fetch
Address
of next Instruction
Memory
Instruction
Read Command
Opcode
Decode
Execute
COE 205
Reg
Instruction
Decoder
Execute
Fetch
Immediate
Decode
Address of Programs

Where the Address of next instruction is Stored ?
Need for an Instruction
Pointer
Called: “Program
Counter” PC
• Critical Component of CPU
• Conveniently useful for changing program
sequence (Branch instructions)
Instruction Register

Where is the current instruction going to be stored during
its execution ?
Need for a Register
Called: “Instruction Register” Data
Bus
• Critical Component of CPU
• Internal Register. Cannot be used
(accessed) by instructions
• Holds the current instruction until its
execution is completed
• Tightly Coupled to the decoding
portion of the control unit
• Connected to the datapath (to transfer
operand fields)
Opcode
Op1
Instruction
Decoder
Op2
Program in Memory

Binary code (machine code).
Memory (8-bit)
B8
00
MOV AX,5
05
03
C3
ADD AX,BX
EB
JMP Next
E7
High Level Languages




Machine independent.
Cannot be run directly on the target machine
Need to be translated to machine language
Compiler: program that translates a HLL program to a machine language
program of a specific platform

The Machine language program produced by the compiler is the
executable program.

Translating HLL programs to machine language programs is not a one-toone mapping
 A HLL statement translated to one or more machine language
instructions
 Usually, machine language programs produced by compilers are not
efficient

Deals with Data types (integer, real, complex, user-defined) vs. machine
language: no data types only binary words.
COE 205
Assembly Language

Text version of machine language

Human friendly representation of machine language

Based on mnemonics (easy to memorize abbreviations
of actions) instead of dealing with opcode numbers.

Complicated format simplified with some conventions

Text file translated into machine code by the Assembler
COE 205
Assembler



Program that assemble the
programs written in assembly
language into machine language
Because there is a ONE to ONE
mapping between instructions
written in assembly language and
machine language instructions,
the process is called: assembly
rather than translation.
Disassembly (reverse process) is
also easy because of the ONE to
ONE relation between the
assembly language instructions
and the machine language
instructions
COE 205
MOV DX, 1
BA 0001
MOV AX, BX
8B C3
MOV AX, CX
8B C1
MOV AX, DX
8B C2
ADD AX, 1
83 C0 01
ADD AX, 2
83 C0 02
ADD AX, BX
03 C3
ADD AX, CX
03 C1
ADD AX, i
03 06 0000
SUB AX, 1
83 E8 01
SUB AX, BX
2B C3
ADD AX, 1234h
05 1234
Linker

Program used to link together separately assembled/compiled
programs into a single executable code

Allows the programmers to develop different parts of a large
program separately, test them separately and ‘freeze’ them for
future use.

Allows the programmer to develop store portions of programs
that have been intensively tested and used into a “program
library” for anyone to re-use them.

Produces modular programs and greatly enables the management
of large programming projects
Debugger/Monitor
These are tools that allow the assembly programmers to:

Display and alter the contents of memory and registers while
running their code,

Perform disassembly of their machine code (show the
assembly language equivalent),

Permit them to run their programs, stop (or halt) them, run
them step-by-step or insert break points.

Break points: Positions in the program that if are encountered during
run time, the program will be halted so the programmer can examine
the memory and registers contents and determine what went wrong.
A User’s View of Computer Systems
Chapter 1: Page 38
What Is Assembly Language?

Some example assembly language instructions:
inc
mov
and
add

result
class_size,45
mask1,128
marks,10
MIPS Examples
andi $t2,$t1,15
addu $t3,$t1,$t2
move $t2,$t1
Some points to note:


Assembly language instructions are cryptic
Mnemonics are used for operations


inc for increment, mov for move (i.e., copy)
Assembly language instructions are low level

Cannot write instructions such as
mov
marks, value
Chapter 1: Page 39
What Is Assembly Language? (Cont’d)

Some simple high-level language instructions
can be expressed by a single assembly
instruction
Assembly Language
C
inc result
result++;
mov class_size,45
class_size = 45;
and mask1,128
mask1 &= 128;
add marks,10
marks += 10;
Chapter 1: Page 40
What Is Assembly Language? (Cont’d)

Most high-level language instructions need more
than one assembly instruction
C
size = value;
sum += x + y + z;
Assembly Language
mov
AX,value
mov
size,AX
mov
AX,sum
add
add
add
mov
AX,x
AX,y
AX,z
sum,AX
Chapter 1: Page 41
What Is Assembly Language? (Cont’d)

Readability of assembly language instructions is
much better than the machine language
instructions

Machine language instructions are a sequence of 1s and 0s
Assembly Language
Machine Language
(in Hex)
inc
result
FF060A00
mov
and
add
class_size,45
mask,128
marks,10
C7060C002D00
80260E0080
83060F000A
Chapter 1: Page 42
What Is Assembly Language? (Cont’d)

MIPS examples
Assembly Language
Language
Machine
(in Hex)
nop
00000000
move
$t2,$t15
000A2021
andi
addu
$t2,$t1,15
$t3,$t1,$t2
312A000F
012A5821
Chapter 1: Page 43
Why Program in Assembly Language?

Two main reasons:

Efficiency




Accessibility to system hardware
Space-efficiency


Space-efficiency
Time-efficiency
Assembly code tends to be compact
Time-efficiency

Assembly language programs tend to run faster

Only a well-written assembly language program runs faster

Easy to write an assembly program that runs slower than its high-level
language equivalent
Chapter 1: Page 44
Typical Applications


Application that need one of the three advantages of the
assembly language
Time-efficiency

Time-convenience


Good to have but not required for functional correctness
 Graphics
Time-critical


Necessary to satisfy functionality
Real-time applications
 Aircraft navigational systems
 Process control systems
 Robot control software
 Missile control software
Chapter 1: Page 45
Performance: C versus Assembly Language
5
Time (seconds)
4
3
C version
2
AL version
1
0
0
20
40
60
80
100
Number of calls (in millions)
Last slide
Chapter 1: Page 46