- 111 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about 'COS2014 Basic Concepts' - lenore

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

- Learn about computers
- Computer architecture
- Operating systems
- Data representation
- Hardware devices
- Learn about assembly languages
- Learn about compiling
- Learn how to write embedded programs
- Learn the assemble language for Intel 80x86

Welcome to Assembly Language: Definitions

Assembly language: machine-specific language with a one-to-one correspondence with the machine language for that computer

Machine language: The language a particular processor understands

Assembler: converts programs from assembly language to machine language

Welcome to Assembly Language: Example

High-Level Language:

x = a + b;

Assembly Language:

MOV AX, aADD AX, bMOV x, AX

Machine language:

A1 000206 0004A3 0000

Welcome to Assembly Language: Problems with assembly language

Provides no structure

Is not portable

Applications can be very long

“Hard” to read and understand

Lots of detail required

Assembly Language

Machine language:

Machine instructions: direct instructions to the processor, e.g. to be encoded to control the datapath

A numeric language understood by the processor

Assembly language:

Statements (instructions) in short mnemonics and symbolic reference, e.g. ADD, MOV, CALL, var1, i, j, that have a 1-to-1 relationship with machine instructions

Understood by human

When you are writing a C program，

how does a computer look like？

CPU, memory, I/O,

Operations on variables,

…

A Model of Computer for C

i = i + j;

xfloat = 1.0;

if (A[0]==0)

…

Program

Counter

Memory

i, j, k;

xfloat, yfloat;

&&

+

CPU

A[0], A[1], …

if

for

This model is quite different from what the hardware in a computer does when you run your program！

Why a C program code can run on your computer?

Obviously, someone does some translation for you！

We can see that Assembly Lang. is closer to real computer hardware!

From the angle of Assembly Lang., how does a computer look like?

A Model of Computer for ASM

MOV AX, a

ADD AX, b

MOV x, AX

…

Memory

a

010100110010101

CPU

b

AX

110010110001010

BX

PC

...

JX

x

000000000010010

+ -

still have some distance to the real computer hardware.

e.g. Multi-core CPU、hyperthreading

We need one more level of translation！

Computer Model of a Lower Layer

(from Computer Architecture textbook)

if (A[0]==0)

…

Program

Counter

Memory

i, j, k;

xfloat, yfloat;

&&

+

CPU

A[0], A[1], …

if

for

Memory

ADD AX, b

MOV x, AX

…

a

010100110010101

b

AX

110010110001010

BX

CPU

JX

PC

...

x

000000000010010

+ -

A Layered View of Computeri = i + j;

xfloat = 1.0;

if (A[0]==0)

…

MOV AX, a

ADD AX, b

MOV x, AX

…

xxxxxx

xxxxx

From Assembly to Binary

Assembly

MOV AX, a

ADD AX, b

MUL c

MOV x, AX

Assembler

00000000101000010000000000011000

00000000100011100001100000100001

10001100011000100000000000000000

10001100111100100000000000000100

10101100111100100000000000000000

10101100011000100000000000000100 00000011111000000000000000001000

Machine code

Different Levels of Abstractions

temp = v[k];

v[k] = v[k+1];

v[k+1] = temp;

MOV AX, a

ADD AX, b

MOV x, AX

High Level Language Program

Compiler

Assembly Language Program

more elaborated later in Sec. 1-2: Virtual Machine Concept

Assembler

0000 1001 1100 0110 1010 1111 0101 1000

1010 1111 0101 1000 0000 1001 1100 0110

1100 0110 1010 1111 0101 1000 0000 1001

0101 1000 0000 1001 1100 0110 1010 1111

Machine Language Program

Machine Interpretation

Control Signal

ALUOP[0:3] <= InstReg[9:11] & MASK

°

°

What’s Next?

- Virtual machine concept (Sec. 1-2)
- Data representation (Sec. 1-3)

Virtual Machine Concept

- Purpose of this section:
- Understand the role of assembly language in a computer system
- Side product:
- The principle of layered abstraction for combating complexities, e.g. OSI 7-layer protocol

Virtual Machine Concept

- A layered abstraction ofcomputers proposed byA. Tanenbaum
- Each layer provides anabstract computer, orvirtual machine, to itsupper layer
- Virtual machine:
- A hypothetical computerthat can be constructedof either HW or SW

What is a computer?

Simplest Model of Computers

Program

Instructions

Input data

Computeengine

Memory

Output data

c.f., y = f(x)

Layered abstraction: A computer consists of layers of such virtual machine abstractions

Why Layered Abstraction?

- Big idea: layered abstraction to combat complexities
- A strategy of divide-and-conquer
- Decompose a complex system into layers with well-defined interfaces
- Each layer is easier to manage and handle
- Only need to focus on a particular layer, e.g. to make it the best
- Also, it makes interaction clear
- Particularly if one layer is realized in hardware and the other in software

Instructions

Input data

Computeengine

Memory

Output data

Layered Abstraction of Computer- Each layer as a hypothetical computer, or virtual machine, that runs a programming language
- Can be programmed with the programming language to process inputs and outputs
- Program written in Li canbe mapped to that Li-1 by:
- Interpretation: Li-1 program interprets and executes Li instructions one by one
- Translation: Li program is completely translated into Li-1 program, and runs on Li-1 machine

i = i + j;

if (A[0]==0)

…

Program

Counter

Memory

i, j, k;

xfloat, yfloat;

&&

+

CPU

A[0], A[1], …

if

for

Memory

ADD AX, b

MOV x, AX

…

a

010100110010101

b

AX

110010110001010

BX

CPU

JX

PC

...

x

000000000010010

+ -

Layered Abstraction of Computeri = i + j;

xfloat = 1.0;

if (A[0]==0)

…

Li

MOV AX, a

ADD AX, b

MOV x, AX

…

Li-1

xxxxxx

xxxxx

Languages of Different Layers

English: Display the sum of A times B plus C.

C++: cout << (A * B + C);

Assembly Language:

mov eax,A

mul B

add eax,C

call WriteInt

Intel Machine Language:

A1 00000000

F7 25 00000004

03 05 00000008

E8 00500000

High-Level Language

Level 5

- Application-oriented languages, e.g., C, C++, Java, Perl
- Written with certain programming model in mind
- Variables in storage
- Operators for operations
- Programs compiled into assembly language (Level 4) or interpreted by interpreters

What kind of computer does C see?

Assembly Language

Level 4

- Instruction mnemonics that have a one-to-one correspondence to machine language
- Based on a view of machine: register organization, addressing, operand types and locations, functional units, …
- Calls functions written at theOS level (Level 3)
- Programs are translated intomachine language (Level 2)

What kind of computer does it see?

Operating System

Level 3

- Provides services to Level 4 programs as if it were a computer
- Programs translated and run at the instruction set architecture level (Level 2)

Instruction Set Architecture

Level 2

- Known as conventional machine language
- Attributes of a computer as seen by assembly programmer, i.e. conceptual structure and functional behavior
- Organization of programmable storage
- Data types and data structures
- Instruction set and formats
- Addressing modes and data accessing
- Executed by Level 1 program (microarchitecture)

Microarchitecture

Level 1

- Can be described by register transfer language (RTL)
- Interprets conventional machine instructions (Level 2)
- Executed by digital hardware (Level 0)

Register

Memory

Control Signals

Controller

ALU

N

Z

IR

PC

clock

What’s Next?

- Virtual machine concept (Sec. 1-2)
- Data representation (Sec. 1-3)

Data Representation

- Purpose of this section
- Assembly program often needs to process data, and manage data storage and memory locations need to know data representation and storage
- Binary numbers: translating between binary and decimal
- Binary addition
- Integer storage sizes
- Hexadecimal integers: translating between decimal and hex.; hex. subtraction
- Signed integers: binary subtraction
- Character storage

- Digits are 1 and 0
- 1 = true
- 0 = false
- MSB – most significant bit
- LSB – least significant bit
- Bit numbering:

- Each digit (bit) is either 1 or 0
- Each bit represents a power of 2:

Every binary number is a sum of powers of 2

Integer Storage Sizes

Standard sizes:

Why unsignednumbers?

What is the largest unsigned integer that may be stored in 20 bits?

Signed Integers

- The highest bit indicates the sign1 = negative, 0 = positive

If the highest digit of a hexadecimal integer is > 7, the value is negative. Examples: 8A, C5, A2, 9D

Forming Two's Complement

- Negative numbers are stored in two's complement notation
- Complement (reverse) each bit
- Add 1

Why?

Note that 00000001 + 11111111 = 00000000

Binary Addition

- Starting with the LSB, add each pair of digits, include the carry if present.

Hexadecimal Integers

All values in memory are stored in binary. Because long binary numbers are hard to read, we use hexadecimal representation.

Translating Binary to Hexadecimal

- Each hexadecimal digit corresponds to 4 binary bits.
- Example: Translate the binary integer 000101101010011110010100 to hexadecimal:

Converting Hexadecimal to Decimal

- Multiply each digit by its corresponding power of 16:

dec = (D3 163) + (D2 162) + (D1 161) + (D0 160)

- Hex 1234 equals (1 163) + (2 162) + (3 161) + (4 160),
- or decimal 4,660.
- Hex 3BA4 equals (3 163) + (11 * 162) + (10 161) + (4 160),
- or decimal 15,268.

Data representation:Number systems (bases)

Number systems used

Binary: The internal representation inside the computer. Externally, they may be represented in binary, decimal, or hexadecimal.

Decimal: The system people use.

ASCII representations of numbers used for I/O:

ASCII binary

ASCII octal

ASCII decimal

ASCII hexadecimal

Data representation:Hex Addition & Multiplication

Hex addition and multiplication tables are large

We can still do simple calculations by hand B852h 23Ah + 5A65h * 100h

(Your turn) ABCh 2B3h + EF0h * 102h

Data representation: Converting to decimal

12345 = 1 * 104 + 2 * 103 + 3 * 102 + 4 * 101 + 5*100

(Human) conversions: hex to decimal ABCDh = 10*163 + 11*162+ 12 *161 + 13 *160 = 10*4096 + 11*256 + 12*16 + 13 = 40960 + 2816 + 192 + 13 = 43981

Data representation: Converting to decimal

(Human) conversions to decimal ABCDh = (((10*16+11)*16+12)*16+13 = 43981 (easier on calculator)

Data representation: Your Turn: Conversion problems

111010b = ________ 10

1234 base 5 or (1234)5= _________10

Data representation: Conversion from decimal

(Human) conversions from decimal274810= ??? In hex

2748 = 171 * 16 + 12

171 = 10 * 16 + 11

10 = 0 * 16 + 10 so value is ABCh

How do we know this is the Hex representation?

2748 = 171 * 16 +12

= (10*16 + 11) * 16 + 12

= 10 * 162 + 11 * 161 + 12 * 160

= ABCh

Data representation: Your Turn: Conversion problems

Write decimal 58 in binary.

Write decimal 194 in base 5

Learn How To Do the Following:

- Form the two's complement of a hexadecimal integer
- Convert signed binary to decimal
- Convert signed decimal to binary
- Convert signed decimal to hexadecimal
- Convert signed hexadecimal to decimal

Ranges of Signed Integers

The highest bit is reserved for the sign. This limits the range:

Practice: What is the largest positive value that may be stored in 20 bits?

Character Storage

- Character sets
- Standard ASCII (0 – 127)
- Extended ASCII (0 – 255)
- ANSI (0 – 255)
- Unicode (0 – 65,535)
- Null-terminated String
- Array of characters followed by a null byte
- Using the ASCII table
- back inside cover of book

Numeric Data Representation

- pure binary
- can be calculated directly
- ASCII binary
- string of digits: "01010101"
- ASCII decimal
- string of digits: "65"
- ASCII hexadecimal
- string of digits: "9C"

Character Representation

- ASCII (Table of ASCII Codes)
- American Standard Code for Information Interchange
- Standard encoding scheme used to represent characters in binary format on computers
- 7-bit encoding, so 128 characters can be represented
- 0 to 31 & 127 are "control characters" (cannot print)
- Ctrl-A or ^A is 1, ^B is 2, etc.
- Used for screen formatting & data communication
- 32 to 126 are printable (see the last page in textbook)

ASCII Character Codes

CHAR DECIMAL HEX BINARY

'0' 48d 30h 0011 0000b

'9' 57d 39h 0011 1001b

'A' 65d 41h 0100 0001b

'Z' 90d 5Ah 0101 1010b

'a' 97d 61h 0110 0001b

'z' 122d 7Ah 0111 1010b

Binary Data

- Decimal, hex & character representations are easier for humans to understand; however…
- All the data in the computer is binary
- An int is typically 32 binary digits
- int y = 5; (y = 0x00000005;)
- In computer y = 00000000 00000000 00000000 00000101
- int z = -5; (y = 0xFFFFFFFB;)
- In computer, z = 11111111 11111111 11111111 11111011

Binary Data

- A char is typically 8 binary digits
- char x = '5'; (or char x = 53, or char x = 0x35)
- In computer, x = 00110101
- char x = 5; (or char x = 0x05;)
- In computer, x = 00000101
- Note that the ASCII character 5 has a different binary value than the numeral 5
- Also note that 1 ASCII character = 2 hex numbers

Storage Size Terminology

- Byte
- 8 bits (basic storage size for all data)
- Word
- 16 bits (2 bytes)
- Doubleword
- 32 bits (4 bytes)
- Quadword
- 64 bits (8 bytes)

Download Presentation

Connecting to Server..