Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
4/20/2009
CS271
INTRODUCTION TO
ASSEMBLY LANGUAGE PROGRAMMING
Introduction to Assembly Language Programming
INTEL ARCHITECTURE: IA-32
IA-32 BASICS
Two processors in one
 integer
unit
 floating-point
 can
unit
work in parallel (co-processors)
Separate instruction sets
Separate data registers
Separate ALUs
 different
configuration
1
4/20/2009
MODES OF OPERATION
Real-address mode
Protected mode
Virtual-8086 mode
 native
 native
MS-DOS
mode (Windows, Linux)
 hybrid
 each
of Protected
program has its own 8086 computer
System management mode
 power
management, system security, diagnostics
BASIC EXECUTION ENVIRONMENT
Addressable memory
General-purpose registers
 Index and base registers
 Specialized register uses
 Status flags
 Floating-point, MMX, XMM registers
ADDRESSABLE MEMORY
Protected mode
4
GB
 32-bit
address
Real-address and Virtual-8086 modes
1
MB space
address
 20-bit
2
4/20/2009
GENERAL-PURPOSE REGISTERS
32-bit General Purpose Registers
EAX
EBX
ECX
EDX
EBP
ESP
ESI
EDI
16-bit Segment Registers
CS
SS
DS
EFLAGS
EIP
ES
FS
GS
ACCESSING PARTS OF REGISTERS
Use 32-bit, 16-bit or 8-bit names
 Applies to EAX, EBX, ECX, EDX
EAX
32-bit
AX
AH
16-bit
AL
8-bit + 8-bit
INDEX AND BASE REGISTERS
Some registers on have 16-bit names for their
lower halves
32-bit
ESI
EDI
EBP
ESP
16-bit
SI
DI
BP
SP
3
4/20/2009
SPECIAL USES (1 OF 2)
EAX – accumulator
ECX – loop counter
 ESP – stack pointer
 ESI, EDI – index registers
 EBP – extended base pointer (stack)
SPECIAL USES (2 OF 2)
CS – code segment
DS – data segment
 SS – stack segment
 ES, FS, GS – additional segments
 EIP – instruction pointer
 EFLAGS
 status
 each
and control flags
flag is a single binary bit
STATUS FLAGS
Carry
Overflow
Sign
Zero
Auxiliary Carry
Parity
unsigned arithmetic out of range
signed arithmetic out of range
result is negative
result is zero
carry from bit 3 to bit 4
sum of 1 bits is an even number
4
4/20/2009
FLOATING-POINT, MMX, XMM REGISTERS
80-bit Data Registers
48-bit Pointer Registers
ST(0)
ST(1)
ST(2)
ST(3)
ST(4)
ST(5)
ST(6)
ST(7)
FPU Instruction Pointer
FPU Data Pointer
16-bit Control Registers
Tag Register
Control Register
Status Register
Opcode Register
Eight 64-bit registers for use with MMX
Eight 128-bit registers for use with XMM SIMD
operations
Introduction to Assembly Language Programming
A BRIEF HISTORY OF INTEL PROCESSORS
EARLY INTEL MICROPROCESSORS
Intel 8080
 64K addressable RAM
 8-bit registers
 CP/M operating system
 S-100 BUS architecture
 8-inch floppy disks!
Intel 8086/8088
 IBM-PC Used 8088
 1 MB addressable RAM
 16-bit registers
 16-bit data bus (8-bit for 8088)
 separate floating-point unit (8087)
5
4/20/2009
THE IBM-AT
Intel 80286
16 MB addressable RAM
Protected memory
several times faster than 8086
introduced IDE bus architecture
80287 floating point unit
INTEL IA-32 FAMILY
Intel386
4 GB addressable RAM, 32-bit registers, paging (virtual
memory)
Intel486
Pentium
instruction pipelining
superscalar, 32-bit address bus, 64-bit internal data
path
INTEL P6 FAMILY
Pentium Pro
 advanced
Pentium II
Pentium III
 MMX
 SIMD
optimization techniques in microcode
(multimedia) instruction set
(streaming extensions) instructions
6
4/20/2009
INTEL NETBURST ARCHITECTURE
Pentium 4 and Xeon
 Intel
NetBurst micro-architecture, tuned for
multimedia
INTEL IA-64 FAMILY
Itanium
 Itanium 2
 Pentium 4F
 Pentium D
 Pentium Extreme Edition
 Xeon
CORE ARCHITECTURE FAMILY
Xeon
Intel Core 2 Duo / Quad
2
to 4 cores on single die
Pentium Dual Core
 Celeron M
 Core i7
 front
side bus replaced with QuickPath up to
6.4GT/s
 781 million transistors
7
4/20/2009
REVIEW (1 OF 3)
1.
2.
3.
4.
5.
What are the IA-32 processor’s three basic
modes of operation?
Name all eight 32-bit general purpose
registers
Name all six segment registers
What special purpose does the ECX register
serve?
Name at least four CPU status flags
REVIEW (2 OF 3)
6.
7.
8.
Which flag is set when the result of an
unsigned arithmetic operation is too large to
fit into the destination?
Which flag is set when the result of an signed
arithmetic operation is either too large or too
small to fit into the destination?
Which flag is set when an arithmetic or logical
operation generates a negative result?
REVIEW (3 OF 3)
Which part of the CPU performs floating-point
arithmetic?
10. How many bits long are the FPU data
registers?
11. Describe the CISC approach
12. Describe the RISC approach
9.
8
4/20/2009
Introduction to Assembly Language Programming
IA-32 MEMORY MANAGEMENT
IA-32 MEMORY MANAGEMENT
Real-address mode
 Calculating linear addresses
 Protected mode
 Multi-segment model
 Paging
REAL-ADDRESS MODE
1 MB RAM maximum addressable
 Application programs can access any area of
memory
 Single tasking
 Supported by MS-DOS operating system
9
4/20/2009
SEGMENTED MEMORY
F0000
E0000
8000:FFFF
D0000
C0000
Linear Address
B0000
A0000
90000
80000
70000
60000
50000
40000
30000
20000
10000
8000:0250
0250
8000:0000
seg
off
00000
CALCULATING LINEAR ADDRESSES
Given a segment address, multiply it by 16 (add
a hexadecimal zero), and add it to the offset
 Example: convert 08F1:0100 to a linear
address
Adjusted Segment value:
Add the offset:
Linear address:
08F10
0100
09010
PROTECTED MODE (1 OF 2)
4 GB addressable RAM
 (0000
0000 to FFFF FFFFh)
Each program assigned a memory partition
which is protected from other programs
 Designed for multitasking
 Supported by Linux & MS-Windows
10
4/20/2009
PROTECTED MODE (2 OF 2)
Segment descriptor tables
Program structure
 code,
data, and stack areas
DS, SS segment descriptors
 global descriptor table (GDT)
 CS,
MASM Programs use the Microsoft flat memory
model
FLAT SEGMENT MODEL
In flat model all segments are mapped to entire
32-bit address space
 At least 2 segments required:
 code
 data
Each segment is defined by a segment
descriptor
 Segment descriptor is a 64-bit number stored
in the global descriptor table (GDT)
GLOBAL DESCRIPTOR TABLE
FFFF FFFF
(4GB)
not used
0004 0000
limit
0 0040
access
---
physical RAM
base address
0000 0000
0000 0000
11
4/20/2009
MULTI-SEGMENT MODEL
Each process is given its own table of segment
descriptors call a Local Descriptor Table (LDT)
 Each segment has its own address space
 Each segment descriptor describes the exact
size of its segment
LOCAL DESCRIPTOR TABLE
RAM
Local Descriptor Table
base
0002 6000
0000 8000
0000 3000
limit
0 0010
0 00A0
0 0002
access
-------
2 6000
8000
3000
PAGING
Supported directly by the CPU
Divides each segment into 4096-byte blocks called
pages
Sum of all programs can be larger than physical memory
Part of running program is in memory, part is on disk
Virtual memory manager (VMM) – OS utility that
manages the loading and unloading of pages
Page fault – issued by CPU when a page must be loaded
from disk
12
4/20/2009
REVIEW (1 OF 3)
1.
2.
3.
4.
What is the range of addressable memory in
protected mode?
What is the range of addressable memory in
read-address mode?
In real-address mode, convert the following
hexadecimal segment-offset address to a linear
address: 0950:0100
In real-address mode, convert the following
hexadecimal segment-offset address to a linear
address: 0CD1:02E0
REVIEW (2 OF 3)
5.
6.
7.
8.
In the flat memory model, how many bits hold
the address of an instruction or variable?
In protected mode, which register references
the descriptor for the stack segment?
In protected mode, which table contains
pointers to the memory segments used by a
single program?
In the flat memory model, which table
contains pointers to at least two segments?
REVIEW (3 OF 3)
What is the main advantage to using the
paging feature of IA-32 processors?
10. Can you think of a reason why MS-DOS was
not designed to support protected-mode
programming?
11. In real-address mode, demonstrate two
segment-offset address that point to the same
linear address
9.
13
4/20/2009
Introduction to Assembly Language Programming
INPUT-OUTPUT SYSTEM
INPUT-OUTPUT SYSTEM
Applications routinely read input from keyboard
and disk files and write output to files and
screen
 I/O is available at different access levels:
 high-level
 operating
languages
system
 BIOS
HIGH-LEVEL LANGUAGE (HLL) I/O
HLL such as C++ or Java contain functions for
performing I/O
 System.out.println("Hello
 cout
World!");
<< "Hello World!" << endl;
These functions are portable as they work on a
variety of computer systems and are not
dependant on any one operating system
14
4/20/2009
OPERATING SYSTEM I/O
Programmers can call operating system (OS)
functions from a library known as the
Application Programming Interface (API)
 OS provides high-level operations such as:
 writing
strings to files
string from the keyboard
 allocating blocks of memory
 reading
BIOS I/O
The Basic Input/Output System (BIOS) is a
collection of low-level subroutines that
communicate directly with hardware
 The BIOS is installed by the computer’s
manufacturer and is tailored to fit the
computers hardware
 Operating systems generally communicate with
the BIOS
DEVICE DRIVERS
Software that communicates directly with a
piece of hardware
 Allows devices unknown to the BIOS to be
integrated with the computer
 Works much like BIOS providing I/O functions
tailored to a particular device or family of
devices
15
4/20/2009
I/O HIERARCHY
Level 4
Level 3
•Statement in program calls HLL library function to write string to standard output
•Library function calls an OS function, passing a string pointer
•OS uses a loop to call a BIOS subroutine, passing it the ASCII code and color of each
Level 2 character; OS also calls BIOS subroutine to advance cursor to next position on screen
•BIOS receives character, maps it to a particular system font, and sends it to hardware
Level 1 port attached to video card
•Video card generated timed hardware signals to the monitor that control the displaying
Level 0 of pixels
PROGRAMMING AT MULTIPLE LEVELS
Assembly language programs can choose to
use any of the following levels
 level
3: call library functions to perform I/O (we will
do this, at least to begin)
 level 2: call OS functions to perform text and filebased I/O
 level 1: Call BIOS functions to control devicespecific features such as color, graphics, and
keyboard input
 level 0: send and receive data from hardware ports
TRADEOFFS – LEVEL 2
Programming at level 2 works on any computer
running a given OS
 If a device lacks a certain capability the OS do
its best to approximate it
 Level 2 is not particularly fast because each I/O
call must go through several layers before it
executes
16
4/20/2009
TRADEOFFS – LEVEL 1
Works on all systems having a standard BIOS
but will not produce the same result on all
systems
 different
systems may run at different resolutions
As a programmer you must write code to detect
the user’s hardware and adjust your program to
match
 Much faster than level 2 as it is only one level
above the hardware
TRADEOFFS – LEVEL 0
Works with generic devices such as serial ports
and with specific I/O devices produced by
known manufacturers
 Programs must be written to handle variations
in I/O devices
 Programs execute quickly as they are directly
manipulating the hardware
 Not all OS allow this level of access to hardware
(Windows XP, Vista, 7, 2000, etc)
REVIEW
1.
2.
3.
4.
Of the three levels of I/O, which is the most
universal and portable?
What characteristics distinguish BIOS-level I/O?
Why are device drivers necessary, given that the
BIOS already has code that communicates with
the computer’s hardware?
Is it likely that the BIOS for a computer running
Windows would be different from that used by a
computer running Linux?
17