Overview - Faculty Personal Homepage

Download Report

Transcript Overview - Faculty Personal Homepage

Experiment 0
COE 205
Computer Organization & Assembly
Language Programming
Term 043
1
Outline
•
•
•
•
•
•
Definition of a program
Instruction atomicity
Assembly language
Tools
Setting up the environment
Policy
2
Definition of a Program
• A sequence of instructions and data that
causes a machine to perform a given task.
• An Instruction has two fields: Operation &
Operands
▪ Operation (Opcode)
▪ Operands: Data
A
B
ADDITION
Y
Operation Addition
Data
A&B
Instruction Y ← ADD A, B
3
Instruction Atomicity
• An instruction is atomic.
▪ Indivisible
▪ Non-interruptible operation
• Hardware ensures the non-interruptible
execution of an instruction.
• A complex operation is made of simple
instructions.
• Example:
▪ Multiplication
- SHIFT
- ADD
4
A User’s View of Computer Systems
• Depends on the degree of abstraction
provided by the underlying software
• We consider a hierarchy of six levels
– Moving to the top of hierarchy shields the
user from the lower-level details
– The top two levels are system independent
5
A User’s View of Computer Systems
(cont.)
– The other lower four levels are system
dependent
• Assembly and machine languages are
specific to a particular processor
• One-to-one correspondence between
assembly language and machine language
6
A User’s View of Computer Systems
(cont.)
7
General Properties of a Personal Computer
• I/O devices – keyboard, scanner, monitor,
printer, projector, light pen, etc.
• Memory unit – where program is kept
(debug, d100 lets look at memory) (u 100
unassemble memory, see what is there)
• CPU – registers, ALU and stack pointer,
control unit and IP (instruction pointer)
8
RAM-Random Access Memory
• This is where our program stays when
we run it. 1600:0100 is an example of a
RAM address.
9
ROM–Read Only Memory
• ROM is read only memory and cannot be
changed. ROM has a program burned in the
chip.
• PROM
• EPROM is erasable programmable read
only memory and is expensive and is done
with very special equipment.
• EEPROM
10
BOOTUP- FIRMWARE
• Firmware lies between hardware and
software. Firmware is the software that is
burned into the chip.
• When you turn on the PC. An address is
loaded into the CPU’s IP. The address is of
the ROM’s firmware. This firmware program
is called the BOOTSTRAP program. Then
the program runs and loads the operating
system. The computer is ready to be used !
11
ROM BIOS
• Address 0 – 1024 interrupt vectors
--------------------------------------------------------------• 1024 – (2028 – 4096) BIOS Data
--------------------------------------------------------------• (about 2028-4096) – 640 KB (about 640,000)
RAM for your program
--------------------------------------------------------------• Above 640KB < 1 MB Video Memory
--------------------------------------------------------------• 1MB – 1.5 MB ROM BIOS – this is Basic Input
Output System.
12
Real Mode / Protected Mode
• All PCs even the real old ones start in
REAL MODE where the first 1 MB is
usable. All modern operating systems such
as LINUX, Widows 95/98/2000/Millennium
/ XP immediately switch to PROTECTED
MODE letting us use all the memory
(except ROM BIOS and where the OS is
located and memory where other’s
programs run)
13
CPU
• Contained in one IC – integrated circuit
• 8080, 80x86 = 80286, 80386, 80486,
etc.
• Pentium, Pentium 2, Celeron (similar),
Pentium 3, Pentium 4, etc.
• ALU – arithmetic logical unit
• CU – control unit
• Fetch, decode, execute
14
A Small Program in Debug
•
•
•
•
•
•
•
•
C:\windows> debug
- a 100
1600:0100 MOV AX,5
1600:0103 INC AX
Hit Enter
-r
-t
Watch IP and current instruction
15
Machine Cycles
• Business Executives, e.g., Discuss Machine
Cycles when they say their PC is 900 MHZ
or 3 GHz.
• Each command such as MOV AX, 5 (move 5
to AX register) takes a few computer cycles
to execute.
• The faster your computer, the more cycles
per second it performs. Cycles per second.
16
Advantages of High-Level Languages
• Program development is faster
– Higher level instructions = less coding
– Some simple high-level language instructions can be
expressed by a single assembly instruction
– But most high-level language instructions need more than
one assembly instruction
• Programs maintenance is easier
– For the same reasons as above
• Programs are portable
– Contain few machine-dependent details
– Can be used with little or no modifications on different
types of machines
– Compiler translates to the target machine language
17
Why Program in Assembly Language?
• Two main reasons:
1. Efficiency
• Space-efficiency
• Time-efficiency
2. Accessibility to system hardware
• Assembly language can be used as a tool to
learn computer organization
– You will know more about the organization and
internal workings of a computer system
18
Space-efficiency
• Assembly code tends to be more compact
than when written in HLL.
• Not a big plus point for most applications
• Code compactness is important in some
cases
– Portable and hand-held device software
19
Time-efficiency
• Assembly language programs tend to run
faster
– Only a well-written assembly language program
runs faster
• Time Convenience – (Graphics, hardware
drivers)
• Time Critical – (Aircraft navigational
systems, Process control systems, Robot
control software, Missile control software)
20
Accessibility to system hardware
• System software typically requires direct
control of the system hardware devices
– Assemblers, linkers, compilers
– Network interfaces and other device drivers
– Video games
21
Bits and Bytes
•
•
•
•
•
•
•
1 or 0 is a bit
4 bits = a nibble (1/4 of a register)
8 bits = 1 byte
2 bytes = 1 word = register size
1024 bytes = 1 KB = 1kilobyte
1,048,576 bytes = 1 MB = 1 megabyte
1,073,741,824 bytes = 1 GB = 1 gigabyte
22
BITS, decimal, hexadecimal
•
•
•
•
•
•
•
•
•
0 off, 1 on
01 = 1
10 = 2
011 =3
100 = 4
101 =5
110 =6
111 = 7
1000 = 8
1001 = 9
1010 = 10 or A
1011 = 11 or B
1100 = 12 or C
1101 = 13 or D
1110 = 14 or E
1111 = 15 or F
23
Bits, Bytes, OpCode
• Viewing machine code equivalent of
instruction set
• C:\WINDOWS>debug
• -a 100
• 106C:0100 MOV AX,5
• 106C:0103
• -d 100
• B8 05 in memory means MOV AX, 05
24
16 Bit Addressing
• The IBM uses 16 bit addressing which lets us use only
65,536 bytes. How do we address up to 1 MB ?
• 1600:0100 (Segment Number:Offset)
• 1600 is really 16000, a zero is added.
• Then 0100 is the other part added on to give the exact
location !
16000 (add 0 to 16-bit segment base value)
+0100 (offset value)
16100 (Physical address)
25
Memory location
• 106C:0100 This is a memory location.
• It is actually 106C0
+0100
107C0
• B8 05 is what is there. The OpCode is B8
26
MNEMONIC
• MOV, INC, are examples of mnemonics
– MOV – move
– INC – increment
27
CISC architecture
• Complex Instruction Set Computing
• This is used by the INTEL 80X86 chips. It
is pronounced SISK. CISC architecture uses
very few registers so the instructions take
many cycles and run slower.
28
RISC Architecture
• Reduced Instruction Set Computing
• This is used by APPLE 680X0 family chips
and one instruction takes 1 machine cycle.
Very fast, very efficient, but many registers
and more difficult to program since there
are more registers and mnemonics to use.
• SPARC stations use RISC
29
PROGRAMS
• Programs are basically a set of instructions
to do some task. Here is a simple assembly
program.
MOV AH,02
// get display ready
MOV DL,41
// Capital A
INT 21h
// Interrupt 21
INT 20h
//interrupt 20, quit
30
NEW Tools
•
•
•
•
•
•
ASCII Chart
What is an A (41 hex)
MOV AH,02h - monitor
MOV DL,41 – 41 is an A
INT 21h - interrupt 21 to execute I/O
(cout << “A”)
31
Exiting a program
• INT 21h
• This is like EXIT_SUCCESS
32