Presentation is loading. Please wait.

Presentation is loading. Please wait.

Assembly Language for Intel-Based Computers, 5th Edition

Similar presentations


Presentation on theme: "Assembly Language for Intel-Based Computers, 5th Edition"— Presentation transcript:

0 Department of Computer Science Faculty of Science RU.
COS2014 Basic Concepts Department of Computer Science Faculty of Science RU.

1 Assembly Language for Intel-Based Computers, 5th Edition
Kip Irvine

2 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

3 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

4 Welcome to Assembly Language: Example
High-Level Language: x = a + b; Assembly Language: MOV AX, a ADD AX, b MOV x, AX Machine language: A A3 0000

5 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

6 Assembly Language Machine language: Assembly 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

7 CPU, memory, I/O, Operations on variables, …
When you are writing a C program, how does a computer look like? CPU, memory, I/O, Operations on variables,

8 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 Typed storage

9 Why a C program code can run on your computer?
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!

10 We have known … C program Assembly program C compiler x = (a+b) * b
MOV AX, a ADD AX, b MUL c MOV x, AX C compiler Input and output of a compiler

11 We can see that Assembly Lang. is closer to real computer hardware!
From the angle of Assembly Lang., how does a computer look like?

12 A Model of Computer for ASM
MOV AX, a ADD AX, b MOV x, AX Memory a CPU AX b BX PC ... JX x + -

13 We need one more level of translation!
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!

14 Computer Model of a Lower Layer
(from Computer Architecture textbook)

15 A Layered View of Computer
+ if for && CPU Memory i, j, k; xfloat, yfloat; A[0], A[1], … i = i + j; if (A[0]==0) Program Counter i = i + j; xfloat = 1.0; if (A[0]==0) CPU Memory ADD AX, b MOV x, AX a b x AX BX JX ... + - PC MOV AX, a ADD AX, b MOV x, AX xxxxxx xxxxx

16 From Assembly to Binary
MOV AX, a ADD AX, b MUL c MOV x, AX Assembler Input and output of an assembler Machine code

17 Different Levels of Abstractions
temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; High Level Language Program Compiler MOV AX, a ADD AX, b MOV x, AX Assembly Language Program more elaborated later in Sec. 1-2: Virtual Machine Concept Assembler Machine Language Program Machine Interpretation Control Signal ALUOP[0:3] <= InstReg[9:11] & MASK

18 What’s Next? Virtual machine concept (Sec. 1-2)
Data representation (Sec. 1-3)

19 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

20 Virtual Machine Concept
A layered abstraction of computers proposed by A. Tanenbaum Each layer provides an abstract computer, or virtual machine, to its upper layer Virtual machine: A hypothetical computer that can be constructed of either HW or SW What is a computer?

21 Simplest Model of Computers
Program Instructions Input data Compute engine Memory Output data c.f., y = f(x) Layered abstraction: A computer consists of layers of such virtual machine abstractions

22 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

23 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 can be 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 Compute engine Memory Input data Output data Program Instructions

24 Layered Abstraction of Computer
Virtual Machine + if for && CPU Memory i, j, k; xfloat, yfloat; A[0], A[1], … i = i + j; if (A[0]==0) Program Counter i = i + j; xfloat = 1.0; if (A[0]==0) Li CPU Memory ADD AX, b MOV x, AX a b x AX BX JX ... + - PC MOV AX, a ADD AX, b MOV x, AX Li-1 xxxxxx xxxxx

25 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: A F E

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

27 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 the OS level (Level 3) Programs are translated into machine language (Level 2) What kind of computer does it see?

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

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

30 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 clock IR PC

31 Digital Logic Level 0 CPU, constructed from digital logic gates
System bus Memory

32 What’s Next? Virtual machine concept (Sec. 1-2)
Data representation (Sec. 1-3)

33 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

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

35 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

36 Integer Storage Sizes Standard sizes: Why unsigned numbers?
What is the largest unsigned integer that may be stored in 20 bits?

37 Signed Integers The highest bit indicates the sign 1 = negative, 0 = positive If the highest digit of a hexadecimal integer is > 7, the value is negative. Examples: 8A, C5, A2, 9D

38 Forming Two's Complement
Negative numbers are stored in two's complement notation Complement (reverse) each bit Add 1 Why? Note that =

39 Binary Addition Starting with the LSB, add each pair of digits, include the carry if present.

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

41 Translating Binary to Hexadecimal
Each hexadecimal digit corresponds to 4 binary bits. Example: Translate the binary integer to hexadecimal:

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

43 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

44 Data representation: Hex Addition & Multiplication
Hex addition and multiplication tables are large We can still do simple calculations by hand B852h Ah A65h * 100h (Your turn) ABCh B3h E F 0 h * 102h

45 Data representation: Converting to decimal
= 1 * * * * *100 (Human) conversions: hex to decimal ABCDh = 10* * * * = 10* * * = =

46 Data representation: Converting to decimal
(Human) conversions to decimal ABCDh = (((10*16+11)*16+12)*16+13 = (easier on calculator)

47 Data representation: Your Turn: Conversion problems
1234 base or (1234)5= _________ 10

48 Data representation: Conversion from decimal
(Human) conversions from decimal = ??? In hex 2748 = 171 * 171 = 10 * 10 = * so value is ABCh How do we know this is the Hex representation? 2748 = 171 * = (10* ) * = 10 * * * 160 = ABCh

49 Data representation: Your Turn: Conversion problems
Write decimal 58 in binary. Write decimal 194 in base 5

50 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

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

52 Character Storage Character sets Null-terminated String
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

53 Numeric Data Representation
pure binary can be calculated directly ASCII binary string of digits: " " ASCII decimal string of digits: "65" ASCII hexadecimal string of digits: "9C"

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

55 ASCII Character Codes CHAR DECIMAL HEX BINARY '9' 57d 39h 0011 1001b
'A' 65d 41h b 'Z' 90d 5Ah b 'a' 97d 61h b 'z' 122d 7Ah b

56 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 = 0x ;) In computer y = int z = -5; (y = 0xFFFFFFFB;) In computer, z =

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

58 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 ppt "Assembly Language for Intel-Based Computers, 5th Edition"

Similar presentations


Ads by Google