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

Lecture_2

The document is a lecture on computer organization and assembly language, focusing on basic concepts, virtual machines, data representation, and boolean operations. It introduces assembly language applications, compares assembly language with high-level languages, and discusses data representation including binary and hexadecimal systems. Additionally, it covers boolean operations and their algebraic foundations.

Uploaded by

Hurr Abbas
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Lecture_2

The document is a lecture on computer organization and assembly language, focusing on basic concepts, virtual machines, data representation, and boolean operations. It introduces assembly language applications, compares assembly language with high-level languages, and discusses data representation including binary and hexadecimal systems. Additionally, it covers boolean operations and their algebraic foundations.

Uploaded by

Hurr Abbas
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 49

COMPUTER ORGANIZATION

AND ASSEMBLY LANGUAGE

LECTURE#2

Asra Masood

Slides Courtesy: Pearson Education, 2014.


ASSEMBLY LANGUAGE FOR
X86 PROCESSORS

7th Edition
Kip Irvine

Chapter 1: Basic Concepts


CHAPTER
OVERVIEW

• Welcome to Assembly Language


• Virtual Machine Concept
• Data Representation
• Boolean Operations

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 3


WELCOME TO ASSEMBLY
LANGUAGE

• Some Good Questions to Ask


• Assembly Language
Applications

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 4


QUESTIONS
TO ASK
• Why am I learning Assembly
Language?
• What background should I have?
• What is an assembler?
• What hardware/software do I need?
• What types of programs will I
create?
• What do I get with this book?
• What will I learn?

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 5


WELCOME TO ASSEMBLY
LANGUAGE (CONT)
• How does assembly language (AL) relate to
machine language?
• How do C++ and Java relate to AL?
• Is AL portable?
• Why learn AL?

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 6


ASSEMBLY LANGUAGE
APPLICATIONS
• Some representative types of
applications:
• Business application for single
platform
• Hardware device driver
• Business application for multiple
platforms
• Embedded systems & computer
games

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 7

(see next panel)


COMPARING ASM TO HIGH-LEVEL
LANGUAGES

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 8


WHAT'S NEXT
• Welcome to Assembly
Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 9


VIRTUAL
MACHINE
CONCEPT
• Virtual Machines
• Specific Machine
Levels

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 10


VIRTUAL
MACHINES
• Tanenbaum: Virtual machine concept
• Programming Language analogy:
• Each computer has a native machine language
(language L0) that runs directly on its hardware
• A more human-friendly language is usually
constructed above machine language, called
Language L1

• Programs written in L1 can run two different ways:


• Interpretation – L0 program interprets and
executes L1 instructions one by one
• Translation – L1 program is completely translated
into an L0 program, which then runs on the
computer hardware
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 11
TRANSLATING
LANGUAGES
English: Display the sum of A times B plus C.

C++: cout << (A * B + C);

Assembly Intel Machine


Language: mov Language: A1
eax,A 00000000
mul B F7 25 00000004
add eax,C
03 05 00000008
call WriteInt
E8 00500000 12
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014.
SPECIFIC
MACHINE LEVELS

(descriptions of individual
levels follow . . . )

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 13


HIGH-LEVEL
LANGUAGE

Level 4
• Application-oriented languages
• C++, Java, Pascal, Visual Basic . . .
• Programs compile into assembly
language (Level 4)

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 14


ASSEMBLY
LANGUAGE

Level 3
• Instruction mnemonics that have a
one-to- one correspondence to
machine language
• Programs are translated into
Instruction Set Architecture Level -
machine language (Level 2)

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 15


INSTRUCTION SET
ARCHITECTURE (ISA)
Level 2
• Also known as conventional
machine language
• Executed by Level 1 (Digital
Logic)

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 16


DIGITAL
LOGIC
Level 1
• CPU, constructed from digital logic
gates
• System bus
• Memory
• Implemented using bipolar
transistors

next: Data
Representation
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 17
WHAT'S NEXT

• Welcome to Assembly
Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 18


DATA REPRESENTATION
• Binary Numbers
• Translating between binary and decimal
• Binary Addition
• Integer Storage Sizes
• Hexadecimal Integers
• Translating between decimal and
hexadecimal
• Hexadecimal subtraction
• Signed Integers
• Binary subtraction
• Character Storage
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 19
BINARY
NUMBERS
• Digits are 1 and 0
• 1 = true
• 0 = false
• MSB – most significant
bit
• LSB – least significant
MSB LSB
• bit
Bit 10110010100111
00
numbering: 15 0

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 20


BINARY NUMBERS

• Each digit (bit) is either 1 or 1 1 1 1 1 1 1 1


0 27 26 25 24 23 22 21 20
• Each bit represents a power
of 2:

Every binary
number is a
sum of
powers of 2

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 21


TRANSLATING
BINARY TO DECIMAL

Weighted positional notation shows how to


calculate the decimal value of each binary bit:
dec = (Dn-1  2n-1)  (Dn-2  2n-2)  ...  (D1  21)  (D0  20)
D = binary digit

binary 00001001 = decimal 9:


(1  23) + (1  20) = 9

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 22


TRANSLATING UNSIGNED
DECIMAL TO BINARY
• Repeatedly divide the decimal integer by
2. Each remainder is a binary digit in the
translated value:

37 =
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014.
100101 23
BINARY ADDITION
• Starting with the LSB, add each pair of digits,
include the carry if present.
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 7 6 5 4 3 2 1
position: 0

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 24


INTEGER STORAGE SIZES
byte
8
Standard wor 1
6
d 3
sizes: doublewor
2
6
4
d
quadword

What is the largest unsigned integer that may be stored in 20 bits?

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 25


Hexadecimal
Integers
Binary values are represented in
hexadecimal.

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 26


TRANSLATING BINARY TO
HEXADECIMAL
• Each hexadecimal digit corresponds to 4
binary bits.
• Example: Translate the binary integer
000101101010011110010100 to
hexadecimal:

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 27


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.

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 28


Powers of
16
Used when calculating hexadecimal values up to
8 digits long:

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 29


CONVERTING DECIMAL TO
HEXADECIMAL

decimal 422 = 1A6


hexadecimal

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 30


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. 1 1
36 28 6
42
28 45 58 4B
A
78 6D 80 B5

21 / 16 = 1, rem
5

Important skill: Programmers frequently add and


subtract the addresses of variables and instructions.
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 31
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
C6
75
A2 47
24
2E
Practice: The address of var1 is 00400020. The address of
the next variable after var1 is 0040006A. How many bytes
are used by var1?
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 32
SIGNED INTEGERS
The highest bit indicates the sign. 1 =
negative, 0 = positive

sign
bit

1 1 1 1 0 1 1 0
Negativ
e

0 0 0 0 1 0 1 0 Positiv
e

If the highest digit of a hexadecimal integer is > 7,


the value is negative. Examples: 8A, C5, A2, 9D
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 33
FORMING THE TWO'S
COMPLEMENT
• Negative numbers are stored in two's
complement notation
• Represents the additive Inverse

Note that 00000001 + 11111111 =


00000000
Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 34
BINARY
SUBTRACTION
• When subtracting A – B, convert B to its
two's complement
• Add A to (–B)

0000110 0000110
0 0
– 0000001 1111110
1 1
0000100
1
Practice: Subtract 0101 from 1001.

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 35


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

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 36


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?

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 37


CHARACTER STORAGE
• Character sets
• 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

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 38


WHAT'S NEXT
• Welcome to Assembly
Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 39


BOOLEAN OPERATIONS
• NOT
• AND
• OR
• Operator
Precedence
• Truth Tables

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 40


BOOLEAN ALGEBRA
• Based on symbolic logic, designed by George
Boole
• Boolean expressions created from:
• NOT, AND, OR

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 41


NOT
• Inverts (reverses) a boolean
value
• Truth table for Boolean NOT
operator:
Digital gate diagram for
NOT:

NOT

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 42


AND
• Truth table for Boolean AND
operator:

Digital gate diagram for


AND:

AND

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 43


OR
• Truth table for Boolean OR
operator:

Digital gate diagram for


OR:

OR

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 44


OPERATOR
PRECEDENCE
Examples showing the order of
operations:

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 45


TRUTH TABLES (1 OF
3)
• A Boolean function has one or more Boolean
inputs, and returns a single Boolean output.
• A truth table shows all the inputs and
outputs of a Boolean function

Example: X 
Y

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 46


TRUTH TABLES (2 OF
3)

• Example: X 
Y

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 47


TRUTH TABLES (3 OF
3)
• Example: (Y  S)  (X  S)

X
mu Z
Y x

Two-input
multiplexer

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 48


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
• Each layer in a computer's
architecture is an abstraction of a
machine
• layers can be hardware or software
• Boolean expressions are essential to the
design of computer hardware and software

Irvine, Kip R. Assembly Language for Intel-Based Computers 7/e, 2014. 49

You might also like