0% found this document useful (0 votes)
8 views

Lec2 Assembly

Uploaded by

elkassas380
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Lec2 Assembly

Uploaded by

elkassas380
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

Blast from the past

 Once upon a time

Slide rule

Abacus

10/15/2014 Assemly Language-Lecture 1 8


Blast from the past cont.1

 17th Century (Gears/Machines)

Curta (1948)

Pascaline

10/15/2014 Assemly Language-Lecture 1 9


Blast from the past cont.2

 20th Century (Electronic)

Vacuum Tube

Half Adder

10/15/2014 Assemly Language-Lecture 1 10


Blast from the past cont.3

 Memory ?!!

Punched Card

10/15/2014 Assemly Language-Lecture 1 11


Blast from the past

 Everything is there now, let’s start to code ?!!!


Intel Machine Language Assembly Language

A1 00000000 mov eax, A


F7 25 00000004 mul B
03 05 00000008
= add eax, C
E8 00500000 call WriteInt

C++ language

cout<<(A*B+C)

10/15/2014 Assemly Language-Lecture 1 12


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)

10/15/2014 Assemly Language-Lecture 1 14


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)

10/15/2014 Assemly Language-Lecture 1 16


Machine Levels

High Level
Level 4
Language

Level 3 Assembly Language

Instruction Set
Level 2 Architecture (ISA)

Level 1 Digital Logic

10/15/2014 Assemly Language-Lecture 1 17


C++ Concepts
• Programmer (with an editor)
Visual
Studio
• Produces a C Program

• C Compiler (translator)
Microsoft C
Compiler
• Produces assembly language (object file)

• Microsoft Assembler "MASM" (translator)


MASM • Produces Intel Binary code

• Intel x86 CPU (e.g., Intel Core i5)


x86 • Executes (interprets) Intel Binary Instructions

10/15/2014 Assemly Language-Lecture 1 18


Java – Different Concepts

•Programmer
JEdit •Produces a Java Program

•Java Compiler (translator)


Javacc •Produces Java Byte Code (class file)

•JVM (Java Virtual Machine – Interpreter)


Java •Runs the byte code to produce output

10/15/2014 Assemly Language-Lecture 1 19


The Key Concepts
1. A High-Level Language (C, C++, Fortran,
High Level
Cobol) is compiled (translated) into Assembly Language
Language Assembly
Language
2. The Assembly Language (for a specific CPU)
Instruction Set
is assembled into binary machine language
Architecture (ISA)
3. The binary machine language is interpreted by
Digital Logic
one of the CPUs in the computer

4. The CPU (Intel, AMD, etc.) uses digital logic


circuits to do the interpretation and generate
the results

10/15/2014 Assemly Language-Lecture 1 20


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

10/15/2014 Assemly Language-Lecture 1 21


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

10/15/2014 Assemly Language-Lecture 1 22


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

10/15/2014 Assemly Language-Lecture 1 23


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

10/15/2014 Assemly Language-Lecture 1 24


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)

10/15/2014 Assemly Language-Lecture 1 26


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
1011001010011100
15 0

10/15/2014 Assemly Language-Lecture 1 27


Binary  Decimal
1 0 1 1 0 0 1 0

27=128 26=64 25=32 24=16 23=8 22=4 21 = 2 20=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

10/15/2014 Assemly Language-Lecture 1 28


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
10/15/2014 Assemly Language-Lecture 1 29
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 (4)

+ 0 0 0 0 0 1 1 1 (7)

0 0 0 0 1 0 1 1 (11)
bit position: 7 6 5 4 3 2 1 0

10/15/2014 Assemly Language-Lecture 1 30


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

10/15/2014 Assemly Language-Lecture 1 31


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

10/15/2014 Assemly Language-Lecture 1 32


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

10/15/2014 Assemly Language-Lecture 1 33


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 28-1
Unsigned word 65,535 216-1
Unsigned doubleword 4,294,967,295 ?

10/15/2014 Assemly Language-Lecture 1 34


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 

10/15/2014 Assemly Language-Lecture 1 35


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.

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


 Hexadecimal examples:
 6A3D  95C2 + 0001  95C3
 21F0  DE0F + 0001  DE10
10/15/2014 Assemly Language-Lecture 1 36
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

10/15/2014 Assemly Language-Lecture 1 37


Max & Min Values
Storage Type Range(Min-Max ) Power of 2
Unsigned byte 0 to 255 0 to (28-1)
Singed byte -128 to +127 -27 to (27-1)
Unsigned word 0 to 65,535 0 to (216-1)
Signed word -32,768 to +32,767 -215 to (215-1)

10/15/2014 Assemly Language-Lecture 1 38


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

10/15/2014 Assemly Language-Lecture 1 39


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
10/15/2014 Assemly Language-Lecture 1 40
Endianism
 Intel CPUs are "Little Endian"
 For Words, Doublewords, and Quadwords (i.e., types with more than one
byte), Least Significant Bytes Come First
Memory
 Quadword (8 Bytes):
Address Byte
x B0
B7 B6 B5 B4 B3 B2 B1 B0
x+1 B1
x+2 B2
x+3 B3
x+4 B4
x+5 B5
x+6 B6
x+7 B7

10/15/2014 Assemly Language-Lecture 1 41


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

10/15/2014 Assemly Language-Lecture 1 43


NOT
 Inverts (reverses) a Boolean value
 Truth table for Boolean NOT operator:

Digital gate diagram for NOT:

NOT

10/15/2014 Assemly Language-Lecture 1 44


AND
Truth table for Boolean AND operator: 

Digital gate diagram for AND:

AND

10/15/2014 Assemly Language-Lecture 1 45


OR
Truth table for Boolean OR operator: 

Digital gate diagram for OR:

OR

10/15/2014 Assemly Language-Lecture 1 46


Operator Precedence
1. Parentheses
2. NOT
3. AND
4. OR

10/15/2014 Assemly Language-Lecture 1 47


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
mux Z
Y

10/15/2014 Assemly Language-Lecture 1 48


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

10/15/2014 Assemly Language-Lecture 1 49


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

10/15/2014 Assemly Language-Lecture 1 50


Basic Computer Design
 Clock synchronizes CPU operations
 Control unit (CU) coordinates sequence of execution steps
 ALU performs arithmetic and bitwise processing

data bus

registers

I/O I/O
Central Processor Unit Memory Storage
Device Device
(CPU) Unit
#1 #2

ALU CU clock

control bus

address bus

5
5
Clock
 Synchronizes all CPU and bus operations

 Clock cycle measures time of a single operation

 A machine instruction requires at least one clock cycle to execute,


 a few require in excess of 50 clocks (the multiply instruction on the 8088 processor)

 Instructions requiring memory access often have empty clock cycles


(wait states)
 differences in speeds of the CPU, the system bus, and memory circuits.

one cycle

6
Instruction Execution Cycle

 Fetch instruction

 Decode

 Fetch operands
 Memory  registers (internal)

 Execute

 Store output

7
Reading from Memory
 Multiple cycles are required when reading from memory, because it
responds much more slowly than the CPU

 The steps are: Cycle 1 Cycle 2 Cycle 3 Cycle 4

CLK
 address placed on address bus
Address
ADDR
 Read Line (RD) set low (0)
RD
 CPU waits one cycle for memory
Data
to respond DATA

 Read Line (RD) goes to 1, indicating that the data is on the data bus

8
Cache Memory
 High‐speed expensive static RAM both inside and outside
the CPU

 The first time a program reads a block of data, it leaves a


copy in the cache.
 If the program needs to read the same data a second time, it looks
for the data in cache.

 Cache hit: when data to be read is already in cache memory

 Cache miss: when data to be read is not in cache memory

9
Multitasking
 OS can run multiple programs at the same time

 Multiple threads of execution within the same program

 Scheduler utility assigns a given amount of CPU time to


each running program

 Rapid switching of tasks


 Provides illusion that all programs are running at once

 CPU must support task switching (context switching)

10

You might also like