History of Computing. Ahmed Sallam 11/28/2014 1

Similar documents
Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 1: Basic Concepts. Chapter Overview. Welcome to Assembly Language

Chapter Overview. Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 1: Basic Concepts. Printing this Slide Show

Course Syllabus [1/2]

Course overview. Computer Organization and Assembly Languages Yung-Yu Chuang 2006/09/18. with slides by Kip Irvine

ECOM 2325 Computer Organization and Assembly Language. Instructor: Ruba A.Salamah INTRODUCTION

Data Representation COE 301. Computer Organization Prof. Muhamed Mudawar

Course overview. Computer Organization and Assembly Languages Yung-Yu Chuang 2007/09/17. with slides by Kip Irvine

Digital Systems COE 202. Digital Logic Design. Dr. Muhamed Mudawar King Fahd University of Petroleum and Minerals

This podcast will demonstrate a logical approach as to how a computer adds through logical gates.

Number representations

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

Final Labs and Tutors

CMPE223/CMSE222 Digital Logic Design. Positional representation

Digital Logic Design Exercises. Assignment 1

EE292: Fundamentals of ECE

COMP2121: Microprocessors and Interfacing. Number Systems

Kinds Of Data CHAPTER 3 DATA REPRESENTATION. Numbers Are Different! Positional Number Systems. Text. Numbers. Other

Memory Addressing, Binary, and Hexadecimal Review

MACHINE LEVEL REPRESENTATION OF DATA

DIGITAL SYSTEM DESIGN

Agenda EE 224: INTRODUCTION TO DIGITAL CIRCUITS & COMPUTER DESIGN. Lecture 1: Introduction. Go over the syllabus 3/31/2010

Basic Arithmetic (adding and subtracting)

17. Instruction Sets: Characteristics and Functions

Level ISA3: Information Representation

CHW 261: Logic Design

ECE 2020B Fundamentals of Digital Design Spring problems, 6 pages Exam Two 26 February 2014

Computer Architecture and System Software Lecture 02: Overview of Computer Systems & Start of Chapter 2

Dec Hex Bin ORG ; ZERO. Introduction To Computing

9/3/2015. Data Representation II. 2.4 Signed Integer Representation. 2.4 Signed Integer Representation

COMS 1003 Fall Introduction to Computer Programming in C. Bits, Boolean Logic & Discrete Math. September 13 th

UNCA CSCI 255 Exam 1 Spring February, This is a closed book and closed notes exam. It is to be turned in by 1:45 PM.

The LC3's micro-coded controller ("useq") is nothing more than a finite-state machine (FSM). It has these inputs:

Positional notation Ch Conversions between Decimal and Binary. /continued. Binary to Decimal

DLD VIDYA SAGAR P. potharajuvidyasagar.wordpress.com. Vignana Bharathi Institute of Technology UNIT 1 DLD P VIDYA SAGAR

1.1. INTRODUCTION 1.2. NUMBER SYSTEMS

data within a computer system are stored in one of 2 physical states (hence the use of binary digits)

Experimental Methods I

Slide Set 1. for ENEL 339 Fall 2014 Lecture Section 02. Steve Norman, PhD, PEng

Systems Programming. Lecture 2 Review of Computer Architecture I

Outline. What Digit? => Number System. Decimal (base 10) Significant Digits. Lect 03 Number System, Gates, Boolean Algebra. CS221: Digital Design

EC 413 Computer Organization

ECE 2030B 1:00pm Computer Engineering Spring problems, 5 pages Exam Two 10 March 2010

The Building Blocks: Binary Numbers, Boolean Logic, and Gates. Purpose of Chapter. External Representation of Information.

Number System. Introduction. Decimal Numbers

ECE 2020B Fundamentals of Digital Design Spring problems, 6 pages Exam Two Solutions 26 February 2014

Chapter 3: Operators, Expressions and Type Conversion

CS 261 Fall Binary Information (convert to hex) Mike Lam, Professor

Why Don t Computers Use Base 10? Lecture 2 Bits and Bytes. Binary Representations. Byte-Oriented Memory Organization. Base 10 Number Representation

4 Operations On Data 4.1. Foundations of Computer Science Cengage Learning

Tailoring the 32-Bit ALU to MIPS

COMP Overview of Tutorial #2

Arithmetic and Bitwise Operations on Binary Data

ENE 334 Microprocessors

Topic Notes: Bits and Bytes and Numbers

DIGITAL SYSTEM FUNDAMENTALS (ECE 421) DIGITAL ELECTRONICS FUNDAMENTAL (ECE 422) COURSE / CODE NUMBER SYSTEM

Harry H. Porter, 2006

Name: CMSC 313 Fall 2001 Computer Organization & Assembly Language Programming Exam 1. Question Points I. /34 II. /30 III.

ECE 2030D Computer Engineering Spring problems, 5 pages Exam Two 8 March 2012

CDA 3200 Digital Systems. Instructor: Dr. Janusz Zalewski Developed by: Dr. Dahai Guo Spring 2012

T02 Tutorial Slides for Week 2

Lecture 2: Number Systems

ETGG1801 Game Programming Foundations I Andrew Holbrook Fall Lecture 0 - Introduction to Computers 1

Le L c e t c ur u e e 2 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Variables Operators

Electronic Data and Instructions

Logic Design: Part 2

COS 140: Foundations of Computer Science

BINARY SYSTEM. Binary system is used in digital systems because it is:

Bits. Binary Digits. 0 or 1

COMPUTER ORGANIZATION & ARCHITECTURE

We can study computer architectures by starting with the basic building blocks. Adders, decoders, multiplexors, flip-flops, registers,...

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

4 Operations On Data 4.1. Foundations of Computer Science Cengage Learning

CS 261 Fall Mike Lam, Professor. Combinational Circuits

Number Systems and Their Representations

CSCI 2212: Intermediate Programming / C Chapter 15

Why Don t Computers Use Base 10? Lecture 2 Bits and Bytes. Binary Representations. Byte-Oriented Memory Organization. Base 10 Number Representation

Topic Notes: Bits and Bytes and Numbers

Binary Values. CSE 410 Lecture 02

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

The x86 Microprocessors. Introduction. The 80x86 Microprocessors. 1.1 Assembly Language

COE 202- Digital Logic. Number Systems II. Dr. Abdulaziz Y. Barnawi COE Department KFUPM. January 23, Abdulaziz Barnawi. COE 202 Logic Design

Analogue vs. Discrete data

Digital Fundamentals

Read this before starting!

CS 265. Computer Architecture. Wei Lu, Ph.D., P.Eng.

CPE 323 REVIEW DATA TYPES AND NUMBER REPRESENTATIONS IN MODERN COMPUTERS

Assembly Language. Lecture 2 x86 Processor Architecture

1. Mark the correct statement(s)

Assembly Language. Lecture 2 - x86 Processor Architecture. Ahmed Sallam

Groups of two-state devices are used to represent data in a computer. In general, we say the states are either: high/low, on/off, 1/0,...

THE LOGIC OF COMPOUND STATEMENTS

Maciej Sobieraj. Lecture 1

e-pg Pathshala Subject : Computer Science Paper: Embedded System Module: Introduction to Computing Module No: CS/ES/1 Quadrant 1 e-text

Fundamentals of Programming Session 2

Signed Binary Numbers

Moodle WILLINGDON COLLEGE SANGLI. ELECTRONICS (B. Sc.-I) Introduction to Number System

Topics. Computer Organization CS Exam 2 Review. Infix Notation. Reverse Polish Notation (RPN)

Digital Systems. John SUM Institute of Technology Management National Chung Hsing University Taichung, ROC. December 6, 2012

Excerpt from: Stephen H. Unger, The Essence of Logic Circuits, Second Ed., Wiley, 1997

Logic, Words, and Integers

Transcription:

History of Computing Ahmed Sallam 11/28/2014 1

Outline Blast from the past Layered Perspective of Computing Why Assembly? Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 2

Blast from the past Once upon a time Slide rule Abacus 11/28/2014 3

Blast from the past cont.1 17 th Century (Gears/Machines) Curta (1948) Pascaline 11/28/2014 4

Blast from the past cont.2 20 th Century (Electronic) Half Adder Vacuum Tube 11/28/2014 5

Blast from the past cont.3 Memory?!! Punched Card 11/28/2014 6

Blast from the past Everything is there now, let s start to code?!!! Intel Machine Language A1 00000000 F7 25 00000004 03 05 00000008 E8 00500000 = Assembly Language mov eax, A mul B add eax, C call WriteInt C++ language cout<<(a*b+c) 11/28/2014 7

Outline Blast from the past Why Assembly? Layered Perspective of Computing Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 8

Outline Blast from the past Layered Perspective of Computing Why Assembly? Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 9

Layered Architecture Computers are complicated Layers abstraction (Hiding the complexity of layers below) We also layer programming languages! Program execution: Interpretation Compilation (Translation) Every CPU has a built-in interpreter for its own "instruction set" (ISA, Instruction Set Architecture; the binary language it is programmed in) 11/28/2014 10

Machine Levels Level 4 High Level Language Level 3 Assembly Language Level 2 Instruction Set Architecture (ISA) Level 1 Digital Logic 11/28/2014 11

C++ Concepts Visual Studio Programmer (with an editor) Produces a C Program Microsoft C Compiler C Compiler (translator) Produces assembly language MASM Microsoft Assembler "MASM" (translator) Produces Intel Binary code (object file) x86 Intel x86 CPU (e.g., Intel Core i5) Executes (interprets) Intel Binary Instructions 11/28/2014 12

Java Different Concepts JEdit Javacc Java Programmer Produces a Java Program Java Compiler (translator) Produces Java Byte Code (class file) JVM (Java Virtual Machine Interpreter) Runs the byte code to produce output 11/28/2014 13

The Key Concepts 1. A High-Level Language (C, C++, Fortran, Cobol) is compiled (translated) into Assembly Language 2. The Assembly Language (for a specific CPU) is assembled into binary machine language 3. The binary machine language is interpreted by one of the CPUs in the computer High Level Language Assembly Language Instruction Set Architecture (ISA) Digital Logic 4. The CPU (Intel, AMD, etc.) uses digital logic circuits to the results do the interpretation and generate 11/28/2014 14

Linking and Loading Assembling (running MASM) does not actually create a program that can be executed There are (at least) 4 basic steps that need to be performed: Assembling translate code into binary Linking join all the parts together and resolve names Loading move the program into memory Execution run the program 11/28/2014 15

Outline Blast from the past Layered Perspective of Computing Why Assembly? Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 16

Assembly Language Designed for a specific family of CPUs (i.e., Intel x86) Consists of a mnemonic (simplified command word) followed by the needed data Example: mov eax, A Move into register eax the contents of the location called A Generally each mnemonic (instruction) is equivalent to a single binary CPU instruction 11/28/2014 17

CPU Instruction Set Appendix B: (Intel IA-32) we will not cover all Varies for each CPU Intel machines use an approach known as CISC CISC = Complex Instruction Set Computing Lots of powerful and complex (but slow) instructions Opposite is RISC (Reduced) with only a few very simple instructions that run fast 11/28/2014 18

Why Assembly Communicate with hardware (drivers, embedded systems) Games, Graphics Some thing High level programming can t do (context switch) Better understanding of programming (reverse engineering) 11/28/2014 19

Outline Blast from the past Layered Perspective of Computing Why Assembly? Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 20

Data Representation Computers work with binary data (sometimes represented in octal base 8, or hexadecimal base 16) You should know how to translate between these formats THERE ARE NO CALCULATORS ON AN EXAM! I expect you to be able to do simple operations in these bases (you can mostly ignore octal) 11/28/2014 21

Binary Numbers (Base 2) Digits are 1 and 0 1 = true, current flowing/a charge present 0 = false, no current flowing/no charge present MSB most significant bit LSB least significant bit Bits numbered from LSB to MSB, starting from 0 MSB LSB 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 15 0 11/28/2014 22

Binary Decimal 1 0 1 1 0 0 1 0 2 7 =128 2 6 =64 2 5 =32 2 4 =16 2 3 =8 2 2 =4 2 1 = 2 2 0 =1 Simple! Don't memorize formulas from book (makes it harder) Learn the powers of 2: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, Then, just add up the appropriate powers 10110010 = 128 + 32 + 16 + 2 = 178 Real programmers use a calculator! We'll just have simple values in exams so you don't need a calculator and practice the basics 11/28/2014 23

Decimal Binary Repeatedly divide the decimal integer by 2. Each remainder is a binary digit in the translated value: Division Quotient Remainder 37/2 18 1 18/2 9 0 9/2 4 1 4/2 2 0 2/2 1 0 1/2 0 1 37 = 100101 11/28/2014 24

Binary Addition Same as normal addition, from right to left 0 + 0 = 0 0 + 1 = 1, 1 + 0 = 1 1 + 1 = 0 with a carry of 1 carry: 1 + 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 (4) (7) 0 0 0 0 1 0 1 1 (11) bit position: 7 6 5 4 3 2 1 0 11/28/2014 25

Hexadecimal Numbers (Base 16) Binary values are represented in hexadecimal Not that hard: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F YOU WILL NEED THIS! Programmers work frequently in Hex Binary Decimal Hex Binary Decimal Hex 0000 0 0 1000 8 8 0001 1 1 1001 9 9 0010 2 2 1010 10 A 0011 3 3 1011 11 B 0100 4 4 1100 12 C 0101 5 5 1101 13 D 0110 6 6 1110 14 E 0111 7 7 1111 15 F 11/28/2014 26

Binary Hexadecimal Each hexadecimal digit corresponds to 4 binary bits. Example: 000101101010011110010100 Group binary into groups of 4 digits (starting from the RIGHT) Translate the binary into decimal by adding the powers of 1,2,4, and 8 E.g., 0100 = 4, 1001 = 8 + 1 = 9, 0110 = 4 + 2 + 1 = 7, 1010 = 8 + 2 = 10, 0110 = 4 + 2 = 6, 0001 = 1 Translate the decimal into hex: 1 6 10 7 9 4 = 16A794 0001 0110 1010 0111 1001 0100 1 6 A 7 9 4 11/28/2014 27

Hexadecimal Decimal Need to know the powers of 16: 1,16,256, 4096, TOO HARD! Just use a calculator for this! WHAT IS IMPORTANT is to know that, FROM the RIGHT, the digits represent: 160, 161, 162, ALSO REMEMBER: x0 = 1 for all x The rightmost digit in a binary, octal, decimal, or hexadecimal number is the base to the power of 0 11/28/2014 28

Integer Storage Sizes (Types) byte 8 word 16 doubleword 32 quadword 64 Byte = 8 Bits Word = 2 Bytes Doubleword = 2 Words = 4 Bytes Quadword = 4 Words = 8 Bytes = 64 Bits = Max value for a 64 bit CPU Storage Type Max Value Power of 2 Unsigned byte 255 2 8-1 Unsigned word 65,535 2 16-1 Unsigned doubleword 4,294,967,295? 11/28/2014 29

Singed Integers sign bit 1 1 1 1 0 1 1 0 Negative 0 0 0 0 1 0 1 0 Positive 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 11/28/2014 30

Two s Complement Negative numbers are stored in two's complement notation Represents the additive Inverse If you add the number to its additive inverse, the sum is zero. Hexadecimal examples: 6A3D 95C2 + 0001 95C3 21F0 DE0F + 0001 DE10 Starting value: 00000001 Step1: reverse the bits 11111110 Step 2: add 1 to value from step 1 11111110 + 00000001 Sum: two s complement representation 11111111 Note that 00000001 + 11111111 = 00000000 11/28/2014 31

Singed Binary Decimal If the highest bit is a 0, convert it directly as unsigned binary If the highest bit is 1, the number is stored in two s complement, form its two s complement a second time to get its positive equivalent: Starting value: 11110000 Step1: reverse the bits 00001111 Step 2: add 1 to value from step 1 00010000 Convert to decimal and add (-) sign -16 Converting signed decimal to binary: 1. Convert the absolute value into binary 2. If the original decimal is negative, form the two s complement 11/28/2014 32

Max & Min Values Storage Type Range(Min-Max ) Power of 2 Unsigned byte 0 to 255 0 to (2 8-1) Singed byte -128 to +127-2 7 to (2 7-1) Unsigned word 0 to 65,535 0 to (2 16-1) Signed word -32,768 to +32,767-2 15 to (2 15-1) 11/28/2014 33

Character Storage Character sets (Variations of the same thing) 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 Null means zero/0 11/28/2014 34

Using the ASCII Table Back inside cover of book (Need to know this) To find hexadecimal code of a character: ASCII Code of a is 61 hexadecimal Character codes 0 to 31 ASCII control characters Code Description (Decimal) 8 Backspace 9 Horizontal tab 10 Line feed (move to next line) 13 Carriage return (leftmost output column) 27 Escape 11/28/2014 35

Endianism Intel CPUs are "Little Endian" For Words, Doublewords, and Quadwords (i.e., types with more than one byte), Least Significant Bytes Come First Quadword (8 Bytes): B 7 B 6 B 5 B 4 B 3 B 2 B 1 B 0 Memory Address Byte x B0 x+1 B1 x+2 B2 x+3 B3 x+4 B4 x+5 B5 x+6 B6 x+7 B7 11/28/2014 36

Outline Blast from the past Layered Perspective of Computing Why Assembly? Data Representation Base 2, 8, 10, 16 Number systems Boolean operations and algebra 11/28/2014 37

Digital Logic CPUs are constructed from digital logic gates such as NAND, OR, XOR, etc. Implemented using transistors and various families of silicon devices Super complicated Many millions of transistors on a single CPU Logic is the fundamental language of computing 11/28/2014 38

Boolean Algebra The fundamental model by which digital circuits are designed and, as a consequence, in which CPUs operate Basic assembly language instructions thus perform Boolean operations (so we need to know them) Based on symbolic logic, designed by George Boole Boolean expressions created from: NOT, AND, OR 11/28/2014 39

NOT Inverts (reverses) a Boolean value Truth table for Boolean NOT operator: Digital gate diagram for NOT: NOT 11/28/2014 40

AND Truth table for Boolean AND operator: Digital gate diagram for AND: AND 11/28/2014 41

OR Truth table for Boolean OR operator: Digital gate diagram for OR: OR 11/28/2014 42

Operator Precedence 1. Parentheses 2. NOT 3. AND 4. OR 11/28/2014 43

Truth Tables You won't formally have to create these, but you should remember how to trace out a complex logical operation Highly complex logical expressions are often a sign of poor program structure and design! Example: (Y ^ S) (X ^ S) Two-input multiplexer S X Y mux Z 11/28/2014 44

Thoughts Assembly language is how software is constructed at the lowest levels Assembly language has a one-to-one relationship with binary machine language Many programmers never see more than a HLL (e.g., C++) inside and IDE (e.g., Visual Studio) but really, there is a LOT more going on 11/28/2014 45

And Nobody uses octal anymore Hex is nothing more than a useful way to manipulate binary CPUs do 3 things Assembly programming is just using these concepts to do larger and more complicated tasks Add (basic integer math) Compare (Boolean algebra) Move things around 11/28/2014 46