cos2014 basic concepts n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
COS2014 Basic Concepts PowerPoint Presentation
Download Presentation
COS2014 Basic Concepts

Loading in 2 Seconds...

play fullscreen
1 / 59

COS2014 Basic Concepts - PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on

COS2014 Basic Concepts. Department of Computer Science Faculty of Science RU. Assembly Language for Intel-Based Computers, 5 th Edition. Kip Irvine. Why study assembly language?. Learn about computers Computer architecture Operating systems Data representation Hardware devices

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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
cos2014 basic concepts

COS2014Basic Concepts

Department of Computer Science

Faculty of Science

RU.

slide3

Why study assembly language?

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

slide8

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

Typed storage

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

slide10

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 have known
We have known …

C program

x = (a+b) * b

Assembly program

MOV AX, a

ADD AX, b

MUL c

MOV x, AX

C compiler

slide12

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

+ -

slide14

Assembly program/machine code

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
Computer Model of a Lower Layer

(from Computer Architecture textbook)

a layered view of computer

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

+ -

A Layered View of Computer

i = i + j;

xfloat = 1.0;

if (A[0]==0)

MOV AX, a

ADD AX, b

MOV x, AX

xxxxxx

xxxxx

from assembly to binary
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
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
What’s Next?
  • Virtual machine concept (Sec. 1-2)
  • Data representation (Sec. 1-3)
virtual machine concept
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 concept1
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
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
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
layered abstraction of computer

Program

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
layered abstraction of computer1

Virtual 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 Computer

i = 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
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
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 language1
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
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
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
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

digital logic
Digital Logic

Level 0

  • CPU, constructed from digital logic gates
  • System bus
  • Memory
what s next1
What’s Next?
  • Virtual machine concept (Sec. 1-2)
  • Data representation (Sec. 1-3)
data representation
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
slide35

Binary Numbers

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

Binary Numbers

  • 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
Integer Storage Sizes

Standard sizes:

Why unsignednumbers?

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

signed integers
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
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
Binary Addition
  • Starting with the LSB, add each pair of digits, include the carry if present.
hexadecimal integers
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
Translating Binary to Hexadecimal
  • Each hexadecimal digit corresponds to 4 binary bits.
  • Example: Translate the binary integer 000101101010011110010100 to hexadecimal:
converting hexadecimal to decimal
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
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
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
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 decimal1
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
Data representation: Your Turn: Conversion problems

111010b = ________ 10

1234 base 5 or (1234)5= _________10

data representation conversion from decimal
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 problems1
Data representation: Your Turn: Conversion problems

Write decimal 58 in binary.

Write decimal 194 in base 5

learn how to do the following
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
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 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
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
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
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
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 data1
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
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)