+ All Categories
Home > Documents > Assembly Language for Intel-Based Computers

Assembly Language for Intel-Based Computers

Date post: 01-Jan-2016
Category:
Upload: chelsea-roth
View: 34 times
Download: 0 times
Share this document with a friend
Description:
Assembly Language for Intel-Based Computers. Kip Irvine. Chapter 2: IA-32 Processor Architecture. General Concepts. Basic microcomputer design Instruction execution cycle Reading from memory. Basic Microcomputer Design. clock synchronizes CPU operations - PowerPoint PPT Presentation
24
Assembly Language for Intel- Assembly Language for Intel- Based Computers Based Computers Chapter 2: IA-32 Processor Architecture Kip Irvine
Transcript
Page 1: Assembly Language for Intel-Based Computers

Assembly Language for Intel-Based Assembly Language for Intel-Based ComputersComputers

Chapter 2: IA-32 Processor Architecture

Kip Irvine

Page 2: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 2

General ConceptsGeneral Concepts

• Basic microcomputer design• Instruction execution cycle• Reading from memory

Page 3: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 3

Basic Microcomputer DesignBasic Microcomputer Design

• clock synchronizes CPU operations• control unit (CU) coordinates sequence of execution steps• ALU performs arithmetic and bitwise processing

Page 4: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 4

ClockClock

• synchronizes all CPU and BUS operations• machine (clock) cycle measures time of a single

operation• clock is used to trigger events

one cycle

1

0

Page 5: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 5

Instruction Execution CycleInstruction Execution Cycle

• Fetch• Decode• Fetch operands• Execute • Store output

Page 6: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 6

Multi-Stage PipelineMulti-Stage Pipeline

• Instruction execution divided into discrete stages

Example of a non-pipelined processor. Many wasted cycles.

Page 7: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 7

Pipelined ExecutionPipelined Execution

• More efficient use of cycles, greater throughput of instructions:

For k states and n instructions, the number of required cycles is:

k + (n – 1)

Page 8: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 8

Reading from MemoryReading from Memory

• Multiple machine cycles are required when reading from memory, because it responds much more slowly than the CPU. The steps are:• address placed on address bus• Read Line (RD) set low• CPU waits one cycle for memory to respond• Read Line (RD) goes to 1, indicating that the data is on the data

bus

Cycle 1 Cycle 2 Cycle 3 Cycle 4

Data

Address

CLK

ADDR

RD

DATA

Page 9: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 9

Basic Execution EnvironmentBasic Execution Environment

• Addressable memory• General-purpose registers• Index and base registers• Specialized register uses• Status flags• Floating-point

Page 10: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 10

General-Purpose RegistersGeneral-Purpose Registers

CS

SS

DS

ES

EIP

EFLAGS

16-bit Segment Registers

EAX

EBX

ECX

EDX

32-bit General-Purpose Registers

FS

GS

EBP

ESP

ESI

EDI

Named storage locations inside the CPU, optimized for speed.

Page 11: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 11

Accessing Parts of RegistersAccessing Parts of Registers

• Use 8-bit name, 16-bit name, or 32-bit name• Applies to EAX, EBX, ECX, and EDX

Page 12: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 12

Index and Base RegistersIndex and Base Registers

• Some registers have only a 16-bit name for their lower half:

Page 13: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 13

Some Specialized Register Uses Some Specialized Register Uses (1 of 2)(1 of 2)

• General-Purpose• EAX – accumulator• ECX – loop counter• ESP – stack pointer• ESI, EDI – index registers• EBP – extended frame pointer

• Segment• CS – code segment• DS – data segment• SS – stack segment• ES, FS, GS - additional segments

Page 14: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 14

Some Specialized Register Uses Some Specialized Register Uses (2 of 2)(2 of 2)

• EIP – instruction pointer• EFLAGS

• status and control flags

• each flag is a single binary bit

Page 15: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 15

Status FlagsStatus Flags• Carry

• unsigned arithmetic out of range• Overflow

• signed arithmetic out of range• Sign

• result is negative• Zero

• result is zero• Auxiliary Carry

• carry from bit 3 to bit 4• Parity

• sum of 1 bits is an even number

Page 16: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 16

Carry and OverflowCarry and Overflow

• Carry is important when …• Adding or subtracting unsigned integers

• Indicates that the unsigned sum is out of range

• Overflow is important when …• Adding or subtracting signed integers

• Indicates that the signed sum is out of range

• Overflow occurs when• Adding two positive numbers and the sum is negative

• Adding two negative numbers and the sum is positive

• Can happen because of the fixed number of sum bits

Page 17: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 17

0 1 0 0 0 0 0 0

0 1 0 0 1 1 1 1+

1 0 0 0 1 1 1 1

79

64

143(-113)

Carry = 0 Overflow = 1

1

1 0 0 1 1 1 0 1

1 1 0 1 1 0 1 0+

0 1 1 1 0 1 1 1

218 (-38)

157 (-99)

119

Carry = 1 Overflow = 1

111

Carry and Overflow ExamplesCarry and Overflow Examples

• We can have carry without overflow and vice-versa• Four cases are possible

0 0 0 0 1 0 0 0

0 0 0 0 1 1 1 1+

0 0 0 1 0 1 1 1

15

8

23

Carry = 0 Overflow = 0

1

1 1 1 1 0 1 0 1

0 0 0 0 1 1 1 1+

0 0 0 0 0 1 0 0

15

245 (-11)

4

Carry = 1 Overflow = 0

11111

1

Page 18: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 18

Addressable MemoryAddressable Memory

• Protected mode• 4 GB

• 32-bit address

• Real-address and Virtual-8086 modes• 1 MB space

• 20-bit address

Page 19: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 19

Real-Address modeReal-Address mode

• 1 MB RAM maximum addressable• Application programs can access any area

of memory• Single tasking• Supported by MS-DOS operating system

Page 20: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 20

Segmented MemorySegmented Memory

Segmented memory addressing: absolute (linear) address is a combination of a 16-bit segment value added to a 16-bit offset

li ne

ar a

ddr e

sse

s

one segment

Page 21: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 21

Calculating Linear AddressesCalculating 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: 0 8 F 1 0

Add the offset: 0 1 0 0

Linear address: 0 9 0 1 0

Page 22: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 22

Calculating Linear AddressesCalculating Linear Addresses

What linear address corresponds to the segment/offset address 028F:0030?

028F0 + 0030 = 02920

Always use hexadecimal notation for addresses.

Page 23: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 23

Calculating Linear AddressesCalculating Linear Addresses

What segment addresses correspond to the linear address 28F30h?

Many different segment-offset addresses can produce the linear address 28F30h. For example:

28F0:0030, 28F3:0000, 28B0:0430, . . .

Page 24: Assembly Language for Intel-Based Computers

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 24

Intel RegistersIntel Registers

CS

SS

DS

ES

EIP

EFLAGS

16-bit Segment Registers

EAX

EBX

ECX

EDX

32-bit General-Purpose Registers

FS

GS

EBP

ESP

ESI

EDI


Recommended