3. 3
Welcome to Assembly LanguageWelcome to Assembly Language (cont)(cont)
• How does assembly language (AL) relate to machine
language?
• How do C++ and Java relate to AL?
• Is AL portable?
4. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 4
What's NextWhat's Next
• Welcome to Assembly Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations
5. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 5
Virtual Machine ConceptVirtual Machine Concept
• Virtual Machines
• Specific Machine Levels
6. 6
Virtual MachinesVirtual 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
7. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 7
Translating LanguagesTranslating Languages
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
9. 9
High-Level LanguageHigh-Level Language
• Level 4
• Application-oriented languages
• C++, Java, Pascal, Visual Basic . . .
• Programs compile into assembly language
(Level 3)
10. 10
Assembly LanguageAssembly 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)
11. 11
Instruction Set Architecture (ISA)Instruction Set Architecture (ISA)
• Level 2
• Also known as conventional machine
language
• Executed by Level 1 (Digital Logic)
12. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 12
Digital LogicDigital Logic
• Level 1
• CPU, constructed from digital logic gates
• System bus
• Memory
• Implemented using bipolar transistors
next: Data Representation
13. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 13
What's NextWhat's Next
• Welcome to Assembly Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations
14. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 14
Data RepresentationData 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
15. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 15
Binary NumbersBinary Numbers
• Digits are 1 and 0
• 1 = true
• 0 = false
• MSB – most significant bit
• LSB – least significant bit
• Bit numbering:
015
1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0
MSB LSB
16. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 16
Binary NumbersBinary 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
17. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 17
Translating Binary to DecimalTranslating 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
18. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 18
Translating Unsigned Decimal to BinaryTranslating Unsigned Decimal to Binary
• Repeatedly divide the decimal integer by 2. Each
remainder is a binary digit in the translated value:
37 = 100101
19. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 19
Binary AdditionBinary Addition
• Starting with the LSB, add each pair of digits, include
the carry if present.
22. 22
Translating Binary to HexadecimalTranslating Binary to Hexadecimal
• Each hexadecimal digit corresponds to 4 binary bits.
• Example: Translate the binary integer
000101101010011110010100 to hexadecimal:
23. 23
Converting Hexadecimal to DecimalConverting 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.
24. 24
Converting Decimal to HexadecimalConverting Decimal to Hexadecimal
decimal 422 = 1A6 hexadecimal
26. 26
Forming the Two's ComplementForming the Two's Complement
• Negative numbers are stored in two's complement
notation
• Represents the additive Inverse
27. 27
Ranges of Signed IntegersRanges of Signed Integers
The highest bit is reserved for the sign. This limits the range:
28. ASCII Code (7-bit)ASCII Code (7-bit)
American Standard Code for Information InterchangeAmerican Standard Code for Information Interchange
Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 28
29. Extended ASCII Code (8-bit)Extended ASCII Code (8-bit)
Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 29
30. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 30
What's NextWhat's Next
• Welcome to Assembly Language
• Virtual Machine Concept
• Data Representation
• Boolean Operations
31. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 31
Boolean OperationsBoolean Operations
• NOT
• AND
• OR
• Operator Precedence
• Truth Tables
32. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 32
Boolean AlgebraBoolean Algebra
• Based on symbolic logic, designed by George Boole
• Boolean expressions created from:
• NOT, AND, OR
33. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 33
NOTNOT
• Inverts (reverses) a boolean value
• One operand
• If operator is T, than T, if F, than F
• Truth table for Boolean NOT operator:
NOT
Digital gate diagram for NOT:
34. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 34
ANDAND
• Two operands
• Both must be T for T, otherwise F
• Truth table for Boolean AND operator:
AND
Digital gate diagram for AND:
35. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 35
OROR
• Two operands
• Both must be F for F, otherwise T
• Truth table for Boolean OR operator:
OR
Digital gate diagram for OR:
36. 36
NANDNAND
• Two operands
• Both T = F, otherwise T
• Truth table for Boolean NAND operator:
Digital gate diagram for NAND:
X Y X NAND Y
F
F
T
T
F
T
F
T
T
T
T
F
NAND
37. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 37
NORNOR
• Two operands
• Any T = F, otherwise T
• Truth table for Boolean NOR operator:
Digital gate diagram for NAND:
X Y X NOR Y
F
F
T
T
F
T
F
T
T
F
F
F
NOR
38. Boolean Algebra and Logic Gates 38
Boolean Operator PrecedenceBoolean Operator Precedence
The order of evaluation is:
1. Parentheses
2. NOT
3. AND
4. OR
Consequence: Parentheses appear
around OR expressions
Example: F = A(B v C) ^ (C v D)
38
39. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 39
Operator PrecedenceOperator Precedence
• Examples showing the order of operations:
40. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 40
Truth TablesTruth Tables (1 of 3)(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
41. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 41
Truth TablesTruth Tables (2 of 3)(2 of 3)
• Example: X ∧ ¬Y
42. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 42
Truth TablesTruth Tables (3 of 3)(3 of 3)
• Example: (Y ∧ S) ∨ (X ∧ ¬S)
Two-input multiplexer
If S is F, X is selected for output
If S is T, Y is selected for output
Y
X
S
43. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 43
SummarySummary
• 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
44. Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. 44
54 68 65 20 45 6E 6454 68 65 20 45 6E 64
What do these numbers represent?
space
T h e E n d