8086

27
Intel 8086 CPU: An Introduction 8086 Features 1. 16-bit Arithmetic Logic Unit 2. 16-bit data bus 3. 20-bit address bus - 220 = 1,048,576 = 1 meg 4. 16 I/O lines so it can access 64K I/O ports The address refers to a byte in memory. In the 8086, bytes at even addresses come in on the low half of the data bus (bits 0-7) and bytes at odd addresses come in on the upper half of the data bus (bits 8-15). The 8086 can read a 16-bit word at an even address in one operation and at an odd address in two operations. The least significant byte of a word on an 8086 family microprocessor is at the lower address.

Transcript of 8086

Page 1: 8086

Intel 8086 CPU: An Introduction8086 Features1. 16-bit Arithmetic Logic Unit2. 16-bit data bus 3. 20-bit address bus - 220 = 1,048,576 = 1 meg 4. 16 I/O lines so it can access 64K I/O ports

• The address refers to a byte in memory. In the 8086, bytes at even addresses come in on the low half of the data bus (bits 0-7) and bytes at odd addresses come in on the upper half of the data bus (bits 8-15).

• The 8086 can read a 16-bit word at an even address in one operation and at an odd address in two operations.

• The least significant byte of a word on an 8086 family microprocessor is at the lower address.

Page 2: 8086

8086 Architecture• The 8086 has two parts, the Bus Interface Unit (BIU) and the Execution Unit

(EU).• The BIU fetches instructions, reads and writes data, and computes the 20-bit address.• The EU decodes and executes the instructions using the 16-bit ALU.• The BIU contains the following registers:

• IP - the Instruction Pointer• CS - the Code Segment Register• DS - the Data Segment Register• SS - the Stack Segment Register• ES - the Extra Segment Register

The BIU fetches instructions using the CS and IP, written CS:IP, to construct the 20-bit address. Data is fetched using a segment register (usually the DS) and an effective address (EA) computed by the EU depending on the addressing mode.

Page 3: 8086

8086 Programmer’s Model16-bit Registers

ESCSSSDSIP

AHBHCHDH

ALBLCLDL

SPBP

SIDI

FLAGS

AXBX

CX

DX

Extra SegmentCode Segment

Stack SegmentData SegmentInstruction Pointer

Accumulator

Base RegisterCount RegisterData RegisterStack PointerBase PointerSource Index RegisterDestination Index Register

BIU registers

(20 bit adder)

EU registers

16 bit arithmetic

Page 4: 8086

8086 Architecture [2]• The EU contains the following 16-bit registers:

» AX - the Accumulator» BX - the Base Register» CX - the Count Register» DX - the Data Register

» SP - the Stack Pointer » BP - the Base Pointer » SI - the Source Index Register» DI - the Destination Register

• These are referred to as general-purpose registers, although, as seen by their names, they often have a special-purpose use for some instructions.

• The AX, BX, CX, and DX registers can be considered as two 8-bit registers, a High byte and a Low byte. This allows byte operations and compatibility with the previous generation of 8-bit processors, the 8080 and 8085. The 8-bit registers are:

» AX --> AH,AL» BX --> BH,BL» CX --> CH,CL» DX --> DH,DL

Page 5: 8086

8086 Architecture [3]

The EU also contains the Flag Register which is a collection of condition bits and control bits. The condition bits are set or cleared by the execution of an instruction. The control bits are set by instructions to control some operation of the CPU.

• Bit 0 - CF Carry Flag - Set by carry out of MSB• Bit 2 - PF Parity Flag - Set if result has even parity• Bit 4 - AF Auxiliary Flag - for BCD arithmetic• Bit 6 - ZF Zero Flag - Set if result is zero• Bit 7 - SF Sign Flag = MSB of result• Bit 8 - TF Single Step Trap Flag• Bit 9 - IF Interrupt Enable Flag• Bit 10 - DF String Instruction Direction Flag• Bit 11 - OF Overflow Flag

• Bits 1, 3, 5, 12-15 are undefined.

Page 6: 8086

8086 Block Diagram

Page 7: 8086

Segments

SegmentRegisters

EXTRA

64K DataSegment

64K Code Segment

CODE

STACK

DATA

MEMORY Address 00000H

FFFFFH

Segments are < or = 64K,can overlap, start at an addressthat ends in 0H.

CS:0

Segment Starting address is segment register value shifted 4 place to the left.

Page 8: 8086

8086 Memory Terminology

CODE

DATA

STACK

EXTRA

0100H

B200H

CF00H

FF00H

DS:

SS:

ES:

CS:

01000H

B2000H

CF000H

FF000H

10FFFH

C1FFFH

DEFFFH

FFFFFH

00000HSegment Registers

Memory Segments

Segments are < or = 64K and can overlap.Note that the Code segment is < 64K since FFFFFH is the highest address.

Page 9: 8086

Assembler Directives• ASSUME Tells the assembler what segments to use.

• SEGMENT Defines the segment name and specifies that the code that follows is in that segment.

• ENDS End of segment

• ORG Originate or Origin: sets the location counter.

• END End of source code.

• NAME Give source module a name.

• EQU Equate or equivalence

• LABEL Assign current location count to a symbol.

• $ Current location count

• ALIGN aligns the next segment at even address

Page 10: 8086

• STACK stack 100d (or) stack 64h ; default 1024 bytes

• DATA DB – Define Byte DW – Define Word DD – Define Double word DQ – Define Quad word DT – Define Ten bytes DUP – used to declare an array of bytes

• CODE – indicates the beginning of code segmentEx: code [name].

• EXIT – marks the end of CS, most of the time we use 4CH function of DOS interrupt 21H.

• PROC, ENDP & MACRO, ENDM directives support modularity.

Page 11: 8086
Page 12: 8086

A19/S6, A18/S5, A17/S4, A16/S3 Address/Status

S4 S3 Function

0

0 Extra segment access

0

1 Stack segment access

1

0 Code segment access

1 1 Data segment access

Page 13: 8086

S2 S1 S0 Characteristics

0 0 0 Interrupt acknowledge

0 0 1 Read I/O port

0 1 0 Write I/O port

0 1 1 Halt

1 0 0 Code access

1 0 1 Read memory

1 1 0 Write memory

1 1 1 Passive State

Page 14: 8086

QS1 QS0 Characteristics

0 0 No operation

0 1 First byte of opcode from queue

1 0 Empty the queue

1 1 Subsequent byte from queue

Page 15: 8086

8086 System Minimum mode

808

6 C

PU

F/CAEN1AEN2

Clockgenerator

+5V

RES

Wait-StateGenerator

CLKREADYRESET

M/IOINTA

RDWR

PCLK

MN/MX +5V

STB

OE

8282Latch

ALE

AD0-AD 15A16-A19

BHE BHE

D0 - D15

8286

DT/RDEN

T

OE

16

A0 - A19

Address Bus

ControlBus

Page 16: 8086

8284 Pin Diagram

X1

RES

1AEN

CF/8284

TANK

CSYNC

OSC

PCLK

CLK

READY

RESET

X2

EFI

RDY1

RDY2

2 AEN

1

2

3

4

5

6

7

8

9 10

11

12

13

14

15

16

17

18

GND

VCC

Page 17: 8086
Page 18: 8086

Read Cycle timing Diagram for Minimum Mode

Page 19: 8086
Page 20: 8086
Page 21: 8086
Page 22: 8086
Page 23: 8086

8086 System Maximum Mode

8086

CP

U

Clockgenerator

Wait-StateGenerator

CLK

READY

RESET

MN/MX

AD0-AD 15A16-A19 BHE

STB

OE

8282Latch

A0 - A19

Address Bus

+5V

RESS0

S1

S2

CLKS0

S1

S2

DATA

8286Transceiver

T

OE

ALE

Gnd

DEN

DT/R

MRDC

MWTC

IORC

IOW C

AIOW C

AMWC

INTA

8288

Bus

Con

trol

ler

Page 24: 8086
Page 25: 8086
Page 26: 8086
Page 27: 8086