Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

34
Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052

Transcript of Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Page 1: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Experiment 0

COE 205Computer Organization & Assembly

Language ProgrammingTerm 052

Page 2: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Outline

• Definition of a program.

• Instruction atomicity.

• Assembly language.

• Tools.

• Setting up the environment.

• Policy.

Page 3: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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 (Opcode)▪ Operands: Data

ADDITIONA

BY

Operation Addition

Data A & B

Instruction Y ← ADD A, B

Page 4: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

• 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

Instruction Atomicity

Page 5: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

A User’s View of Computer Systems

• Depends on the degree of abstraction provided by the underlying software

• We consider a hierarchy of five levels– Moving to the top of hierarchy shields the user

from the lower-level details– The top two levels are system independent

Page 6: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

Page 7: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

A User’s View of Computer Systems (cont.)

Page 8: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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 unpack memory, see what is there)

• CPU – registers, ALU and stack pointer, control unit and IP (instruction pointer)

Page 9: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

RAM

• Random Access Memory

• This is where our program stays when we run it. 1600:0100 is an example of a RAM address.

Page 10: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

ROM–read only memory

• ROM is read only memory and cannot be changed. ROM has a program burned in the chip.

• EPROM is erasable programmable read only memory and is expensive and is done with very special equipment.

Page 11: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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 !

Page 12: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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.

Page 13: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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/ NT 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 )

Page 14: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

CPU

• Contained in one IC – integrated circuit

• 8080, 80x86 = 80286, 80386, 80486, etc..

• Pentium, Pentium 2, Celeron (similar)

• ALU – arithmetic logical unit

• CU – control unit

• Fetch, decode, execute

Page 15: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Show a small program in debug

• C:\windows> debug• - a 100 • 1600:0100 mov ax,5• 1600:0102 INC AX• Hit Enter• -r• -t • Watch IP and current instruction

Page 16: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Business Executives for example Discuss Machine Cycles when they say their PC

is 900 MHZ or 1 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.

Page 17: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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 reason 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

Page 18: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Why Assembly?

• Program speed

• Compact executable

• Common in embedded systems

• Games, games, games!!!

Page 19: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Why Program in Assembly Language?

• Two main reasons:– Efficiency

• Space-efficiency• Time-efficiency

– 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

Page 20: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Space-efficiency

• Assembly code tends to be compact

• Not a big plus point for most applications

• Code compactness is important in some cases– Portable and hand-held device software– Spacecraft control software

Page 21: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

• Time Convenience – (Graphics, hardware drivers)• Time Critical – (Aircraft navigational systems,

Process control systems, Robot control software, Missile control software)

Page 22: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

Page 23: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

Page 24: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

BITS, decimal, hexadecimal

• 0 off, 1 on 1001 = 9• 01 = 1 1010 = 10 or A• 10 = 2 1011 = 11 or B• 011 =3 1100 = 12 or C• 100 = 4 1101 = 13 or D• 101 =5 1110 = 14 or E• 110 =6 1111 = 15 or F• 111 = 7• 1000 = 8

Page 25: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

Page 26: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

Page 27: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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

• 1600 is really 16000, we add a zero.

• Then 0100 is the other part added on to give the exact location !

Page 28: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

MNEMONIC

• MOV, INC, are examples of mnemonics

• MOV – move

• INC – increment (example int I++;)

Page 29: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

CISC architecture

• Complex Instruction Set Computing – this is what we do on the INTEL 80X86 chips. It is pronounced SISK. CISC architecture uses very few registers so the instructions take many cycles and run slower.

Page 30: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

RISC Architecture

• 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

Page 31: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

DMA

• The control from high speed I/O devices with the CPU is minimal (not synchronous like keyboard and mouse and display)

• Memory to and from the device is done via a DMA controller (8237 chips used for 8088/8086)

Page 32: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

PROGRAMS

• Programs are basically a set of instructions to do some task. Here is a simple assembler program.

• MOV AH,02 // get display ready• MOV DL,41 // Capital A• INT 21h // Interrupt 21• INT 20h //interrupt 20, quit

Page 33: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

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”)

Page 34: Experiment 0 COE 205 Computer Organization & Assembly Language Programming Term 052.

Exiting a program

• INT 21h

• This is like EXIT_SUCCESS