(c) Pearson Education, 2006-2007. 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.
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
Assembly language is the oldest programming language. Of all languages, it bears the closest resemblance to the native language of a computer.
Direct access to a computer s hardware To understand a great deal about your
What is an assembler?
from assembly language into machine language MASM (Microsoft Assembler), TASM (Borland Turbo Assembler) Linker (a companion program of Assembler) combines individual files created by an assembler into a single executable program. Debugger provides a way for a programmer to trace the execution of a program and examine the contents of memory.
mode, protected mode and virtual mode How high-level language compilers (such as C++) translate statements into assembly language and native machine code Improvement of the machine-level debugging skills (e.g., errors due to memory allocation) How application programs communicate with the computer s operating system via interrupt handlers, system calls, and common memory areas
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. 6
Is AL portable? A language whose source program can be compiled and run on a wide variety of computer systems is said to be portable. AL makes no attempt to be portable.
It is tied to a specific processor family.
Why learn AL? Embedded system programs Programs to be highly optimized for both space and runtime speed To gain an overall understanding of the interaction between the hardware, OS and application programs Device driver: programs that translate general operating system commands into specific references to hardware details
Business application for single platform Hardware device driver Business application for multiple platforms Embedded systems & computer games
(see next panel)
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
10
11
Virtual machine concept A most effective way to explain how a computer s hardware and software are related In terms of programming languages 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
12
In terms of a hypothetical computer VM1 can execute commands written in language L1. VM2 can execute commands written in language L2. The process can repeat until a virtual machine VMn can be designed that supports a powerful, easy-to-use language. The Java programming language is based on the virtual machine concept. A program written in the Java language is translated by a Java compiler into Java byte code. Java byte code: a low-level language that is quickly executed at run time by Java virtual machine (JVM). The JVM has been implemented on many different computer systems, making Java programs relatively system-independent.
13
English: Display the sum of A times B plus C. C++: cout << (A * B + C);
14
H igh-Lev el Language
Lev el 5
A s s em bly Language
Lev el 4
O perating S y s tem Ins truc tion S et A rc hitec ture M ic roarc hitec ture
Lev el 3
Lev el 2 Lev el 1
D igital Logic
Lev el 0
15
16
Level 4 Instruction mnemonics that have a one-to-one correspondence to machine language Calls functions written at the operating system level (Level 3) Programs are translated into machine language (Level 2)
17
Level 3 Provides services to Level 4 programs Translated and run at the instruction set architecture level (Level 2)
18
Level 2 Also known as conventional machine language Executed by Level 1 (microarchitecture) program
19
Level 1 Interprets conventional machine instructions (Level 2) Executed by digital hardware (Level 0)
20
Level 0 CPU, constructed from digital logic gates System bus Memory Implemented using bipolar transistors
21
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
22
Signed Integers
Character Storage
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. 23
Bit numbering: 15
1011001010011100
0
24
1
27
1
26
1
25
1
24
1
23
1
22
1
21
1
20
25
Weighted positional notation shows how to calculate the decimal value of each binary bit: dec = (Dn-1 v 2n-1) (Dn-2 v 2n-2) ... (D1 v 21) (D0 v 20)
D = binary digit
Repeatedly divide the decimal integer by 2. Each remainder is a binary digit in the translated value:
37 = 100101
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. 27
Starting with the LSB, add each pair of digits, include the carry if present.
c arry : 1
0 0
0 0
0 0
0 0
1 1
0 1
0 1
(4) (7)
0
bit pos ition: 7
0
6
0
5
0
4
1
3
0
2
1
1
1
0
(11)
28
b yte
8 16 32 64
Standard sizes:
w o rd d o u b le w o rd q u a d w o rd
29
30
Each hexadecimal digit corresponds to 4 binary bits. Example: Translate the binary integer 000101101010011110010100 to hexadecimal:
31
32
33
34
Divide the sum of two digits by the number base (16). The quotient becomes the carry value, and the remainder is the sum digit.
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.
35
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?
36
icates the si
.1
egative,
N e g a tive
P o sitive
If the highest digit of a hexadecimal integer is > 7, the value is negative. Examples: 8A, C5, A2, 9D
37
Negative numbers are stored in two's complement notation Represents the additive Inverse
38
When subtracting A B, convert B to its two's complement Add A to ( B) 00001100 00000011 00001100 11111101 00001001
39
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
40
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?
41
Character sets
(0 127) Extended ASCII (0 255) ANSI (0 255) Unicode (0 65,535)
Standard ASCII
Null-terminated String
Array of characters followed by a null byte
pure binary
can be calculated directly
ASCII binary
string of digits: "01010101"
ASCII decimal
string of digits: "65"
ASCII hexadecimal
string of digits: 41"
next: Boolean Operations
43
Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations
44
45
Based on symbolic logic, designed by George Boole Boolean expressions created from:
NOT, AND, OR
46
Inverts (reverses) a boolean value Truth table for Boolean NOT operator:
Digital gate diagram for :
47
48
R:
49
50
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
51
Example: X Y
52
Example: (Y S) (X S)
S
X m ux Y Z
Two-input multiplexer
53
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 5/e, 2007. 54
55