01,02,03-Intro To Basic Concepts
01,02,03-Intro To Basic Concepts
Basic Concepts
Qurat-ul-Ain slide 1
Overview
Welcome to COAL 2012 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools Programmers View of a Computer System Data Representation
Basic Concepts
Qurat-ul-Ain slide 2
Office#N-111C Email: [email protected] Office Hours: Folder on Slate: Computer Organization & Assembly Language Lab Instructors:
To be announced later
Basic Concepts
Qurat-ul-Ain slide 3
Text Books
Computer Organization and Architecture, William Stallings, 6th Edition Kip Irvine: Assembly Language for Intel-Based Computers 5th edition (2007)
Basic Concepts
Qurat-ul-Ain slide 4
Basic Concepts
Qurat-ul-Ain slide 5
Grading Policy
All deadlines will be hard. Re-grading can be requested after grade reporting, within following time limits: Midterm: Same day Assignments: 3 days Quizzes: 3 days On the 4th day everything will be final
Basic Concepts
Qurat-ul-Ain slide 6
General Guidelines
Visit slate course folder regularly for updates Start working on projects/assignments right from the first day. No assignments will be accepted after due date Students are not allowed to copy each others work. Any such work would be marked zero for both students. Repeated cheating can lead to F grade in course. If you miss an assignment/quiz/sessional there will be no way to replace it. Come prepared in the class Quiz can be taken at any time in class. Read book(s)
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 7
Next
Welcome to COAL 2012 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools Programmers View of a Computer System Data Representation
Basic Concepts
Qurat-ul-Ain slide 8
Basic Concepts
Qurat-ul-Ain slide 9
A Hierarchy of Languages
Basic Concepts
Qurat-ul-Ain slide 10
Native to a processor: executed directly by hardware Instructions consist of binary code: 1s and 0s
Assembly language
Slightly higher-level language Readability of instructions is better than machine language One-to-one correspondence with machine language instructions
Assemblers translate assembly to machine code Compilers translate high-level programs to machine code
Basic Concepts
Qurat-ul-Ain slide 12
Translating Languages
English: D is assigned the sum of A times B plus 10.
High-Level Language: D = A * B + 10
A statement in a high-level language is translated typically into several machine-level instructions
mov D, eax
Basic Concepts
Qurat-ul-Ain slide 13
Compiler translates to the target machine language However, Assembly language programs are not portable
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 14
Assembly Language is useful for implementing system software Also useful for small embedded system applications
Space and Time efficiency
Understanding sources of program inefficiency Tuning program performance Writing compact code
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 15
Basic Concepts
Qurat-ul-Ain slide 16
Next
Welcome to COAL 2012 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools (Lab) Programmers View of a Computer System Data Representation
Basic Concepts
Qurat-ul-Ain slide 17
Next
Welcome to COAL 2012 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools Programmers View of a Computer System Data Representation
Basic Concepts
Qurat-ul-Ain slide 18
Level 4
Level 3
Level 2 Level 1
Level 0
Basic Concepts
Programmer's View 2
Application Programs (Level 5)
Written in high-level programming languages Such as Java, C++, Pascal, Visual Basic . . . Programs compile into assembly language level (Level 4)
Assembly Language (Level 4)
Instruction mnemonics are used Have one-to-one correspondence to machine language Calls functions written at the operating system level (Level 3) Programs are translated into machine language (Level 2)
Provides services to level 4 and 5 programs Translated to run at the machine instruction level (Level 2)
Basic Concepts
Qurat-ul-Ain slide 20
Programmer's View 3
Instruction Set Architecture (Level 2)
Specifies how a processor functions Machine instructions, registers, and memory are exposed Machine language is executed by Level 1 (microarchitecture)
Microarchitecture (Level 1)
Controls the execution of machine instructions (Level 2) Implemented by digital logic (Level 0)
Digital Logic (Level 0)
Implements the microarchitecture Uses digital logic gates Logic gates are implemented using transistors
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 21
Next
Welcome to COAL 2012 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools Programmers View of a Computer System Data Representation
Basic Concepts
Qurat-ul-Ain slide 22
Data Representation
Binary Numbers Hexadecimal Numbers Base Conversions Integer Storage Sizes Binary and Hexadecimal Addition Signed Integers and 2's Complement Notation Binary and Hexadecimal subtraction Carry and Overflow Character Storage
Basic Concepts
Qurat-ul-Ain slide 23
Binary Numbers
Digits are 1 and 0
1 = true 0 = false
MSB most significant bit LSB least significant bit Bit numbering:
MSB 15 LSB 0
1011001010011100
Basic Concepts
Qurat-ul-Ain slide 24
Binary Numbers
1 1
26
1
25
1
24
1
23
1
22
1
21
1
20
27
Basic Concepts
Qurat-ul-Ain slide 25
Basic Concepts
Qurat-ul-Ain slide 26
37 = 100101
Basic Concepts
Hexadecimal Integers
Binary values are represented in hexadecimal.
Basic Concepts
Qurat-ul-Ain slide 28
Basic Concepts
Qurat-ul-Ain slide 29
Hex 1234 = (1 163) + (2 162) + (3 161) + (4 160) = Decimal 4,660 Hex 3BA4 = (3 163) + (11 * 162) + (10 161) + (4 160) = Decimal 15,268
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 30
Standard sizes:
Basic Concepts
Qurat-ul-Ain slide 32
Binary Addition
Start with the least significant bit (rightmost bit) Add each pair of bits Include the carry in the addition, if present
carry: 1
0 0
0 0
0 0
0 0
1 1
0 1
0 1
(4) (7)
0
bit position: 7
0
6
0
5
0
4
1
3
0
2
1
1
1
0
(11)
Basic Concepts
Qurat-ul-Ain slide 33
Hexadecimal Addition
Divide the sum of two digits by the number base (16). The quotient becomes the carry value, and the remainder is the sum digit.
36 42 78 28 45 6D 28 58 80
1
6A 4B B5
21 / 16 = 1, remainder 5
Important skill: Programmers frequently add and subtract the addresses of variables and instructions.
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 34
Signed Integers
Several ways to represent a signed number
First part corresponds to the positive numbers ( 0) Second part correspond to the negative numbers (< 0)
Focus will be on the 2's complement representation
Has many advantages over other representations Used widely in processors to represent signed integers
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 35
8-bit Binary Unsigned value value 00000000 00000001 00000010 ... 01111110 01111111 10000000 0 1 2 ... 126 127 128 129 ... 254 255
1
16
0
8
1
4
0
2
0
1
-128 64
10000001 ...
= -128 + 32 + 16 + 4 = -76
Basic Concepts
11111110 11111111
Qurat-ul-Ain slide 36
11011100 = -36
Sign Bit
Highest bit indicates the sign. 1 = negative, 0 = positive
sign bit
Negative
Positive
If highest digit of a hexadecimal is > 7, the value is negative Examples: 8A and C5 are negative bytes A21F and 9D03 are negative words B1C42A00 is a negative double-word
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 38
Sign Extension
Step 1: Move the number into the lower-significant bits Step 2: Fill all the remaining higher bits with the sign bit This will ensure that both magnitude and sign are correct Examples
Infinite 0s can be added to the left of a positive number Infinite 1s can be added to the left of a negative number
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 39
2's complement of 6A3D = 95C2 + 1 = 95C3 2's complement of 92F0 = 6D0F + 1 = 6D10 2's complement of FFFF = 0000 + 1 = 0001
No need to convert hexadecimal to binary
Basic Concepts
Qurat-ul-Ain slide 40
Binary Subtraction
When subtracting A B, convert B to its 2's complement Add A to (B) 00001100 00001100 00000010 + 1 1 1 1 1 1 1 0 (2's complement) 0 0 0 0 1 0 1 0 (same result) Carry is ignored, because Negative number is sign-extended with 1's You can imagine infinite 1's to the left of a negative number Adding the carry to the extended 1's produces extended zeros
Basic Concepts
Qurat-ul-Ain slide 41
Hexadecimal Subtraction
When a borrow is required from the digit to the left, add 16 (decimal) to the current digit's value
16 + 5 = 21
-1 11
Basic Concepts
Qurat-ul-Ain slide 42
Practice: What is the range of signed values that may be stored in 20 bits?
Basic Concepts
Qurat-ul-Ain slide 43
Adding or subtracting unsigned integers Indicates that the unsigned sum is out of range Either < 0 or >maximum unsigned n-bit value
Overflow is important when
Adding or subtracting signed integers Indicates that the signed sum is out of range
Overflow occurs when
Adding two positive numbers and the sum is negative Adding two negative numbers and the sum is positive Can happen because of the fixed number of sum bits
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 44
0 0 0
0 0 0
0 0 0
0 0 1
1 1 0
1 0 1
1 0 1
1 0 1
15 8 23
0 1 0
0 1 0
0 1 0
0 1 0
1 1 0
1 0 1
1 0 1
1 0 1
15 245 (-8) 7
Carry = 0
1
Overflow = 0
1
Carry = 1
1 1
Overflow = 0
0 0 1
1 1 0
0 0 0
0 0 0
1 0 1
1 0 1
1 0 1
1 0 1
79 64 143 (-113)
1 1 0
1 0 1
0 0 1
1 1 1
1 1 0
0 1 1
1 0 1
Carry = 0
Basic Concepts
Overflow = 1
Carry = 1
Overflow = 1
Qurat-ul-Ain slide 45
Character Storage
Character sets
Standard ASCII: 7-bit character codes (0 127) Extended ASCII: 8-bit character codes (0 255) Unicode: 16-bit character codes (0 65,535) Unicode standard represents a universal character set
Defines codes for characters used in all major languages Used in Windows-XP: each character is encoded as 16 bits
Basic Concepts
Qurat-ul-Ain slide 46
1 2 3 ! " #
4 5 6 7 $ % & ' 4 5 6 7 D E F G T U V W d e f g t u v w
8 9 A B C D E F ( ) * + , - . / 8 9 : ; < = > ? H I J K L M N O X Y Z [ \ ] ^ _ h i j k l m n o x y z { | } ~
DEL
0 1 2 3 @ A B C P Q R S ` a b c p q r s
Examples: ASCII code for space character = 20 (hex) = 32 (decimal) ASCII code for 'L' = 4C (hex) = 76 (decimal) ASCII code for 'a' = 61 (hex) = 97 (decimal)
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 47
Control Characters
The first 32 characters of ASCII table are used for control Control character codes = 00 to 1F (hex)
Character 0 is the NULL character used to terminate a string Character 9 is the Horizontal Tab (HT) character Character 0A (hex) = 10 (decimal) is the Line Feed (LF) Character 0D (hex) = 13 (decimal) is the Carriage Return (CR) The LF and CR characters are used together
They advance the cursor to the beginning of next line One control character appears at end of ASCII table
Basic Concepts
Qurat-ul-Ain slide 48
Integer stored in memory in its binary format Ready to be used in binary calculations
ASCII Digit String
Summary
Assembly language helps you learn how software is constructed at the lowest levels Assembly language has a one-to-one relationship with machine language An assembler is a program that converts assembly language programs into machine language A linker combines individual files created by an assembler into a single executable file A debugger provides a way for a programmer to trace the execution of a program and examine the contents of memory and registers A computer system can be viewed as consisting of layers. Programs at one layer are translated or interpreted by the next lower-level layer Binary and Hexadecimal numbers are essential for programmers working at the machine level.
Basic Concepts Computer Organization and Assembly Language NUCES Qurat-ul-Ain slide 50