590 likes | 712 Views
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
E N D
COS2014Basic Concepts Department of Computer Science Faculty of Science RU.
Assembly Language for Intel-Based Computers, 5th Edition Kip Irvine
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 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, …
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
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 … C program x = (a+b) * b Assembly program MOV AX, a ADD AX, b MUL c MOV x, AX C compiler
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 + -
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 (from Computer Architecture textbook)
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 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
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
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 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
Digital Logic Level 0 • CPU, constructed from digital logic gates • System bus • Memory
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
Binary Numbers • Digits are 1 and 0 • 1 = true • 0 = false • MSB – most significant bit • LSB – least significant bit • Bit numbering:
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 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