Assembly Language For x86 Processors: Chapter 1: Basic Concepts
Assembly Language For x86 Processors: Chapter 1: Basic Concepts
6th Edition
Kip Irvine
(c) Pearson Education, 2010. All rights reserved. You may modify and copy this slide show for your personal use, or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed.
Chapter Overview
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
Questions to Ask
What background should I have? What Are Assemblers and Linkers? What Hardware and Software Do I Need? What types of programs will I create? What will I learn?
What's Next
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
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
10
Translating Languages
English: Display the sum of A times B plus C.
11
12
High-Level Language
Level 4 Application-oriented languages C++, Java, Pascal, Visual Basic . . . Programs compile into assembly language (Level 4)
13
Assembly Language
Level 3 Instruction mnemonics that have a one-toone correspondence to machine language Programs are translated into Instruction Set Architecture Level - machine language (Level 2)
14
15
Digital Logic
Level 1 CPU, constructed from digital logic gates System bus Memory Implemented using bipolar transistors
16
What's Next
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
17
Data Representation
Binary Numbers
Translating between binary and decimal
Signed Integers
Binary subtraction
Character Storage
18
Binary Numbers
Digits are 1 and 0
1 = true 0 = false
Bit numbering:
1011001010011100
15 0
19
Binary Numbers
Each digit (bit) is either 1 or 0 Each bit represents a power of 2:
1
27
1
26
1
25
1
24
1
23
1
22
1
21
1
20
20
21
37 = 100101
Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010.
22
Binary Addition
Starting with the LSB, add each pair of digits, include the carry 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)
23
Standard sizes:
24
Hexadecimal Integers
Binary values are represented in hexadecimal.
25
26
27
Powers of 16
Used when calculating hexadecimal values up to 8 digits long:
28
29
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 42 78
28 45 6D
28 58 80
6A 4B 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 6/e, 2010.
30
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 A2 24
75 47 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?
31
Signed Integers
The highest bit indicates the sign. 1 = negative, 0 = positive
sign bit
Negative
Positive
If the highest digit of a hexadecimal integer is > 7, the value is negative. Examples: 8A, C5, A2, 9D
32
33
Binary Subtraction
When subtracting A B, convert B to its two's complement Add A to (B) 00001100 00000011 00001100 11111101 00001001
34
35
Practice: What is the largest positive value that may be stored in 20 bits?
36
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
37
ASCII binary
string of digits: "01010101"
ASCII decimal
string of digits: "65"
ASCII hexadecimal
string of digits: "9C"
38
What's Next
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
39
Boolean Operations
NOT AND OR Operator Precedence Truth Tables
40
Boolean Algebra
Based on symbolic logic, designed by George Boole Boolean expressions created from:
NOT, AND, OR
41
NOT
Inverts (reverses) a boolean value Truth table for Boolean NOT operator:
NOT
42
AND
Truth table for Boolean AND operator:
AND
43
OR
Truth table for Boolean OR operator:
OR
44
Operator Precedence
Examples showing the order of operations:
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
46
Truth Tables (2 of 3)
Example: X Y
47
Truth Tables (3 of 3)
Example: (Y S) (X S)
X mux Y Z
Two-input multiplexer
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
49
QUIZ
1. What is the decimal representation of each of the following unsigned binary integers? a. 00110101 2. What is the sum of each pair of binary integers? a. 11010101 + 01101011 3. What is the decimal representation of the following signed binary numbers? a. 10110101 4. What is the value of the Boolean expression (T F) T ?
50